Skip to content

Additional scenarios in connection pool cleanup can trigger exception #475

@akrambek

Description

@akrambek

Describe the bug
Removing streams not related to the connection for additional scenarios

To Reproduce

org.agrona.concurrent.AgentTerminationException: java.lang.NullPointerException: Cannot invoke "io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaClientConnectionPool$KafkaClientStream.doStreamSignalNow(int)" because "stream" is null
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.doWork(DispatchAgent.java:681)
        at org.agrona.core/org.agrona.concurrent.AgentRunner.doDutyCycle(AgentRunner.java:291)
        at org.agrona.core/org.agrona.concurrent.AgentRunner.run(AgentRunner.java:164)
        at java.base/java.lang.Thread.run(Thread.java:1623)
Caused by: java.lang.NullPointerException: Cannot invoke "io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaClientConnectionPool$KafkaClientStream.doStreamSignalNow(int)" because "stream" is null
        at io.aklivity.zilla.runtime.binding.kafka@0.9.53/io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaClientConnectionPool$KafkaClientSignaler.signalNow(KafkaClientConnectionPool.java:477)
        at io.aklivity.zilla.runtime.binding.kafka@0.9.53/io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaClientGroupFactory$CoordinatorClient.doJoinGroupRequest(KafkaClientGroupFactory.java:3927)
        at io.aklivity.zilla.runtime.binding.kafka@0.9.53/io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaClientGroupFactory$KafkaGroupStream.onApplicationMigrate(KafkaClientGroupFactory.java:1682)
        at io.aklivity.zilla.runtime.binding.kafka@0.9.53/io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaClientGroupFactory.newStream(KafkaClientGroupFactory.java:368)
        at io.aklivity.zilla.runtime.binding.kafka@0.9.53/io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaClientFactory.newStream(KafkaClientFactory.java:141)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.handleBeginInitial(DispatchAgent.java:1350)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.handleDefaultReadInitial(DispatchAgent.java:1118)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.handleReadInitial(DispatchAgent.java:1058)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.handleRead(DispatchAgent.java:1005)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.concurent.ManyToOneRingBuffer.read(ManyToOneRingBuffer.java:181)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.doWork(DispatchAgent.java:675)
        ... 3 more
        Suppressed: java.lang.Exception: [engine/data#7]        [0x07070000000003ad] streams=[consumeAt=0x000926c0 (0x00000000000926c0), produceAt=0x000927a0 (0x00000000000927a0)]
                at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.doWork(DispatchAgent.java:679)
                ... 3 more
java.lang.NullPointerException: Cannot invoke "io.aklivity.zilla.runtime.engine.poller.PollerKey.clear(int)" because "this.networkKey" is null
        at io.aklivity.zilla.runtime.binding.tcp@0.9.53/io.aklivity.zilla.runtime.binding.tcp.internal.stream.TcpClientFactory$TcpClient.doNetShutdownOutput(TcpClientFactory.java:469)
        at io.aklivity.zilla.runtime.binding.tcp@0.9.53/io.aklivity.zilla.runtime.binding.tcp.internal.stream.TcpClientFactory$TcpClient.onAppAbort(TcpClientFactory.java:642)
        at io.aklivity.zilla.runtime.binding.tcp@0.9.53/io.aklivity.zilla.runtime.binding.tcp.internal.stream.TcpClientFactory$TcpClient.onAppMessage(TcpClientFactory.java:516)
        at io.aklivity.zilla.runtime.binding.tcp@0.9.53/io.aklivity.zilla.runtime.binding.tcp.internal.stream.TcpClientFactory.lambda$newStream$0(TcpClientFactory.java:166)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.doSyntheticAbort(DispatchAgent.java:1457)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.lambda$detachStreams$0(DispatchAgent.java:499)
        at java.base/java.lang.Iterable.forEach(Iterable.java:75)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.detachStreams(DispatchAgent.java:494)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.NamespaceRegistry.detachBinding(NamespaceRegistry.java:240)
        at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4204)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.NamespaceRegistry.detach(NamespaceRegistry.java:127)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.ConfigurationRegistry.lambda$detachAll$0(ConfigurationRegistry.java:141)
stopped
        at org.agrona.core/org.agrona.collections.Int2ObjectHashMap$ValueCollection.forEach(Int2ObjectHashMap.java:747)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.ConfigurationRegistry.detachAll(ConfigurationRegistry.java:141)
        at io.aklivity.zilla.runtime.engine@0.9.53/io.aklivity.zilla.runtime.engine.internal.registry.DispatchAgent.onClose(DispatchAgent.java:701)
        at org.agrona.core/org.agrona.concurrent.AgentRunner.run(AgentRunner.java:169)
        at java.base/java.lang.Thread.run(Thread.java:1623)

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions