Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 4.0.BETA
-
Fix Version/s: 4.0
-
Component/s: Push Server
-
Labels:None
-
Environment:ICEpush, Push Service
Description
The following Exception is returned for a request to
http://dev.bridgeit.io/push/add-group-member.icepush
java.lang.RuntimeException: wrapped Exception: java.lang.NullPointerException
com.icesoft.push.servlet.ICEpushServlet.service(ICEpushServlet.java:134)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.icesoft.notify.server.CustomHeaderFilter.doFilter(CustomHeaderFilter.java:64)
</pre></p><p><b>root cause</b> <pre>java.lang.RuntimeException: wrapped Exception: java.lang.NullPointerException
org.icepush.servlet.MainServlet.service(MainServlet.java:178)
com.icesoft.push.servlet.ICEpushServlet.service(ICEpushServlet.java:128)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.icesoft.notify.server.CustomHeaderFilter.doFilter(CustomHeaderFilter.java:64)
</pre></p><p><b>root cause</b> <pre>java.lang.NullPointerException
org.icepush.LocalPushGroupManager.startExpiryTimeout(LocalPushGroupManager.java:431)
com.icesoft.push.LocalPushGroupManager.startExpiryTimeout(LocalPushGroupManager.java:220)
org.icepush.LocalPushGroupManager.startExpiryTimeout(LocalPushGroupManager.java:422)
org.icepush.PushID.startExpiryTimeout(PushID.java:117)
com.icesoft.notify.push.LocalPushGroupManager.newPushID(LocalPushGroupManager.java:456)
org.icepush.LocalPushGroupManager.addMember(LocalPushGroupManager.java:498)
org.icepush.LocalPushGroupManager.addMember(LocalPushGroupManager.java:121)
com.icesoft.notify.push.LocalPushGroupManager.addMember(LocalPushGroupManager.java:295)
org.icepush.PushContext.addGroupMember(PushContext.java:131)
org.icepush.servlet.BrowserBoundServlet$AddGroupMember.addGroupMember(BrowserBoundServlet.java:160)
com.icesoft.notify.push.servlet.BrowserBoundServlet$AddGroupMember.addGroupMember(BrowserBoundServlet.java:147)
org.icepush.servlet.BrowserBoundServlet$AddGroupMember.service(BrowserBoundServlet.java:154)
com.icesoft.notify.push.servlet.BrowserBoundServlet$AddGroupMember.service(BrowserBoundServlet.java:136)
com.icesoft.notify.push.servlet.RealmAccessTokenPermissionsCheck.service(RealmAccessTokenPermissionsCheck.java:49)
org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:38)
org.icepush.servlet.BrowserBoundServlet.service(BrowserBoundServlet.java:75)
org.icepush.servlet.BrowserDispatcher$BrowserEntry.service(BrowserDispatcher.java:101)
com.icesoft.notify.push.servlet.BrowserDispatcher.service(BrowserDispatcher.java:34)
org.icepush.CheckBrowserIDServlet.service(CheckBrowserIDServlet.java:38)
com.icesoft.notify.push.servlet.OriginHeaderCheck.service(OriginHeaderCheck.java:58)
com.icesoft.notify.push.servlet.RefererHeaderCheck.service(RefererHeaderCheck.java:60)
com.icesoft.notify.push.servlet.APIKeyCheck.service(APIKeyCheck.java:59)
com.icesoft.notify.push.servlet.StatisticsKeeper.service(StatisticsKeeper.java:30)
com.icesoft.notify.push.servlet.RealmAccessTokenPermissionsCheck.service(RealmAccessTokenPermissionsCheck.java:49)
org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:38)
org.icepush.servlet.MainServlet.service(MainServlet.java:162)
com.icesoft.push.servlet.ICEpushServlet.service(ICEpushServlet.java:128)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.icesoft.notify.server.CustomHeaderFilter.doFilter(CustomHeaderFilter.java:64)
http://dev.bridgeit.io/push/add-group-member.icepush
java.lang.RuntimeException: wrapped Exception: java.lang.NullPointerException
com.icesoft.push.servlet.ICEpushServlet.service(ICEpushServlet.java:134)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.icesoft.notify.server.CustomHeaderFilter.doFilter(CustomHeaderFilter.java:64)
</pre></p><p><b>root cause</b> <pre>java.lang.RuntimeException: wrapped Exception: java.lang.NullPointerException
org.icepush.servlet.MainServlet.service(MainServlet.java:178)
com.icesoft.push.servlet.ICEpushServlet.service(ICEpushServlet.java:128)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.icesoft.notify.server.CustomHeaderFilter.doFilter(CustomHeaderFilter.java:64)
</pre></p><p><b>root cause</b> <pre>java.lang.NullPointerException
org.icepush.LocalPushGroupManager.startExpiryTimeout(LocalPushGroupManager.java:431)
com.icesoft.push.LocalPushGroupManager.startExpiryTimeout(LocalPushGroupManager.java:220)
org.icepush.LocalPushGroupManager.startExpiryTimeout(LocalPushGroupManager.java:422)
org.icepush.PushID.startExpiryTimeout(PushID.java:117)
com.icesoft.notify.push.LocalPushGroupManager.newPushID(LocalPushGroupManager.java:456)
org.icepush.LocalPushGroupManager.addMember(LocalPushGroupManager.java:498)
org.icepush.LocalPushGroupManager.addMember(LocalPushGroupManager.java:121)
com.icesoft.notify.push.LocalPushGroupManager.addMember(LocalPushGroupManager.java:295)
org.icepush.PushContext.addGroupMember(PushContext.java:131)
org.icepush.servlet.BrowserBoundServlet$AddGroupMember.addGroupMember(BrowserBoundServlet.java:160)
com.icesoft.notify.push.servlet.BrowserBoundServlet$AddGroupMember.addGroupMember(BrowserBoundServlet.java:147)
org.icepush.servlet.BrowserBoundServlet$AddGroupMember.service(BrowserBoundServlet.java:154)
com.icesoft.notify.push.servlet.BrowserBoundServlet$AddGroupMember.service(BrowserBoundServlet.java:136)
com.icesoft.notify.push.servlet.RealmAccessTokenPermissionsCheck.service(RealmAccessTokenPermissionsCheck.java:49)
org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:38)
org.icepush.servlet.BrowserBoundServlet.service(BrowserBoundServlet.java:75)
org.icepush.servlet.BrowserDispatcher$BrowserEntry.service(BrowserDispatcher.java:101)
com.icesoft.notify.push.servlet.BrowserDispatcher.service(BrowserDispatcher.java:34)
org.icepush.CheckBrowserIDServlet.service(CheckBrowserIDServlet.java:38)
com.icesoft.notify.push.servlet.OriginHeaderCheck.service(OriginHeaderCheck.java:58)
com.icesoft.notify.push.servlet.RefererHeaderCheck.service(RefererHeaderCheck.java:60)
com.icesoft.notify.push.servlet.APIKeyCheck.service(APIKeyCheck.java:59)
com.icesoft.notify.push.servlet.StatisticsKeeper.service(StatisticsKeeper.java:30)
com.icesoft.notify.push.servlet.RealmAccessTokenPermissionsCheck.service(RealmAccessTokenPermissionsCheck.java:49)
org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:38)
org.icepush.servlet.MainServlet.service(MainServlet.java:162)
com.icesoft.push.servlet.ICEpushServlet.service(ICEpushServlet.java:128)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.icesoft.notify.server.CustomHeaderFilter.doFilter(CustomHeaderFilter.java:64)
This NPE only occurred when Level.FINE on LocalPushGroupManager was enabled and only when addMember(...) was invoked. However, it did expose a minor flaw in the current logic. The PushID was created causing startExpiryTimeout() to get invoked through the newPushID(...) (overloaded) methods, but before the resulting PushID object was added to the map. This logic is now switched ensuring adding to the pushIDMap happens before startExpirtyTimeout() is invoked on a newly created PushID object. Marking this one as FIXED.