Details
-
Type: Bug
-
Status: Closed
-
Priority: 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
-
ICEsoft Forum Reference:
-
Workaround Exists:Yes
-
Workaround Description:The workaround for now is to set the log level for javax.enterprise.resource.webcontainer.jsf.lifecycle to INFO at least
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)
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
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Zag Zag
created issue -
Ted Goddard
made changes -
Field | Original Value | New Value |
---|---|---|
Salesforce Case | [] | |
Fix Version/s | EE-3.0.0.GA_P01 [ 10329 ] | |
Affects Version/s | 3.0 [ 10259 ] |
Ted Goddard
made changes -
Assignee | Mircea Toma [ mircea.toma ] |
Ken Fyten
made changes -
Salesforce Case | [] | |
Fix Version/s | 3.2 [ 10340 ] |
Mircea Toma
made changes -
Salesforce Case | [] | |
Fix Version/s | 3.1 [ 10310 ] | |
Fix Version/s | EE-3.2.0.GA [ 10323 ] | |
Fix Version/s | EE-3.0.0.GA_P01 [ 10329 ] | |
Fix Version/s | 3.2 [ 10340 ] |
Ken Fyten
made changes -
Salesforce Case | [] | |
Fix Version/s | 3.2 [ 10340 ] | |
Fix Version/s | 3.1 [ 10310 ] | |
Fix Version/s | EE-3.2.0.GA [ 10323 ] |
Migration
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Migration
made changes -
Fix Version/s | 3.3 [ 10374 ] | |
Fix Version/s | 3.2 [ 10340 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |