diff --git a/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java b/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java index f041b920adf..12c15c86a88 100644 --- a/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java +++ b/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java @@ -595,8 +595,17 @@ public AtmosphereResource notifyListeners(AtmosphereResourceEvent event) { action().type(Action.TYPE.CREATED); } } catch (Throwable t) { - logger.debug("Listener error {}", t); AtmosphereResourceEventImpl.class.cast(event).setThrowable(t); + if (event.isSuspended()) { + logger.warn("Exception during suspend() operation {}", t); + broadcaster.removeAtmosphereResource(this); + if (config.getBroadcasterFactory().getDefault() != null) { + config.getBroadcasterFactory().getDefault().removeAllAtmosphereResource(this); + } + } else { + logger.debug("Listener error {}", t); + } + try { onThrowable(event); } catch (Throwable t2) { @@ -724,11 +733,8 @@ public void _destroy() { try { removeEventListeners(); if (!isCancelled.get()) { - try { - getBroadcaster(false).removeAtmosphereResource(this); - } catch (IllegalStateException ex) { - logger.trace(ex.getMessage(), ex); - } + if (broadcaster != null) broadcaster.removeAtmosphereResource(this); + if (config.getBroadcasterFactory().getDefault() != null) { config.getBroadcasterFactory().getDefault().removeAllAtmosphereResource(this); } diff --git a/modules/cpr/src/main/java/org/atmosphere/util/analytics/ModuleDetection.java b/modules/cpr/src/main/java/org/atmosphere/util/analytics/ModuleDetection.java index 50151ba3a9c..bc942c5598a 100644 --- a/modules/cpr/src/main/java/org/atmosphere/util/analytics/ModuleDetection.java +++ b/modules/cpr/src/main/java/org/atmosphere/util/analytics/ModuleDetection.java @@ -36,6 +36,7 @@ public class ModuleDetection { modules.put("wicket", "org.apache.wicket.atmosphere.EventBus"); modules.put("scalatra", "org.scalatra.ScalatraServlet"); modules.put("eventPush", "org.grails.plugin.platform.events.push.EventsPushHandler"); + modules.put("nettosphere", "org.atmosphere.nettosphere.BridgeRuntime"); }