alibaba / SmartEngine

SmartEngine is a lightweight business orchestration engine.
Apache License 2.0
760 stars 216 forks source link

2.1.5版本并发网关上下文传递失败 #38

Closed wenjiongyang closed 3 years ago

wenjiongyang commented 3 years ago

通过设置添加ExecutorService的方式使用并行网关时,PersisterSession在主线程与线程池之间传递时偶发传递失败,出现NPE; com.alibaba.smart.framework.engine.persister.custom.CustomExecutionInstanceStorage#findActiveExecution ProcessInstance processInstance = PersisterSession.currentSession().getProcessInstance(processInstanceId); 其中PersisterSession.currentSession()返回null 导致NPE; 经检查发现PersisterSession.sessionThreadLocal 用的是InheritableThreadLocal, 在使用线程池时这个类是会出问题的, 建议改成transmittable-thread-local试一下;

wenjiongyang commented 3 years ago

发现在新版本2.5.2.alpha0里使用了GatewaySticker 已经对这个问题修复;

vavi commented 3 years ago

嗯,这个问题已进修复了。