alibaba/Sentinel

Reactor项目中使用Sentinel偶尔会出现Context0#put空指针异常

Open

#1907 opened on Dec 17, 2020

View on GitHub
 (4 comments) (0 reactions) (0 assignees)Java (23,109 stars) (8,150 forks)batch import
area/integrationshelp wanted

Description

WebFlux项目中导入sentinel-spring-webflux-adapter:1.8.0适配模块,项目每天都有好几个NPE,报错内容如下:

Caused by: java.lang.NullPointerException: value
	at java.util.Objects.requireNonNull(Objects.java:228)
	at reactor.util.context.Context0.put(Context0.java:30)
	at com.alibaba.csp.sentinel.adapter.reactor.SentinelReactorSubscriber.currentContext(SentinelReactorSubscriber.java:70)

对应的源码应该是这一行

return actual.currentContext()
            .put(SentinelReactorConstants.SENTINEL_CONTEXT_KEY, currentEntry.getAsyncContext());

从异常栈信息看,应该是currentEntry.getAsyncContext()这句返回了null,但不知为何会出现null

Contributor guide