Infinispan 9.2.1.Final启动异常求助:PersistenceManagerImpl.start()调用失败
问题描述
使用Infinispan版本:9.2.1.Final
依赖配置:
'org.infinispan', name: 'infinispan-core', version: '9.2.1.Final'
运行环境为Java 8,无代码变更,仅在重新部署构建时随机出现如下错误:
1) Error injecting constructor, org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.persistence.manager.PersistenceManagerImpl.start() on object of type PersistenceManagerImpl at com.raster.cache.TileCacheImpl.<init>(TileCacheImpl.scala:37) at com.raster.cache.TileCacheImpl.class(TileCacheImpl.scala:35) while locating com.raster.cache.TileCacheImpl while locating com.raster.cache.TileCache Caused by: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.persistence.manager.PersistenceManagerImpl.start() on object of type PersistenceManagerImpl
排查思路与解决建议
- 检查持久化存储资源冲突:PersistenceManager启动失败多与底层存储(文件系统、数据库等)相关。随机出现的特征指向重新部署时旧进程未完全释放存储锁或连接,导致新进程无法访问。可执行:
- 部署前强制清理旧进程残留的文件锁(如Infinispan文件存储生成的
*.lock文件) - 检查数据库连接池配置,确保重新部署时连接能被正确回收,避免连接耗尽
- 部署前强制清理旧进程残留的文件锁(如Infinispan文件存储生成的
- 验证类加载器隔离问题:Java 8环境下,重新部署易出现类加载器泄漏,导致Infinispan核心类被重复加载,引发依赖注入异常。可排查:
- 应用服务器(若使用)的类加载策略,确保Infinispan核心包被统一加载,避免多类加载器实例冲突
- 用依赖分析工具(如Maven Dependency Tree)确认项目依赖,排查是否存在不同版本的Infinispan组件引入
- 调整启动时序:依赖注入时PersistenceManager的依赖项未完全初始化,随机触发失败。可优化:
- 确认TileCacheImpl初始化前,Infinispan的CacheManager已完成启动,避免在CacheManager未就绪时创建Cache实例
- 调整Bean初始化顺序,确保PersistenceManager依赖的资源(如数据源、存储目录)先于Cache实例初始化
- 升级Infinispan版本:9.2.1.Final属于旧版本,可能存在已知的随机启动稳定性bug。可查看官方Release Notes,确认后续兼容Java 8的版本(如9.4.x系列)是否修复了相关问题,尝试升级到稳定版本
- 补充日志排查:开启Infinispan的DEBUG级日志,重点追踪
PersistenceManagerImpl.start()方法的详细报错。当前错误仅抛出顶层异常,无具体原因,详细日志可定位到存储访问失败、依赖缺失等底层问题
内容的提问来源于stack exchange,提问作者Shivam Sahil
相关产品推荐
相关产品推荐

