qiujiayu / AutoLoadCache

AutoLoadCache 是基于AOP+Annotation等技术实现的高效的缓存管理解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。
Apache License 2.0
2.09k stars 698 forks source link

MagicHandler.magic的一个NPE #87

Closed hubeicaolei closed 3 years ago

hubeicaolei commented 4 years ago

image 这里如果报redis连接异常,会导致返回一个null,在168行报NullPointerException

hubeicaolei commented 4 years ago

issue版本是7.0.8

qiujiayu commented 4 years ago

有详细的错误信息吗?

qiujiayu commented 4 years ago

CacheHandler 构造方法中增加null检查了。

https://github.com/qiujiayu/AutoLoadCache/commit/53be904059ec7bf7d7d7b68c98cb5aa0302f2d49

hubeicaolei commented 4 years ago

我的意思是如果在运行过程,redis挂了或者网络断了或者连接超时等等,在SpringRedisCacheManager的155行,return cacheManager.deserialize(keys, redisConnection.closePipeline(), returnType); 就会返回一个null,导致MagicHandler 166行的mget也会返回一个null,导致在168行报npe,导致magic后续的操作全部中断

qiujiayu commented 4 years ago

https://github.com/qiujiayu/AutoLoadCache/commit/6facc33327160d5b003bd21a06532de040fcdcc6

已经把 return null 改成 return Collections.emptyMap()