【发布时间】:2020-02-14 03:10:55
【问题描述】:
在旧的失败后,我试图让 Lettuce 连接到新提升的主人(前奴隶)。但是所有的写入都停止了。失败的主机重新连接后继续写入,现在作为从机。并且它会继续写入新的 master(以前的 slave)。
我尝试设置定期拓扑刷新,以及所有事件的自适应刷新,但没有帮助。我必须使用其他设置吗?
这是我配置客户端的方式:
final List<RedisURI> redisURIs = buildRedisURIs(redisServerSettings.getNodes());
final RedisClusterClient client = RedisClusterClient.create(clientResources, redisURIs);
final ClusterTopologyRefreshOptions refreshOptions =
ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers()
.adaptiveRefreshTriggersTimeout(Duration.ofMinutes(2))
.refreshTriggersReconnectAttempts(2)
.enablePeriodicRefresh(Duration.ofMinutes(10))
.build();
client.setOptions(ClusterClientOptions.builder().topologyRefreshOptions(refreshOptions).build());
【问题讨论】:
-
您运行的是哪个版本的生菜?我今天早上确实发生了这种情况。 5.2.0 的 github.com/lettuce-io/lettuce-core/releases 引用了 github.com/lettuce-io/lettuce-core/issues/672,这在理论上似乎可能会有所帮助。但不知道。
-
没关系,它看起来只添加了一个新的刷新触发器——在我的例子中,整个客户端在中途被重新创建——即在 aws 事件日志之后(以及从lettuce) 声称从站已被提升 - 所以我看到 4 个主站(在 3 个分片上),旧主站有标志
flags=[MASTER, FAIL]一旦旧主站重新连接,一切正常。 -
Github bug 现在在这里->github.com/lettuce-io/lettuce-core/issues/1152