1. 热修复

1.1. 功能截图

1.2. 知识点

说明在生产有些故障,经常是因为一两行代码的问题导致业务失败。这些故障又需要紧急进行处理,但是因为环境监管,重新打包、传包、上线是来不及处理的。热修复就是解决这个问题,提供对类反编译,在线修改代码、对类重新编译,对最新class类进行热发布代换的功能。并对spring bean的属性查看、设置等功能。

热修复支持资源组切换。

注意:热发布修复项默认和应用版本绑定,相同的版本在重启的时候依旧可以生效,但是在版本发生变更的时候修复项会自动失效

1.3. 功能详述

热修复功能支持在线代码修改,class文件替换,bean属性修改,做到不重启应用完成变更。并且提供了一键撤销,失败重试、历史操作回溯等功能。

1.3.1. 设置

点击右上角【设置】

在【设置】页面支持对探针进行启用、禁用;对应用进行重启操作。修改热修复探针开关状态后,应用必须重启才能生效。

是否启用:表示是否开启热修复开关

重启:表示是否对应用进行重启,点击重启可以通过查看日志来查看重启情况

1.3.2. 筛选

点击可以过滤变更、未变更应用列表,快速定位应用

1.3.3. 在线代码修改

选择要修改的应用,点击列表的操作“热修复”。当存在以下情况中的其中一种情况时,无法进行操作
①实例列表为空
②存在实例未启动
③存在实例版本号不一致
④存在实例版本号为空
⑤探针未启用,探针启用可在【设置】中进行开启

选择要修改的应用,点击”热修复”,进入选择修复项步骤

  • 已有修复项

该应用已经发布或者本次已经添加的修复项。可以对已发布的修复项进行撤销、修改,对本次新增的修复项进行删除修改等。

  • 新增修复项

展示已经加载的类,为了安全JVM类不支持修改,已经自动进行过滤。通知支持对类名、Bean ID进行模糊搜索。通过在线代码修改、class文件替换、属性修改将修复项添加到已有修复项中。

点击操作中的【在线代码修改】,修改相应的类内容,点击【编译】,只有编译成功的情况,才可以点击【确定】添加修复项。

注意:修改必须符合java语法,在弹出的类内容为反编译之后的内容,有些结构会被删除或者添加,需要手动修改(见说明,编辑时会有感叹号提示同时内部类、匿名内部类、合成方法等不支持修改)。

点击【下一步】,进入选择发布实例步骤,默认选择全部实例。

点击【发布】,进行修复。可以在操作结果中查看操作结果和执行日志,在执行失败的情况下支持【重试失败修复项】,对失败的修复项进行重新发布。

1.3.4. class文件替换

在添加修复项的时候也可以选择class文件替换,仅支持上传文件类型.class且上传的文件名需要和类名的最后一个字段相同,如下图选择相应的文件上传。class文件替换和在线代码修改都要注意不能添加删除方法等。

其他步骤痛在线修改代码一致

1.3.5. 属性修改

在新增修复项查询条件中输入bean ID进行查询,支持模糊查询

点击【属性修改】对bean属性配置进行修改(支持基本数据类型,基本数据包装类型,String类型修改)

1.3.6. 导入历史修复项

点击【导入历史修复项】

会自动过滤撤销类,或者重复类的修复项

对历史修复项进行一键导入,支持全部导入和单项导入。

1.3.7. 撤销

已经发布的修复项的操作列会出现“撤销”按钮,点击【撤销】,页面提示:您确定要进行撤销操作吗? 撤销之后所有修复将被还原。当您点击【确定】之后,所有实例可以恢复到应用最开始的状态。

1.3.8. 失败重试

已经发布且存在发布失败的修复项操作列会出现“失败重试”按钮,点击【失败重试】可以对失败的修复项进行重新发布。

1.3.9. 历史

点击【历史】可以查询所有历史操作。提供多种过滤方式,针对修复或失败重试的类型可以进行重新发布操作。

1.3.10. 历史-删除

选择需要删除的操作历史记录,点击【删除】,可批量删除选中的数据;也可以直接点击【全部删除】,清空操作历史记录数据。

results matching ""

    No results matching ""