moquette icon indicating copy to clipboard operation
moquette copied to clipboard

Throw Exception io.netty.util.IllegalReferenceCountException: refCnt: 0

Open begone1992 opened this issue 2 years ago • 1 comments

Expected behavior

I am trying to create mqtt message from code and then publish it.

Actual behavior

But in PublishListener event when I am trying get payload this exception io.netty.util.IllegalReferenceCountException: refCnt: 0 throws every time.

Steps to reproduce

Here is my code: _mqttBroker = new Server(); final List<? extends InterceptHandler> userHandlers = Arrays.asList(new PublisherListener()); _mqttBroker.startServer(server_config, userHandlers); String clientID = "a2bae31a-6c4f-4076-ae66-5aadf3668b0a"; MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE, false, 0); MqttPublishVariableHeader headerTopic = new MqttPublishVariableHeader(topic, 0); ByteBuf anypayload = Unpooled.wrappedBuffer(data.getBytes()); MqttPublishMessage msg = new MqttPublishMessage(mqttFixedHeader, headerTopic, anypayload); _mqttBroker.internalPublish(msg, clientID); InterceptPublishMessage message = new InterceptPublishMessage(msg, clientID, clientID); new PublisherListener().onPublish(message);

public void onPublish(InterceptPublishMessage message) { System.out.println("moquette mqtt broker message intercepted, topic: " + message.getTopicName() + ", content: "); System.out.println(message.getPayload()); byte[] bytes = new byte[message.getPayload().readableBytes()]; message.getPayload().duplicate().readBytes(bytes); System.out.println(new String(bytes)); SensorContext.MessageRecieved(message); }

Moquette MQTT version

moquette-broker-0.15

JVM version (e.g. java -version)

1.8.0_312

OS version (e.g. uname -a)

Ubuntu 20

begone1992 avatar May 10 '22 05:05 begone1992

The code you posted is very incomplete. Can you make a self-contained test that shows the issue?

hylkevds avatar May 26 '22 08:05 hylkevds