There are 9 updates, 1 comment.
 
 
XWiki Platform / cid:jira-generated-image-avatar-e3d30d73-727c-41cb-a6bf-9bfc08465ae5 XWIKI-22716 Closed

The WebSocket context assumes the handshake request and response objects can be used after the handshake is performed

 
View issue   ยท   Add comment
 

9 updates

 
cid:jira-generated-image-avatar-7418af57-47c4-4543-8bee-6a9f37ca7a5b Changes by Marius Dumitru Florea on 05/Dec/24 15:58
 
Fix Version: 17.0.0-rc-1
Fix Version: 16.10.1
Documentation in Release Notes: N/A
Documentation: N/A
Assignee: Marius Dumitru Florea
Resolution: Fixed
Tests: Unit
Labels: bugfixingday
Status: Open Closed
 
 

1 comment

 
cid:jira-generated-image-avatar-7418af57-47c4-4543-8bee-6a9f37ca7a5b Marius Dumitru Florea on 05/Dec/24 16:07
 

Example stacktrace:

2024-12-05 10:28:50,375 [qtp1157058691-141] DEBUG .x.w.i.XWikiEndpointDispatcher - WebSocket connection error. 
java.lang.NullPointerException: Cannot invoke "org.eclipse.jetty.server.Request.getSession(boolean)" because the return value of "org.eclipse.jetty.ee10.servlet.ServletApiRequest.getRequest()" is null
	at org.eclipse.jetty.ee10.servlet.ServletApiRequest.getSession(ServletApiRequest.java:519)
	at org.eclipse.jetty.ee10.websocket.jakarta.server.internal.JsrHandshakeRequest.getHttpSession(JsrHandshakeRequest.java:58)
	at org.xwiki.websocket.internal.XWikiWebSocketRequestStub.getSession(XWikiWebSocketRequestStub.java:134)
	at org.xwiki.jakartabridge.servlet.internal.JavaxToJakartaHttpServletRequest.getSession(JavaxToJakartaHttpServletRequest.java:170)
	at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:270)
	at org.xwiki.container.servlet.ServletSession.<init>(ServletSession.java:47)
	at org.xwiki.websocket.internal.DefaultWebSocketContext.initialize(DefaultWebSocketContext.java:126)
	at org.xwiki.websocket.internal.DefaultWebSocketContext.run(DefaultWebSocketContext.java:96)
	at org.xwiki.netflux.internal.EntityChannelScriptAuthorBot.lambda$onChannelMessage$1(EntityChannelScriptAuthorBot.java:89)
	at java.base/java.util.Optional.ifPresent(Optional.java:178)
	at org.xwiki.netflux.internal.EntityChannelScriptAuthorBot.onChannelMessage(EntityChannelScriptAuthorBot.java:89)
	at org.xwiki.netflux.internal.NetfluxEndpoint.lambda$sendChannelMessage$2(NetfluxEndpoint.java:380)
	at java.base/java.util.LinkedHashMap$LinkedValues.forEach(LinkedHashMap.java:647)
	at org.xwiki.netflux.internal.NetfluxEndpoint.sendChannelMessage(NetfluxEndpoint.java:380)
	at org.xwiki.netflux.internal.NetfluxEndpoint.onCommandMessage(NetfluxEndpoint.java:323)
	at org.xwiki.netflux.internal.NetfluxEndpoint.onMessage(NetfluxEndpoint.java:230)
	at org.xwiki.netflux.internal.NetfluxEndpoint.handleMessage(NetfluxEndpoint.java:140)
	at org.xwiki.netflux.internal.NetfluxEndpoint$1.onMessage(NetfluxEndpoint.java:114)
	at org.xwiki.websocket.AbstractPartialStringMessageHandler.onMessage(AbstractPartialStringMessageHandler.java:38)
	at org.xwiki.websocket.AbstractPartialMessageHandler.onMessage(AbstractPartialMessageHandler.java:48)
	at org.eclipse.jetty.websocket.core.messages.PartialStringMessageSink.accept(PartialStringMessageSink.java:58)
	at org.eclipse.jetty.ee10.websocket.jakarta.common.JakartaWebSocketFrameHandler.acceptMessage(JakartaWebSocketFrameHandler.java:589)
	at org.eclipse.jetty.ee10.websocket.jakarta.common.JakartaWebSocketFrameHandler.onText(JakartaWebSocketFrameHandler.java:639)
	at org.eclipse.jetty.ee10.websocket.jakarta.common.JakartaWebSocketFrameHandler.onContinuation(JakartaWebSocketFrameHandler.java:654)
	at org.eclipse.jetty.ee10.websocket.jakarta.common.JakartaWebSocketFrameHandler.onFrame(JakartaWebSocketFrameHandler.java:246)
	at org.eclipse.jetty.websocket.core.WebSocketCoreSession$IncomingAdaptor.lambda$onFrame$0(WebSocketCoreSession.java:647)
	at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.run(ContextHandler.java:1513)
	at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.run(ContextHandler.java:1500)
	at org.eclipse.jetty.websocket.core.server.internal.AbstractHandshaker$1.handle(AbstractHandshaker.java:179)
	at org.eclipse.jetty.websocket.core.WebSocketCoreSession$IncomingAdaptor.onFrame(WebSocketCoreSession.java:647)
	at org.eclipse.jetty.websocket.core.AbstractExtension.nextIncomingFrame(AbstractExtension.java:145)
	at org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:239)
	at org.eclipse.jetty.websocket.core.util.DemandingFlusher.emitFrame(DemandingFlusher.java:143)
	at org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingFlusher.inflate(PerMessageDeflateExtension.java:492)
	at org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingFlusher.handle(PerMessageDeflateExtension.java:417)
	at org.eclipse.jetty.websocket.core.util.DemandingFlusher.process(DemandingFlusher.java:167)
	at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:262)
	at org.eclipse.jetty.util.IteratingCallback.succeeded(IteratingCallback.java:403)
	at org.eclipse.jetty.websocket.core.util.DemandingFlusher.onFrame(DemandingFlusher.java:105)
	at org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension.onFrame(PerMessageDeflateExtension.java:96)
	at org.eclipse.jetty.websocket.core.ExtensionStack.onFrame(ExtensionStack.java:113)
	at org.eclipse.jetty.websocket.core.WebSocketCoreSession.onFrame(WebSocketCoreSession.java:463)
	at org.eclipse.jetty.websocket.core.WebSocketConnection.onFrame(WebSocketConnection.java:254)
	at org.eclipse.jetty.websocket.core.WebSocketConnection.fillAndParse(WebSocketConnection.java:447)
	at org.eclipse.jetty.websocket.core.WebSocketConnection.onFillable(WebSocketConnection.java:332)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
	at java.base/java.lang.Thread.run(Thread.java:840)