zeroc-ice / ice

All-in-one solution for creating networked applications with RPC, pub/sub, server deployment, and more.
https://zeroc.com
GNU General Public License v2.0
2.03k stars 592 forks source link

ConnectionIdleException in inactivity timeout test (Java/Windows) #2533

Open bernardnormier opened 1 month ago

bernardnormier commented 1 month ago

Interesting failure in the CI of an unrelated PR: https://github.com/zeroc-ice/ice/actions/runs/9999259759/job/27639943115

- Config: ws,compress,ipv6,mx,x64
(C:\hostedtoolcache\windows\Java_Oracle_jdk\17\x64\bin\java -ea -Dtest.class=test.Ice.inactivityTimeout.Server test.TestDriver --Ice.Default.Host=::1 --Test.BasePort=14200 --Ice.Warn.Connections=1 --Ice.Default.Protocol=ws --Ice.Override.Compress=1 --Ice.IPv6=1 --Ice.PreferIPv6Address=1 --Ice.Admin.Endpoints="tcp -h \"::1\"" --Ice.Admin.InstanceName=Server --IceMX.Metrics.Debug.GroupBy=id --IceMX.Metrics.Parent.GroupBy=parent --IceMX.Metrics.All.GroupBy=none --Ice.ThreadPool.Server.Size=1 --Ice.ThreadPool.Server.SizeMax=3 --Ice.ThreadPool.Server.SizeWarn=0 --Ice.PrintAdapterReady=1 env={'CLASSPATH': 'D:\\a\\ice\\ice\\java\\lib\\test.jar'})
(C:\hostedtoolcache\windows\Java_Oracle_jdk\17\x64\bin\java -ea -Dtest.class=test.Ice.inactivityTimeout.Client test.TestDriver --Ice.Default.Host=::1 --Test.BasePort=14200 --Ice.Warn.Connections=1 --Ice.Default.Protocol=ws --Ice.Override.Compress=1 --Ice.IPv6=1 --Ice.PreferIPv6Address=1 --Ice.Admin.Endpoints="tcp -h \"::1\"" --Ice.Admin.InstanceName=Client --IceMX.Metrics.Debug.GroupBy=id --IceMX.Metrics.Parent.GroupBy=parent --IceMX.Metrics.All.GroupBy=none env={'CLASSPATH': 'D:\\a\\ice\\ice\\java\\lib\\test.jar'})
testing that the client side inactivity timeout shuts down the connection... ok
testing that the server side inactivity timeout shuts down the connection... ok
testing the inactivity timeout with an outstanding two-way request... ok
testing the inactivity timeout with an outstanding one-way request... ok
com.zeroc.Ice.ConnectionIdleException
    at com.zeroc.IceInternal.OutgoingAsync.waitForResponseOrUserEx(OutgoingAsync.java:112)
    at com.zeroc.IceInternal.OutgoingAsync.waitForResponse(OutgoingAsync.java:95)
    at test.Ice.inactivityTimeout.Test.TestIntfPrx.shutdown(TestIntfPrx.java:63)
    at test.Ice.inactivityTimeout.Test.TestIntfPrx.shutdown(TestIntfPrx.java:58)
    at test.Ice.inactivityTimeout.AllTests.allTests(AllTests.java:26)
    at test.Ice.inactivityTimeout.Client.run(Client.java:17)
    at test.TestDriver.main(TestDriver.java:14)
bernardnormier commented 1 month ago

This is one of the few tests with a low idle timeout (1 second).

The shutdown call should return quickly from the server, as it only initiates the shutdown.

If we can reproduce this bug, it would be nice to trace the protocol messages.