moquette-io / moquette

Java MQTT lightweight broker
http://moquette-io.github.io/moquette/
Apache License 2.0
2.3k stars 818 forks source link

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

Open begone1992 opened 2 years ago

begone1992 commented 2 years ago

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()

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

hylkevds commented 2 years ago

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