sofastack / sofa-ark

SOFAArk is a light-weight,java based classloader isolation framework.
https://www.sofastack.tech/projects/sofa-boot/sofa-ark-readme/
Apache License 2.0
1.57k stars 500 forks source link

biz 卸载失败,ark-biz.jar内的lib目录依赖jar删除失败 #929

Closed Zwenzo closed 4 months ago

Zwenzo commented 5 months ago

环境: sofa-ark版本:2.2.1 jdk版本:8

执行步骤: 1.调用卸载方法ArkClient.unInstallBiz 2.监听AfterBizStopEvent事件,删除子容器(ApplicationContext)所有的对象,以及父容器中所有与子容器关联的对象

上述步骤问题:调用卸载方法时,BizModel中的stop方法删除lib目录下的所有jar包失败,提示原因:被主服务占/引用

因为biz模块无法瘦身(即无法将依赖全部设置为provide模式),所以lib目录不可避免的,所以有什么办法删除呢?并且,我参考sofa ark2.2.10版本的stop方法中对unpack文件进行迁移再删除的方法recycleBizTempWorkDir,我本地试过也是无法实现的,因为被另外的程序锁定/引用。。

困扰一天的问题

CodeNoobKing commented 5 months ago

本地无法复现,怀疑是程序代码内对目标 jar 进行了 open 操作并且没有 close,是否可以再检查一下代码?或者提供一个最小复现工程。

lvjing2 commented 4 months ago

fixed by https://github.com/sofastack/sofa-ark/pull/943