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
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev