question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

DNSMonitor fails on bootstrap with custom event loop

See original GitHub issue

redisson 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:closed
  • Created 6 years ago
  • Comments:5 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
mrnikocommented, Dec 12, 2017

Fixed! Please check it too

0reactions
johnoucommented, Dec 12, 2017

change looks good to me, I will test it in a canary build this week.

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found