MangoAutomation / ma-core-public

Mango Automation Core public code
Other
78 stars 50 forks source link

WebSocket NPE After Startup #1370

Open terrypacker opened 5 years ago

terrypacker commented 5 years ago

I have seen Mango end up with an extra web socket session that is in the MultiSessionWebSocketHnadler.session list. To reproduce login to Mango, terminate it externally then rebuild/deploy the api module and start Mango. Let the page redirect you to the login page and then upon login you will see the following, resulting in a session being left in the list but closed.

WARN  2018-12-17T13:07:24,375 (org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.failed:418) -  
org.eclipse.jetty.io.EofException: null
    at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:286) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:393) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:277) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:380) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.io.FrameFlusher.flush(FrameFlusher.java:218) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.io.FrameFlusher.process(FrameFlusher.java:157) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.io.FrameFlusher.enqueue(FrameFlusher.java:90) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.outgoingFrame(AbstractWebSocketConnection.java:495) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextOutgoingFrame(AbstractExtension.java:191) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextOutgoingFrame(PerMessageDeflateExtension.java:116) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.access$600(CompressExtension.java:42) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.deflate(CompressExtension.java:447) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.process(CompressExtension.java:431) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.outgoingFrame(CompressExtension.java:218) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.ExtensionStack$Flusher.process(ExtensionStack.java:419) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.outgoingFrame(ExtensionStack.java:296) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.uncheckedSendFrame(WebSocketRemoteEndpoint.java:311) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendAsyncFrame(WebSocketRemoteEndpoint.java:241) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendPing(WebSocketRemoteEndpoint.java:370) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.springframework.web.socket.adapter.jetty.JettyWebSocketSession.sendPingMessage(JettyWebSocketSession.java:216) ~[spring-websocket-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.web.socket.adapter.AbstractWebSocketSession.sendMessage(AbstractWebSocketSession.java:111) ~[spring-websocket-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.MangoPingPongTracker.sendPing(MangoPingPongTracker.java:50) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.MangoPingPongTracker.<init>(MangoPingPongTracker.java:43) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.MangoWebSocketHandler.startPingPong(MangoWebSocketHandler.java:195) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.MangoWebSocketHandler.afterConnectionEstablished(MangoWebSocketHandler.java:169) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.MultiSessionWebSocketHandler.afterConnectionEstablished(MultiSessionWebSocketHandler.java:29) ~[?:?]
    at org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionEstablished(WebSocketHandlerDecorator.java:70) ~[spring-websocket-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionEstablished(LoggingWebSocketHandlerDecorator.java:48) ~[spring-websocket-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.afterConnectionEstablished(ExceptionWebSocketHandlerDecorator.java:48) ~[spring-websocket-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter.onWebSocketConnect(JettyWebSocketHandlerAdapter.java:72) ~[spring-websocket-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_162]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_162]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_162]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_162]
    at org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(CallableMethod.java:71) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onConnect(JettyAnnotatedEventDriver.java:148) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.openSession(AbstractEventDriver.java:233) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.WebSocketSession.open(WebSocketSession.java:616) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.WebSocketSession.onOpened(WebSocketSession.java:544) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.AbstractConnection.onOpened(AbstractConnection.java:209) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.AbstractConnection.onOpen(AbstractConnection.java:202) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onOpen(AbstractWebSocketConnection.java:446) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.AbstractEndPoint.upgrade(AbstractEndPoint.java:440) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.server.HttpConnection.onCompleted(HttpConnection.java:385) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.server.HttpChannel.onCompleted(HttpChannel.java:743) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:510) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]
Caused by: java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:1.8.0_162]
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[?:1.8.0_162]
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[?:1.8.0_162]
    at sun.nio.ch.IOUtil.write(IOUtil.java:51) ~[?:1.8.0_162]
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[?:1.8.0_162]
    at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:264) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
    ... 62 more
