esa / mo-services-java

ESA's Java implementation of the CCSDS MO services
Other
11 stars 4 forks source link

[Transport] Shutdown of the TCPIP stack can throw ConcurrentModificationException #3

Closed CesarCoelho closed 1 year ago

CesarCoelho commented 3 years ago

Originally written by @dmarszk

When trying to shutdown the application, a ConcurrentModificationException was thrown and the application did not exit (see log below)

kwi 15, 2019 12:40:18 AM esa.mo.mal.transport.tcpip.TCPIPTransport close INFO: Closing TCPIPTransport... kwi 15, 2019 12:40:18 AM esa.mo.mal.transport.tcpip.TCPIPConnectionPoolManager close INFO: Closing client sockets... kwi 15, 2019 12:40:18 AM esa.mo.mal.transport.gen.GENTransport processIncomingMessage WARNING: GEN Error occurred when receiving data : {0} java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) at java.util.HashMap$KeyIterator.next(HashMap.java:1469) at esa.mo.mal.transport.tcpip.TCPIPConnectionPoolManager.close(TCPIPConnectionPoolManager.java:149) at esa.mo.mal.transport.tcpip.TCPIPTransport.close(TCPIPTransport.java:360) at esa.mo.mal.impl.transport.TransportSingleton.close(TransportSingleton.java:243) at esa.mo.mal.impl.MALContextImpl.close(MALContextImpl.java:122) at esa.mo.helpertools.connections.ConnectionProvider.closeAll(ConnectionProvider.java:277) at esa.mo.com.impl.provider.ArchiveProviderServiceImpl.close(ArchiveProviderServiceImpl.java:117) at esa.mo.com.impl.util.COMServicesProvider.closeAll(COMServicesProvider.java:113) at esa.mo.nmf.nanosatmoconnector.NanoSatMOConnectorImpl.closeGracefully(NanoSatMOConnectorImpl.java:442) at esa.mo.nmf.nanosatmoconnector.CloseAppEventListener.onDataReceived(CloseAppEventListener.java:75) at esa.mo.com.impl.consumer.EventConsumerServiceImpl$1EventReceivedAdapter.monitorEventNotifyReceived(EventConsumerServiceImpl.java:171) at org.ccsds.moims.mo.com.event.consumer.EventAdapter.notifyReceived(EventAdapter.java:110) at esa.mo.mal.impl.MessageReceive.internalHandleNotify(MessageReceive.java:626) at esa.mo.mal.impl.MessageReceive.onMessage(MessageReceive.java:205) at esa.mo.mal.transport.gen.GENEndpoint.receiveMessage(GENEndpoint.java:365) at esa.mo.mal.transport.gen.GENTransport.processIncomingMessage(GENTransport.java:722) at esa.mo.mal.transport.gen.GENTransport$GENIncomingMessageProcessor.run(GENTransport.java:1290) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

CesarCoelho commented 2 years ago

@dmarszk Do you know if this has been fixed?

CesarCoelho commented 1 year ago

Should be fixed with: https://github.com/esa/mo-services-java/commit/0b0ee2a6252b492749ea61c1c6d9a4a3426bdbb8

dmarszk commented 1 year ago

Thanks. Will pull into v-8 and test it soon as we observe it in LWMCS as well.