Apache Ignite出现Cache ID冲突导致缓存启动请求被忽略问题咨询
[19:55:26,107][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D12201, conflictingCacheName=IRE9P1D0Q201]
[19:55:26,170][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D11301, conflictingCacheName=IRE9P1D0P301]
[19:55:26,203][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D12101, conflictingCacheName=IRE9P1D0Q101]
[19:55:26,227][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D12301, conflictingCacheName=IRE9P1D0Q301]
[19:55:26,249][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D13001, conflictingCacheName=IRE9P1D0R001]
[19:55:26,272][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D13201, conflictingCacheName=IRE9P1D0R201]
[19:55:26,295][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D15101, conflictingCacheName=IRE9P1D0T101]
[19:55:26,352][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D14001, conflictingCacheName=IRE9P1D0S001]
[19:55:26,382][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D13101, conflictingCacheName=IRE9P1D0R101]
[19:55:26,408][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D16001, conflictingCacheName=IRE9P1D0U001]
[19:55:26,432][WARNING][disco-notifier-worker-#76][ClusterCachesInfo] Ignore cache start request. Cache ID conflict (change cache name) [cacheName=IRE9P1D14101, conflictingCacheName=IRE9P1D0S101]
Apache Ignite内部会对缓存名称执行32位哈希运算生成唯一缓存ID,作为集群内缓存的身份标识。当两个不同名称的缓存哈希计算结果完全一致时,就会触发ID冲突,系统会直接拒绝后提交的缓存启动请求,避免不同缓存数据混淆。
具体触发场景
- 相似命名哈希碰撞:本次告警涉及的缓存名称都是结构高度一致的定长字符串,这类命名的哈希碰撞概率远高于随机命名,本次告警就是多个相似名称的缓存哈希值重复导致。
- 旧缓存元数据残留:如果集群此前已经创建过冲突名称对应的缓存,即使删除了缓存数据,元数据未完全清理的情况下,新提交的同ID缓存也会被判定为冲突。
- 并发创建缓存冲突:多节点同时提交不同名称但哈希冲突的缓存创建请求时,先注册成功的缓存会占用对应ID,后提交的请求会被直接忽略。
- 调整缓存命名规则:给冲突的缓存名称增加业务标识、环境标识类的固定前缀/后缀,破坏相似字符串结构,大幅降低哈希碰撞概率。
- 手动指定缓存ID:如果不希望修改原有缓存名称,可以在缓存配置中调用
setCacheId()方法显式指定全局唯一的缓存ID,绕过自动哈希计算逻辑。 - 清理残留元数据:如果是旧缓存残留导致的冲突,先调用
ignite.destroyCache(冲突缓存名称)清理已有缓存及元数据,重启集群元数据服务后再重新创建目标缓存。
内容的提问来源于stack exchange,提问作者MasiumDev

