ICEpush
  1. ICEpush
  2. PUSH-181

ICEpush causes no response if log level is FINE

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0
    • Fix Version/s: 3.3
    • Component/s: None
    • Labels:
      None
    • Environment:
      Windows 7, jdk 1.6.33, jboss 7.1.1

      Description

      The root cause:

      This only happens when IcePush is present, using jboss, and the log level is set to Level.FINE. Logic read from
       org.icefaces.impl.push.servlet.ICEpushResourceHandler#ICEpushResourceHandler
       

      If these conditions are met, the constructor create a BlockingICEpushResourceHandlerWrapper which blocks all method calls until the thread created in the constructor signal them.

      The problem is that within that thread created in the constructor, this method getPhaseId() is called by the JSF LifeCycleImpl and blocked. So the thread that is supposed to signal other threads get locked itself

       # this is from com/sun/faces/lifecycle/LifecycleImpl
       # http://grepcode.com/file/repository.jboss.org/maven2/javax.faces/jsf-impl/1.2_04-p02/com/sun/faces/lifecycle/LifecycleImpl.java#LifecycleImpl.addPhaseListener%28com.sun.faces.lifecycle.PhaseListener%29
       
       158 if (LOGGER.isLoggable(Level.FINE)) {
       159 LOGGER.fine("addPhaseListener(" + listener.getPhaseId().toString()
       160 + "," + listener);
       161 }
       

      And this is the stacktrace of this thread:

      "Thread-67@11079" prio=5 tid=0x5f nid=NA waiting
         java.lang.Thread.State: WAITING
        at sun.misc.Unsafe.park(Unsafe.java:-1)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitUninterruptibly(AbstractQueuedSynchronizer.java:1923)
        at org.icefaces.impl.push.servlet.ICEpushResourceHandler$BlockingICEpushResourceHandlerWrapper.getPhaseId(ICEpushResourceHandler.java:358)
        at org.icefaces.impl.push.servlet.ICEpushResourceHandler.getPhaseId(ICEpushResourceHandler.java:119)
        at com.sun.faces.lifecycle.LifecycleImpl.addPhaseListener(LifecycleImpl.java:166)
        at org.icefaces.impl.push.servlet.ICEpushResourceHandler$ICEpushResourceHandlerImpl.initialize(ICEpushResourceHandler.java:275)
        at org.icefaces.impl.push.servlet.ICEpushResourceHandler$BlockingICEpushResourceHandlerWrapper.initialize(ICEpushResourceHandler.java:431)
        at org.icefaces.impl.push.servlet.ICEpushResourceHandler$1.run(ICEpushResourceHandler.java:89)
        at java.lang.Thread.run(Thread.java:662)
       
         

        Activity

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Zag Zag
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: