Fix reference count issue

This commit is contained in:
Andrii Shvaika 2021-08-05 15:10:04 +03:00
parent afdcc6ed3f
commit 9d651a7252

View File

@ -237,6 +237,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
} }
deviceSessionCtx.getMsgQueue().add(msg); deviceSessionCtx.getMsgQueue().add(msg);
ReferenceCountUtil.retain(msg);
processMsgQueue(ctx); //Under the normal conditions the msg queue will contain 0 messages. Many messages will be processed on device connect event in separate thread pool processMsgQueue(ctx); //Under the normal conditions the msg queue will contain 0 messages. Many messages will be processed on device connect event in separate thread pool
} }
@ -252,6 +253,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
while ((msg = deviceSessionCtx.getMsgQueue().poll()) != null) { while ((msg = deviceSessionCtx.getMsgQueue().poll()) != null) {
deviceSessionCtx.getMsgQueueSize().decrementAndGet(); deviceSessionCtx.getMsgQueueSize().decrementAndGet();
processRegularSessionMsg(ctx, msg); processRegularSessionMsg(ctx, msg);
ReferenceCountUtil.safeRelease(msg);
} }
} finally { } finally {
deviceSessionCtx.getMsgQueueProcessorLock().unlock(); deviceSessionCtx.getMsgQueueProcessorLock().unlock();