-
Type:
Bug
-
Resolution: Won't Fix
-
Priority:
Medium
-
None
-
Affects Version/s: 2.3.3, 2.5.3
-
Component/s: Core - OSGi Plugins Platform
-
Environment:
In both WAR and Standalone. EventListener plugin.
I have a EventListener plugin that listens to PageCreateEvent. I add a label on the created page, it gets added, but it gets removed right away.
How do I know it gets added? Because I see the LabelAddedEvent, and the LabelRemovedEvent.
public class CheesyListener implements EventListener {
private static final Category log = Category.getInstance(CheesyListener.class);
private static final Class[] HANDLED_EVENTS =
;
LabelManager labelManager;
private static final ThreadLocal threadLocal = new ThreadLocal();
public String getToken() {
HttpServletRequest request = ServletActionContext.getRequest();
String sessionid;
if (request != null)
else
{ sessionid = "nosessionid"; } String token = (String)threadLocal.get();
if (token != null)
token = Long.toString(System.currentTimeMillis());
threadLocal.set(token);
return token + " " + sessionid;
}
public void handleEvent(Event event) {
if (event instanceof PageCreateEvent)
else if (event instanceof LabelAddEvent)
{ log.error("added label " + ((LabelEvent)event).getLabel() + " token " + getToken()); }else if (event instanceof LabelRemoveEvent)
{ log.error("removed label " + ((LabelEvent)event).getLabel() + " token " + getToken()); }}
public Class[] getHandledEventClasses()
{ return HANDLED_EVENTS; }public void setLabelManager(LabelManager labelManager)
{ this.labelManager = labelManager; }}
The trigger above generate the following output:
2007-06-12 08:28:18,560 ERROR [http-8082-Processor4] [confluence.triggers.eventlistener.CheesyListener] handleEvent adding label token 1181660562647 DE14CCBEF6F9164C26CBC9D6F8EFAF3C
2007-06-12 08:28:18,573 ERROR [http-8082-Processor4] [confluence.triggers.eventlistener.CheesyListener] handleEvent added label cheesetoken 1181660562647 DE14CCBEF6F9164C26CBC9D6F8EFAF3C
2007-06-12 08:28:18,698 ERROR [http-8082-Processor4] [confluence.triggers.eventlistener.CheesyListener] handleEvent removed label cheesetoken 1181660562647 DE14CCBEF6F9164C26CBC9D6F8EFAF3C
As you can see, the removal comes from the very same thread and same Web session... see the attach log for debug info... as per the log, there is some funny stuff happening with cache just before the LabelRemoveEvent is published...