From 9562f56a3a6ed0813c3c5c9ba30789aedbdb5b2b Mon Sep 17 00:00:00 2001 From: andrea Date: Sat, 31 Jan 2015 12:19:50 +0100 Subject: [PATCH] Fixed issue #3, avoid hung up of broker on any message processing error --- .../eclipse/moquette/server/netty/NettyChannel.java | 7 ++++++- .../org/eclipse/moquette/spi/impl/SimpleMessaging.java | 6 +++++- .../moquette/proto/messages/ConnectMessage.java | 10 +++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/broker/src/main/java/org/eclipse/moquette/server/netty/NettyChannel.java b/broker/src/main/java/org/eclipse/moquette/server/netty/NettyChannel.java index 9f1cb32c..651c08e1 100644 --- a/broker/src/main/java/org/eclipse/moquette/server/netty/NettyChannel.java +++ b/broker/src/main/java/org/eclipse/moquette/server/netty/NettyChannel.java @@ -80,5 +80,10 @@ public class NettyChannel implements ServerChannel { public void write(Object value) { m_channel.writeAndFlush(value); } - + + @Override + public String toString() { + String clientID = (String) getAttribute(Constants.ATTR_CLIENTID); + return "session [clientID "+ clientID +"]"; + } } diff --git a/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java b/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java index 654cc5b3..0cff3ca8 100644 --- a/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java +++ b/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java @@ -152,7 +152,11 @@ public class SimpleMessaging implements IMessaging, EventHandler { if (evt instanceof ProtocolEvent) { ServerChannel session = ((ProtocolEvent) evt).getSession(); AbstractMessage message = ((ProtocolEvent) evt).getMessage(); - annotationSupport.dispatch(session, message); + try { + annotationSupport.dispatch(session, message); + } catch (Throwable th) { + LOG.error("Grave error processing the message {} for {}", message, session, th); + } } } diff --git a/parser_commons/src/main/java/org/eclipse/moquette/proto/messages/ConnectMessage.java b/parser_commons/src/main/java/org/eclipse/moquette/proto/messages/ConnectMessage.java index 8f3ccc32..67b02c62 100644 --- a/parser_commons/src/main/java/org/eclipse/moquette/proto/messages/ConnectMessage.java +++ b/parser_commons/src/main/java/org/eclipse/moquette/proto/messages/ConnectMessage.java @@ -155,5 +155,13 @@ public class ConnectMessage extends AbstractMessage { public void setWillMessage(String willMessage) { this.m_willMessage = willMessage; } - + + @Override + public String toString() { + String base = String.format("Connect [clientID: %s, prot: %s, ver: %02X, clean: %b]", m_clientID, m_protocolName, m_procotolVersion, m_cleanSession); + if (m_willFlag) { + base += String.format(" Will [QoS: %d, retain: %b]", m_willQos, m_willRetain); + } + return base; + } }