INFO  2018-12-17T13:07:40,535 (com.serotonin.log.LogStopWatch.logInfo:67) - time[9 ms] message[Streamable Query: SELECT w.id,w.xid,w.userId,w.name,w.readPermission,w.editPermission,w.type,w.data,u.username FROM watchLists  AS w  JOIN  users u  ON w.userId = u.id ORDER BY  w.name  ASC  
Args: []]  
INFO  2018-12-17T13:07:40,536 (com.serotonin.log.LogStopWatch.logInfo:67) - time[0 ms] message[Count: SELECT COUNT(DISTINCT w.id) FROM watchLists  AS w   
Args: []]  
DEBUG 2018-12-17T13:07:41,464 (org.jooq.tools.JooqLogger.debug:261) - Executing query          : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = cast(? as int) 
DEBUG 2018-12-17T13:07:41,465 (org.jooq.tools.JooqLogger.debug:261) - -> with bind values      : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = 97 
DEBUG 2018-12-17T13:07:41,480 (org.jooq.tools.JooqLogger.debug:261) - Query executed           : Total: 42.632ms 
DEBUG 2018-12-17T13:07:41,540 (org.jooq.tools.JooqLogger.debug:261) - Finishing                : Total: 102.548ms, +59.915ms 
DEBUG 2018-12-17T13:07:41,564 (org.jooq.tools.JooqLogger.debug:261) - Executing query          : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = cast(? as int) 
DEBUG 2018-12-17T13:07:41,565 (org.jooq.tools.JooqLogger.debug:261) - -> with bind values      : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = 98 
DEBUG 2018-12-17T13:07:41,565 (org.jooq.tools.JooqLogger.debug:261) - Query executed           : Total: 1.418ms 
DEBUG 2018-12-17T13:07:41,566 (org.jooq.tools.JooqLogger.debug:261) - Finishing                : Total: 2.122ms, +0.703ms 
DEBUG 2018-12-17T13:07:41,568 (org.jooq.tools.JooqLogger.debug:261) - Executing query          : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = cast(? as int) 
DEBUG 2018-12-17T13:07:41,569 (org.jooq.tools.JooqLogger.debug:261) - -> with bind values      : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = 138 
DEBUG 2018-12-17T13:07:41,570 (org.jooq.tools.JooqLogger.debug:261) - Query executed           : Total: 2.438ms 
DEBUG 2018-12-17T13:07:41,571 (org.jooq.tools.JooqLogger.debug:261) - Finishing                : Total: 3.528ms, +1.089ms 
DEBUG 2018-12-17T13:07:41,575 (org.jooq.tools.JooqLogger.debug:261) - Executing query          : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = cast(? as int) 
DEBUG 2018-12-17T13:07:41,576 (org.jooq.tools.JooqLogger.debug:261) - -> with bind values      : select TAGS.TAGKEY, TAGS.TAGVALUE from DATAPOINTTAGS TAGS where TAGS.DATAPOINTID = 139 
DEBUG 2018-12-17T13:07:41,576 (org.jooq.tools.JooqLogger.debug:261) - Query executed           : Total: 1.41ms 
DEBUG 2018-12-17T13:07:41,578 (org.jooq.tools.JooqLogger.debug:261) - Finishing                : Total: 2.84ms, +1.429ms 
DEBUG 2018-12-17T13:07:41,782 (com.serotonin.m2m2.web.mvc.rest.v1.websockets.pointValue.PointValueWebSocketHandler.handleTextMessage:138) - {"xid":"voltage","eventTypes":["ATTRIBUTE_CHANGE","INITIALIZE","REGISTERED","TERMINATE","UPDATE"]} 
WARN  2018-12-17T13:07:45,349 (com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify:136) - Error notifying websocket 
com.serotonin.m2m2.web.mvc.rest.v1.websockets.WebSocketClosedException: null
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.MangoWebSocketHandler.sendStringMessageAsync(MangoWebSocketHandler.java:133) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify(DaoNotificationWebSocketHandler.java:134) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify(DaoNotificationWebSocketHandler.java:83) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify(DaoNotificationWebSocketHandler.java:129) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.JsonDataWebSocketHandler.handleDaoEvent(JsonDataWebSocketHandler.java:38) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_162]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_162]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_162]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_162]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:261) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:180) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:142) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at com.infiniteautomation.mango.spring.eventMulticaster.PropagatingEventMulticaster.lambda$doMulticastEventWithExecutor$0(PropagatingEventMulticaster.java:77) ~[classes/:?]
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_162]
WARN  2018-12-17T13:07:45,419 (com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify:136) - Error notifying websocket 
com.serotonin.m2m2.web.mvc.rest.v1.websockets.WebSocketClosedException: null
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.MangoWebSocketHandler.sendStringMessageAsync(MangoWebSocketHandler.java:133) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify(DaoNotificationWebSocketHandler.java:134) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify(DaoNotificationWebSocketHandler.java:83) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.DaoNotificationWebSocketHandler.notify(DaoNotificationWebSocketHandler.java:129) ~[?:?]
    at com.serotonin.m2m2.web.mvc.rest.v1.websockets.JsonDataWebSocketHandler.handleDaoEvent(JsonDataWebSocketHandler.java:38) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_162]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_162]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_162]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_162]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:261) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:180) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:142) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    at com.infiniteautomation.mango.spring.eventMulticaster.PropagatingEventMulticaster.lambda$doMulticastEventWithExecutor$0(PropagatingEventMulticaster.java:77) ~[classes/:?]
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[?:1.8.0_162]
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_162]
terrypacker commented 5 years ago

From what I could gather in testing this the PingPong tracker was failing to send the message and closing the connection but the session was not yet in the Set. I've changed the order so that the session is in the Set prior to calling super.afterConnectionEstablished().

terrypacker commented 5 years ago

This is the commit for the changes:

https://github.com/infiniteautomation/ma-modules-public/commit/fa4512db004e81868baf81a60dc23032557480d9