DNSMonitor fails on bootstrap with custom event loop
See original GitHub issueredisson 3.5.6 fails on bootstrap when using custom event loop.
private RedissonClient createRedissonClient(int database) {
Config config = new Config();
if (redisNodes.indexOf(',') > -1) {
ReplicatedServersConfig clusterConfig = config.useReplicatedServers();
clusterConfig.setScanInterval(3000);
clusterConfig.setDatabase(database);
clusterConfig.setTcpNoDelay(true);
clusterConfig.setKeepAlive(true);
for (String addr : StringUtils.tokenizeToStringArray(redisNodes, ",", true, true)) {
clusterConfig.addNodeAddress(addSchema(addr));
}
clusterConfig.setTimeout(8000);
if (database == redisGameDatabase) {
clusterConfig.setReadMode(ReadMode.MASTER); // consistency is crucial
} else {
clusterConfig.setReadMode(ReadMode.MASTER_SLAVE); // consider setting SLAVE when we have multiple slaves
}
} else {
SingleServerConfig singleServerConfig = config.useSingleServer();
singleServerConfig.setDatabase(database);
singleServerConfig.setTimeout(8000);
singleServerConfig.setTcpNoDelay(true);
singleServerConfig.setKeepAlive(true);
singleServerConfig.setAddress(addSchema(redisNodes));
}
config.setCodec(new SnappyCodec());
config.setThreads(redisEventLoop.getThreadPoolSize());
config.setEventLoopGroup(redisEventLoop.getWorkerGroup());
config.setUseLinuxNativeEpoll(redisEventLoop.isNativeEpoll());
return Redisson.create(config);
}
Caused by: java.lang.IllegalStateException: channel not registered to an event loop
at io.netty.channel.AbstractChannel.eventLoop(AbstractChannel.java:162) ~[netty-transport-4.1.18.Final.jar:4.1.18.Final]
at io.netty.channel.nio.AbstractNioChannel.eventLoop(AbstractNioChannel.java:119) ~[netty-transport-4.1.18.Final.jar:4.1.18.Final]
at io.netty.channel.nio.AbstractNioChannel.eventLoop(AbstractNioChannel.java:49) ~[netty-transport-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolverContext.query(DnsNameResolverContext.java:316) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolverContext.query(DnsNameResolverContext.java:295) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolverContext.query(DnsNameResolverContext.java:791) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolverContext.internalResolve(DnsNameResolverContext.java:200) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolverContext.doSearchDomainQuery(DnsNameResolverContext.java:189) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolverContext.resolve(DnsNameResolverContext.java:136) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolver.doResolveUncached(DnsNameResolver.java:657) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:594) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:527) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:63) ~[netty-resolver-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:100) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:66) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:51) ~[netty-resolver-dns-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:57) ~[netty-resolver-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:32) ~[netty-resolver-4.1.18.Final.jar:4.1.18.Final]
at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:108) ~[netty-resolver-4.1.18.Final.jar:4.1.18.Final]
at org.redisson.connection.DNSMonitor.<init>(DNSMonitor.java:65) ~[redisson-3.5.6.jar:?]
at org.redisson.connection.MasterSlaveConnectionManager.initSingleEntry(MasterSlaveConnectionManager.java:288) ~[redisson-3.5.6.jar:?]
at org.redisson.connection.MasterSlaveConnectionManager.<init>(MasterSlaveConnectionManager.java:165) ~[redisson-3.5.6.jar:?]
at org.redisson.connection.SingleConnectionManager.<init>(SingleConnectionManager.java:32) ~[redisson-3.5.6.jar:?]
at org.redisson.config.ConfigSupport.createConnectionManager(ConfigSupport.java:231) ~[redisson-3.5.6.jar:?]
at org.redisson.Redisson.<init>(Redisson.java:117) ~[redisson-3.5.6.jar:?]
at org.redisson.Redisson.create(Redisson.java:156) ~[redisson-3.5.6.jar:?]
Issue Analytics
- State:
- Created 6 years ago
- Comments:5 (5 by maintainers)
Top Results From Across the Web
redisson/redisson redisson-3.5.7 on GitHub - NewReleases.io
Fixed - DNSMonitor fails on bootstrap with custom event loop. Fixed - Redis domain name IP address renew process. Check out latest releases...
Read more >How to use one single Bootstrap to connect to multiple servers ...
Alright, it's my fault, I forget to add a ChannelInitializer. Change it to code below: b.group(new NioEventLoopGroup()).handler(new ...
Read more >Event Loop — Python 3.11.1 documentation
Event loops run asynchronous tasks and callbacks, perform network IO . ... rather complex behavior (especially when custom event loop policies are in...
Read more >CHANGELOG.md · xHugh/redisson - Gitee.com
Fixed - DNSMonitor fails on bootstrap with custom event loop ... Fixed - DNS monitor caches host name binding. Fixed - ReadMode.MASTER_SLAVE should...
Read more >BIG-IP 12.1.3.1 Fixes and Known Issues - AskF5 - F5 Networks
653014-1, 2-Critical, Apply Policy failure if an custom Blocking Page is ... endless restart loop as long as DNS monitor instance is configured....
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Fixed! Please check it too
change looks good to me, I will test it in a canary build this week.