[ https://issues.apache.org/jira/browse/OPENMEETINGS-2355?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maxim Solodovnik resolved OPENMEETINGS-2355. -------------------------------------------- Fix Version/s: 5.0.0-M5 Resolution: Fixed Should be fixed, please reopen with additional steps if still an issue > Growing list of stream connection in admin->connections > ------------------------------------------------------- > > Key: OPENMEETINGS-2355 > URL: https://issues.apache.org/jira/browse/OPENMEETINGS-2355 > Project: Openmeetings > Issue Type: Bug > Components: Room > Affects Versions: 5.0.0-M5 > Reporter: Konstantin Kuzov > Assignee: Maxim Solodovnik > Priority: Major > Fix For: 5.0.0-M5 > > Attachments: stale-processors.png > > > After OPENMEETINGS-2315 and OPENMEETINGS-2316 some stream connections states > not terminating fully and there are growing list of stale streams in > admin->connections (look at stale-processors.png). > It happens randomly, most likely due to unreliable network, slow devices or > browser quirks. > I found the only one reliable way to reproduce this (for me working 100% of > the time) using android's chrome which also unearth reconnection problem: > - enter the room with one another participant > - not closing tab with om, just switch to another tab with random page. > Another participant will see frozen image. > - wait around 10 seconds and switch back, on your end you will see fully > working webcam, but on participant's end the image will still be frozen. > - after another 5 seconds there will be a message on both ends about trying > to reconnect which will result in fast refresh of already seamingly working > camera on android chrome, but on another participant there will be only empty > window with avatar. And it will stay that way forever. At that point android > user can exit the room and his stream will stuck. > During reconnect attempt there are this error: > {noformat} > ERROR 05-14 16:42:46.464 o.a.o.w.c.OmWebSocketPanel:144 [-nio-443-exec-7] - > Error while processing incoming message > java.lang.NullPointerException: null > at > org.apache.openmeetings.core.remote.KStream.startBroadcast(KStream.java:88) > at > org.apache.openmeetings.core.remote.StreamProcessor.startBroadcast(StreamProcessor.java:212) > at > org.apache.openmeetings.core.remote.StreamProcessor.handleBroadcastStarted(StreamProcessor.java:187) > at > org.apache.openmeetings.core.remote.StreamProcessor.onMessage(StreamProcessor.java:110) > at > org.apache.openmeetings.core.remote.KurentoHandler.onMessage(KurentoHandler.java:233) > at > org.apache.openmeetings.core.remote.Wicket_Proxy_KurentoHandler$$FastClassByCGLIB$$756e116d.invoke(<generated>) > at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) > at > org.apache.wicket.proxy.LazyInitProxyFactory$AbstractCGLibInterceptor.intercept(LazyInitProxyFactory.java:364) > at > org.apache.openmeetings.core.remote.Wicket_Proxy_KurentoHandler$$EnhancerByCGLIB$$e2e8f0f.onMessage(<generated>) > at > org.apache.openmeetings.web.common.OmWebSocketPanel$2.onMessage(OmWebSocketPanel.java:125) > at > org.apache.wicket.protocol.ws.api.WebSocketBehavior.onEvent(WebSocketBehavior.java:64) > at > org.apache.wicket.settings.FrameworkSettings.dispatchEvent(FrameworkSettings.java:147) > at > org.apache.wicket.ComponentEventSender.dispatchToComponent(ComponentEventSender.java:292) > at > org.apache.wicket.ComponentEventSender$ComponentEventVisitor.component(ComponentEventSender.java:329) > at > org.apache.wicket.ComponentEventSender$ComponentEventVisitor.component(ComponentEventSender.java:306) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:144) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:123) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:192) > at > org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java:988) > at > org.apache.wicket.ComponentEventSender.breadth(ComponentEventSender.java:160) > at > org.apache.wicket.ComponentEventSender.send(ComponentEventSender.java:68) > at org.apache.wicket.Component.send(Component.java:4418) > at > org.apache.wicket.protocol.ws.api.WebSocketMessageBroadcastHandler$1.run(WebSocketMessageBroadcastHandler.java:74) > at > org.apache.wicket.protocol.ws.WebSocketSettings$SameThreadExecutor.run(WebSocketSettings.java:393) > at > org.apache.wicket.protocol.ws.api.WebSocketMessageBroadcastHandler.respond(WebSocketMessageBroadcastHandler.java:97) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:917) > at > org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:63) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:254) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:222) > at > org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessage(AbstractWebSocketProcessor.java:272) > at > org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.onMessage(AbstractWebSocketProcessor.java:151) > at > org.apache.wicket.protocol.ws.javax.JavaxWebSocketProcessor$StringMessageHandler.onMessage(JavaxWebSocketProcessor.java:65) > at > org.apache.wicket.protocol.ws.javax.JavaxWebSocketProcessor$StringMessageHandler.onMessage(JavaxWebSocketProcessor.java:60) > at > org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:395) > at > org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:119) > at > org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:495) > at > org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:294) > at > org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:133) > at > org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:82) > at > org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) > at > org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) > at > org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) > at > org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) > at > org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59) > at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) > at > org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.base/java.lang.Thread.run(Thread.java:834) > {noformat} > And right after one above multiple ones like this: > {noformat} > DEBUG 05-14 16:42:46.471 o.a.o.c.r.StreamProcessor:91 [-nio-443-exec-7] - > Incoming message from user with ID '5': > {"type":"kurento","id":"onIceCandidate","candidate":{"candidate":"candidate:505713252 > 1 udp 2122260223 10.1.1.67 43537 typ host generation 0 ufrag JMPb network-id > 2 network-cost > 10","sdpMid":"0","sdpMLineIndex":0},"uid":"eec0c0ef-10fe-4070-b40d-95bcec65a09a","luid":"eec0c0ef-10fe-4070-b40d-95bcec65a09a"} > ERROR 05-14 16:42:46.471 o.a.o.w.c.OmWebSocketPanel:144 [-nio-443-exec-7] - > Error while processing incoming message > java.lang.NullPointerException: null > at > org.apache.openmeetings.core.remote.KStream.addCandidate(KStream.java:393) > at > org.apache.openmeetings.core.remote.StreamProcessor.onMessage(StreamProcessor.java:122) > at > org.apache.openmeetings.core.remote.KurentoHandler.onMessage(KurentoHandler.java:233) > at > org.apache.openmeetings.core.remote.Wicket_Proxy_KurentoHandler$$FastClassByCGLIB$$756e116d.invoke(<generated>) > at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) > at > org.apache.wicket.proxy.LazyInitProxyFactory$AbstractCGLibInterceptor.intercept(LazyInitProxyFactory.java:364) > at > org.apache.openmeetings.core.remote.Wicket_Proxy_KurentoHandler$$EnhancerByCGLIB$$e2e8f0f.onMessage(<generated>) > at > org.apache.openmeetings.web.common.OmWebSocketPanel$2.onMessage(OmWebSocketPanel.java:125) > at > org.apache.wicket.protocol.ws.api.WebSocketBehavior.onEvent(WebSocketBehavior.java:64) > at > org.apache.wicket.settings.FrameworkSettings.dispatchEvent(FrameworkSettings.java:147) > at > org.apache.wicket.ComponentEventSender.dispatchToComponent(ComponentEventSender.java:292) > at > org.apache.wicket.ComponentEventSender$ComponentEventVisitor.component(ComponentEventSender.java:329) > at > org.apache.wicket.ComponentEventSender$ComponentEventVisitor.component(ComponentEventSender.java:306) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:144) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:123) > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:192) > at > org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java:988) > at > org.apache.wicket.ComponentEventSender.breadth(ComponentEventSender.java:160) > at > org.apache.wicket.ComponentEventSender.send(ComponentEventSender.java:68) > at org.apache.wicket.Component.send(Component.java:4418) > at > org.apache.wicket.protocol.ws.api.WebSocketMessageBroadcastHandler$1.run(WebSocketMessageBroadcastHandler.java:74) > at > org.apache.wicket.protocol.ws.WebSocketSettings$SameThreadExecutor.run(WebSocketSettings.java:393) > at > org.apache.wicket.protocol.ws.api.WebSocketMessageBroadcastHandler.respond(WebSocketMessageBroadcastHandler.java:97) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:917) > at > org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:63) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:254) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:222) > at > org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessage(AbstractWebSocketProcessor.java:272) > at > org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.onMessage(AbstractWebSocketProcessor.java:151) > at > org.apache.wicket.protocol.ws.javax.JavaxWebSocketProcessor$StringMessageHandler.onMessage(JavaxWebSocketProcessor.java:65) > at > org.apache.wicket.protocol.ws.javax.JavaxWebSocketProcessor$StringMessageHandler.onMessage(JavaxWebSocketProcessor.java:60) > at > org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:395) > at > org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:119) > at > org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:495) > at > org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:294) > at > org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:133) > at > org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:82) > at > org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) > at > org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) > at > org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) > at > org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) > at > org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59) > at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) > at > org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.base/java.lang.Thread.run(Thread.java:834) > {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)