From c38deec5fc815755b0cb5648945b3cfa8851a1ee Mon Sep 17 00:00:00 2001 From: jfarcand Date: Thu, 6 Feb 2014 17:07:50 -0500 Subject: [PATCH 1/3] Fixes #1465 --- .../atmosphere/cpr/AtmosphereResourceImpl.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) 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..b75fac70f84 100644 --- a/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java +++ b/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java @@ -380,7 +380,15 @@ public AtmosphereResource suspend(long timeout) { return this; } req.removeAttribute(PRE_SUSPEND); - notifyListeners(); + try { + notifyListeners(); + } catch (Exception ex) { + logger.warn("Exception during suspend() operation {}", ex); + broadcaster.removeAtmosphereResource(this); + if (config.getBroadcasterFactory().getDefault() != null) { + config.getBroadcasterFactory().getDefault().removeAllAtmosphereResource(this); + } + } } return this; } @@ -724,11 +732,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); } From 13584dadccef7bc495103e81da9488baffa5260c Mon Sep 17 00:00:00 2001 From: jfarcand Date: Thu, 6 Feb 2014 17:12:43 -0500 Subject: [PATCH 2/3] Better Fixes #1465 --- .../cpr/AtmosphereResourceImpl.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) 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 b75fac70f84..12c15c86a88 100644 --- a/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java +++ b/modules/cpr/src/main/java/org/atmosphere/cpr/AtmosphereResourceImpl.java @@ -380,15 +380,7 @@ public AtmosphereResource suspend(long timeout) { return this; } req.removeAttribute(PRE_SUSPEND); - try { - notifyListeners(); - } catch (Exception ex) { - logger.warn("Exception during suspend() operation {}", ex); - broadcaster.removeAtmosphereResource(this); - if (config.getBroadcasterFactory().getDefault() != null) { - config.getBroadcasterFactory().getDefault().removeAllAtmosphereResource(this); - } - } + notifyListeners(); } return this; } @@ -603,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) { From f7c6100c1ac893d186cb21c42cbdd50bf4d65c64 Mon Sep 17 00:00:00 2001 From: jfarcand Date: Fri, 7 Feb 2014 15:21:51 -0500 Subject: [PATCH 3/3] Add NettoSphere --- .../main/java/org/atmosphere/util/analytics/ModuleDetection.java | 1 + 1 file changed, 1 insertion(+) 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"); }