Hi All, In APIM Websocket API implementation we noticed an intermittent NPE in org.wso2.carbon.websocket.transport.WebSocketClientHandler when the handshake happens. Handshake completes successfully and we can continue to send websocket frames without an issue after the NPE. We added some logs to find the issue. >From the logs it looks like websocket frames from the websocket server is received before the handshake is acknowledged in WebSocketClientHandler.
Is there a workaround for this? or is this a bug? Please check attached log files, with and without the issue. Thanks, Praminda -- *Praminda Jayawardana* Software Engineer WSO2 Inc.; http://wso2.com Mobile : +94 (0) 716 590918
[2016-11-18 16:20:37,777] INFO - WebSocketClientHandler ======handlePassthroughTextFrame: tenantDomain: null======= [2016-11-18 16:20:37,777] INFO - WebSocketClientHandler ======getSynapseMessageContext: this.tenantDomain: null, tenantDomain: null======= [2016-11-18 16:20:37,778] INFO - WebSocketClientHandler ======createSynapseMessageContext: tenantDomain: null======= [2016-11-18 16:20:37,778] ERROR - WebSocketClientHandler Exception occured while injecting websocket frames to the Synapse engine java.lang.NullPointerException at org.wso2.carbon.websocket.transport.WebSocketClientHandler.createSynapseMessageContext(WebSocketClientHandler.java:272) at org.wso2.carbon.websocket.transport.WebSocketClientHandler.getSynapseMessageContext(WebSocketClientHandler.java:256) at org.wso2.carbon.websocket.transport.WebSocketClientHandler.handlePassthroughTextFrame(WebSocketClientHandler.java:159) at org.wso2.carbon.websocket.transport.WebSocketClientHandler.handleWebSocketFrame(WebSocketClientHandler.java:182) at org.wso2.carbon.websocket.transport.WebSocketClientHandler.channelRead0(WebSocketClientHandler.java:241) at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:147) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:110) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745) [2016-11-18 16:20:37,780] INFO - WebSocketClientHandler ======acknowledgeHandshake: tenantDomain: carbon.super======= [2016-11-18 16:20:37,790] INFO - WebSocketClientHandler ======getSynapseMessageContext: this.tenantDomain: carbon.super, tenantDomain: carbon.super======= [2016-11-18 16:20:37,790] INFO - WebSocketClientHandler ======createSynapseMessageContext: tenantDomain: carbon.super======= [2016-11-18 16:20:37,791] INFO - LogMediator To: , MessageID: urn:uuid:120f5385-0838-4b23-87c6-3a72b11bee47, Direction: request, MESSAGE = out dispatch seq, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> [2016-11-18 16:20:37,808] INFO - WebSocketClientHandler ======handlePassthroughTextFrame: tenantDomain: carbon.super======= [2016-11-18 16:20:37,809] INFO - WebSocketClientHandler ======getSynapseMessageContext: this.tenantDomain: carbon.super, tenantDomain: carbon.super======= [2016-11-18 16:20:37,809] INFO - WebSocketClientHandler ======createSynapseMessageContext: tenantDomain: carbon.super=======
[2016-11-18 16:20:33,340] INFO - WebSocketClientHandler ======acknowledgeHandshake: tenantDomain: carbon.super======= [2016-11-18 16:20:33,341] INFO - WebSocketClientHandler ======handlePassthroughTextFrame: tenantDomain: carbon.super======= [2016-11-18 16:20:33,342] INFO - WebSocketClientHandler ======getSynapseMessageContext: this.tenantDomain: carbon.super, tenantDomain: carbon.super======= [2016-11-18 16:20:33,344] INFO - WebSocketClientHandler ======createSynapseMessageContext: tenantDomain: carbon.super======= [2016-11-18 16:20:33,344] INFO - LogMediator To: , MessageID: urn:uuid:7ad5a940-19ea-40e2-b33a-151a885120bc, Direction: request, MESSAGE = out dispatch seq, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> [2016-11-18 16:20:33,344] INFO - WebSocketClientHandler ======getSynapseMessageContext: this.tenantDomain: carbon.super, tenantDomain: carbon.super======= [2016-11-18 16:20:33,347] INFO - WebSocketClientHandler ======createSynapseMessageContext: tenantDomain: carbon.super======= [2016-11-18 16:20:33,348] INFO - LogMediator To: , MessageID: urn:uuid:477d11d1-a100-41e2-a406-882164763b54, Direction: request, MESSAGE = out dispatch seq, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> [2016-11-18 16:20:33,373] INFO - WebSocketClientHandler ======handlePassthroughTextFrame: tenantDomain: carbon.super======= [2016-11-18 16:20:33,374] INFO - WebSocketClientHandler ======getSynapseMessageContext: this.tenantDomain: carbon.super, tenantDomain: carbon.super======= [2016-11-18 16:20:33,374] INFO - WebSocketClientHandler ======createSynapseMessageContext: tenantDomain: carbon.super======= [2016-11-18 16:20:33,375] INFO - LogMediator To: , MessageID: urn:uuid:ce2d301a-4795-4cb1-9f8c-423933b58d63, Direction: request, MESSAGE = out dispatch seq, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev