voyent
IceFaces 1.7.1 release deadlock on session invalidation  XML
Forum Index -> Contributor's Corner
Author Message
maratb

Joined: 17/Dec/2006 00:00:00
Messages: 13
Offline


I don't know if this has been addressed already, but I've been experiencing a deadlock when container's and IceFaces own session invalidation lock each other up.

As a result container becomes completely unresponsive and your web app is effectively dead.

Here is stack traces of two the dead locked threads.

Found one Java-level deadlock:
=============================
"ContainerBackgroundProcessor[StandardEngine[Catalina]]":
waiting to lock monitor 0x08d525e4 (object 0xaadfc0d0, a java.util.HashMap),
which is held by "Session Monitor"
"Session Monitor":
waiting to lock monitor 0x08d525a4 (object 0xaadf35b0, a com.icesoft.faces.util.event.servlet.ContextEventRepeater),
which is held by "ContainerBackgroundProcessor[StandardEngine[Catalina]]"

Java stack information for the threads listed above:
===================================================
"ContainerBackgroundProcessor[StandardEngine[Catalina]]":
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.notifySessionShutdown(SessionDispatcher.java:161)
- waiting to lock <0xaadfc0d0> (a java.util.HashMap)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.access$300(SessionDispatcher.java:21)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener.sessionDestroyed(SessionDispatcher.java:227)
at com.icesoft.faces.util.event.servlet.ContextEventRepeater.sessionDestroyed(ContextEventRepeater.java:326)
- locked <0xaadf35b0> (a com.icesoft.faces.util.event.servlet.ContextEventRepeater)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:702)
- locked <0xac2bfef0> (a org.apache.catalina.session.StandardSession)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:592)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:682)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:667)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1316)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:595)
"Session Monitor":
at com.icesoft.faces.util.event.servlet.ContextEventRepeater.sessionDestroyed(ContextEventRepeater.java:321)
- waiting to lock <0xaadf35b0> (a com.icesoft.faces.util.event.servlet.ContextEventRepeater)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:702)
- locked <0xac3131b8> (a org.apache.catalina.session.StandardSession)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:660)
at org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1111)
at org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:150)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.notifySessionShutdown(SessionDispatcher.java:176)
- locked <0xaadfc0d0> (a java.util.HashMap)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.access$300(SessionDispatcher.java:21)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Monitor.shutdown(SessionDispatcher.java:257)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Monitor.shutdownIfExpired(SessionDispatcher.java:262)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener$1.run(SessionDispatcher.java:205)

Found 1 deadlock.



The reason your app is dead is because all threads are now stuck here due to deadlock above:

"TP-Processor25" daemon prio=1 tid=0x09341f28 nid=0x5952 waiting for monitor entry [0xa8ed3000..0xa8ed4130]
at com.icesoft.faces.util.event.servlet.ContextEventRepeater.sessionCreated(ContextEventRepeater.java:309)
- waiting to lock <0xaadf35b0> (a com.icesoft.faces.util.event.servlet.ContextEventRepeater)
at org.apache.catalina.session.StandardSession.tellNew(StandardSession.java:397)
at org.apache.catalina.session.StandardSession.setId(StandardSession.java:369)
at org.apache.catalina.session.ManagerBase.createSession(ManagerBase.java:829)
at org.apache.catalina.session.StandardManager.createSession(StandardManager.java:291)
at org.apache.catalina.connector.Request.doGetSession(Request.java:2312)
at org.apache.catalina.connector.Request.getSession(Request.java:2075)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:844)
at org.apache.jasper.runtime.PageContextImpl._initialize(PageContextImpl.java:144)
at org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:122)
at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:107)
at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:63)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:44)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:595)


I'm attaching a fix for this. Basically SessionDispatcher. notifySessionShutdown() call to Session.invalidate() ends up calling itself back via ContextRepeater and all happily lock on SessionDispatcher.notifySessionShutdown() -> synchronized( SessionMonitors ).
By using a thread local I make sure that SessionDispatcher. notifySessionShutdown() will unwind if it sees that its in a thread loop.

Please review and let me know if this is something you're going to include or it's already been addressed differently. I see that you have this jira http://jira.icefaces.org/browse/ICE-3268 but haven't had time to look if it's the same issue
 Filename ContextEventRepeater.patch [Disk] Download
 Description Deadlock resolutiion when IceFaces and Conatiners' runtimes invalidate HTTP sessions
 Filesize 3 Kbytes
 Downloaded:  528 time(s)

 Filename SessionDispatcher.patch [Disk] Download
 Description Deadlock resolutiion when IceFaces and Conatiners' runtimes invalidate HTTP sessions
 Filesize 2 Kbytes
 Downloaded:  496 time(s)

maratb

Joined: 17/Dec/2006 00:00:00
Messages: 13
Offline


Can IceFaces commiters please comment on this?

Have you addressed this already? When 1.7.2 comes out do I need to go back and fix this again or it will taken care of?

Thanks.
mircea.toma

Joined: 10/Feb/2005 00:00:00
Messages: 323
Offline


I'm pretty sure this deadlock has been fixed in commit #17029 for SessionDispatcher. The change moved out the call to HttpSession.invalidate() out of the SessionDispatcher.notifySessionShutdown(), and more importantly out of the synchronized blocked it contains, into the un-synchronized SessionDispatcher$Monitor.shutdown() method.
Please try building ICEfaces libraries from the TRUNK and test to confirm my theory.
[Email]
kiavash

Joined: 14/Aug/2007 00:00:00
Messages: 13
Offline


I am facing with exactly same problem in version 1.7.1. So is it fixed in 1.7.2?
npesic

Joined: 07/Sep/2007 00:00:00
Messages: 3
Offline


I would like to share here my experience. I would appreciate any feedback. Thanks in advance.

I'm using IceFaces version 1.7.2

Name: com.icesoft.faces
Implementation-Title: ICEfaces
Implementation-Version: 1.7.2_17 (2008-10-08 16:01 MDT)

My application dies after some time period because of the deadlock on session invalidation.

Here is an example of thread dump:
=======================


State:WAITING
ContainerBackgroundProcessor[StandardEngine[Catalina]]=java.lang.Object.wait(Native Method)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=java.lang.Object.wait(Object.java:485)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:199)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:481)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.releaseLifecycleLock(PersistentFacesState.java:382)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.release(PersistentFacesState.java:326)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.context.View.release(View.java:216)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.context.View$5.run(View.java:103)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.context.View.dispose(View.java:228)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet$4.run(MainSessionBoundServlet.java:148)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.shutdown(MainSessionBoundServlet.java:164)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.http.servlet.SessionDispatcher.sessionShutdown(SessionDispatcher.java:104)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.http.servlet.SessionDispatcher.notifySessionShutdown(SessionDispatcher.java:131)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.http.servlet.SessionDispatcher.access$500(SessionDispatcher.java:26)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener.sessionDestroyed(SessionDispatcher.java:192)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=com.icesoft.faces.util.event.servlet.ContextEventRepeater.sessionDestroyed(ContextEventRepeater.java:333)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.session.StandardSession.expire(StandardSession.java:702)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.session.StandardSession.isValid(StandardSession.java:592)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:682)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:667)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1316)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
ContainerBackgroundProcessor[StandardEngine[Catalina]]=java.lang.Thread.run(Thread.java:619)

--------------------------
State:BLOCKED
http-80-2=com.icesoft.faces.util.event.servlet.ContextEventRepeater.sessionCreated(ContextEventRepeater.java:316)
http-80-2=org.apache.catalina.session.StandardSession.tellNew(StandardSession.java:397)
http-80-2=org.apache.catalina.session.StandardSession.setId(StandardSession.java:369)
http-80-2=org.apache.catalina.session.ManagerBase.createSession(ManagerBase.java:829)
http-80-2=org.apache.catalina.session.StandardManager.createSession(StandardManager.java:291)
http-80-2=org.apache.catalina.connector.Request.doGetSession(Request.java:2312)
http-80-2=org.apache.catalina.connector.Request.getSession(Request.java:2075)
http-80-2=org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833)
http-80-2=org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:844)
http-80-2=org.apache.jasper.runtime.PageContextImpl._initialize(PageContextImpl.java:144)
http-80-2=org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:122)
http-80-2=org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:107)
http-80-2=org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:63)
http-80-2=org.apache.jsp.index_jsp._jspService(index_jsp.java:44)
http-80-2=org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
http-80-2=javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
http-80-2=org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
http-80-2=org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
http-80-2=org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
http-80-2=javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
http-80-2=org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
http-80-2=org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
http-80-2=org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
http-80-2=org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
http-80-2=org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
http-80-2=org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
http-80-2=org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
http-80-2=org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
http-80-2=org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
http-80-2=org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
http-80-2=org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
http-80-2=org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
http-80-2=java.lang.Thread.run(Thread.java:619)
mircea.toma

Joined: 10/Feb/2005 00:00:00
Messages: 323
Offline


Yes, we've seen this before, although it was quite difficult to reproduce. The issue was tracked by http://jira.icefaces.org/browse/ICE-3788 .
Can you give 1.7.2SP1 a try to see if you are still experiencing this issue?
[Email]
npesic

Joined: 07/Sep/2007 00:00:00
Messages: 3
Offline


Pardon me for asking but is there a binary for download (1.7.2 SP1) or it is required to build it from source? Please, let me know.

Regards,
N.
mircea.toma

Joined: 10/Feb/2005 00:00:00
Messages: 323
Offline


See http://www.icefaces.org/main/downloads/ . Both source and binary bundles are available.
[Email]
npesic

Joined: 07/Sep/2007 00:00:00
Messages: 3
Offline


Just wanted to provide feedback. I've upgraded IceFaces from 1.7.2 to 1.7.2 SP1.

I'm glad to report that since then the deadlock didn't appear. It seems that SP1 has solved it.

Thanks,
N.
errorken

Joined: 23/Dec/2007 00:00:00
Messages: 59
Offline


We have the same problem with 1.7.1
Since we cannot upgrade to 1.7.2 SP1; it breaks with SWF 1.0.6 and icefaces is not responding to our Jira entries.
Because of this we had to make a custom build of 1.7.1 with the locking fixes applied. We took the fixes as posted in the first post.

However, this did not fix our problem; still locking issues.

After looking at the dumps we saw there is another problem:

T1: in SessionDispatcher the method notifySessionShutdown is executed. This is triggered by the de 'scan' thread in SessionDispatcher which scans every 10seconds -> now holding lock on SessionMonitors
T2: an expire of the session happens -> expire on StandardSession is invoked -> expire() locks this() - now holding lock on HttpSession

...

T1: calling httpSession.invalidate in notifySessionShutdown
T2: As a result of the expire, making callbacks to registered HttpSessionListener's. Calling: SessionDispatcher$Listener -> sessionDestroyed -> calls notifySessionShutdown

So, in the last two slices: T1 is in need of a lock on the HttpSession, since thats what invalidate requires if you look into StandardSession.
T2 is in need of a lock on SessionMonitors, since its entering notifySessionShutdown. Result: deadlock

Code:
 "Session Monitor" - Thread t@86
    java.lang.Thread.State: BLOCKED on org.apache.catalina.session.StandardSession@1ca9290 owned by: ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[/vfp-portal-pub]]
         at org.apache.catalina.session.StandardSession.isForegroundLocked(StandardSession.java:1291)
         at org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1397)
         at org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:183)
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.notifySessionShutdown(SessionDispatcher.java:190)
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.access$300(SessionDispatcher.java:23)
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Monitor.shutdown(SessionDispatcher.java:274)
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Monitor.shutdownIfExpired(SessionDispatcher.java:279)
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener$1.run(SessionDispatcher.java:222)
 


Code:
 "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[/vfp-portal-pub]]" - Thread t@85
    java.lang.Thread.State: BLOCKED on java.util.HashMap@1f03dc9 owned by: Session Monitor
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.notifySessionShutdown(SessionDispatcher.java:171)
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.access$300(SessionDispatcher.java:23)
         at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener.sessionDestroyed(SessionDispatcher.java:244)
         at com.icesoft.faces.util.event.servlet.ContextEventRepeater.sessionDestroyed(ContextEventRepeater.java:289)
         at org.apache.catalina.session.StandardSession.expire(StandardSession.java:777)
         at org.apache.catalina.session.StandardSession.expire(StandardSession.java:735)
         at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:646)
         at org.apache.catalina.session.StandardManager.processExpires(StandardManager.java:899)
         at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5506)
         at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1822)
         at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1811)
         at java.lang.Thread.run(Thread.java:595)
 


We fixed this by using a ConcurentMap for the SessionMonitors.
Because of this there is no explicit locking anymore and that solves the problem.

A minor issue with this, is that the map could now be iterated over by multiple threads.
This could result in multiple 'sessionDestroy()' being called on the SessionDispatcher instances hold in the map.
However, since this method only does this; sessionBoundServers.remove(session.getId());
it doesn't really matter if its called multiple times.
Also; ConcurMap "allows" concurent modififcation , so its no issue if T1 and T2 have both iterators and are removing items from the map.
lomniczi

Joined: 20/Oct/2009 00:00:00
Messages: 9
Offline


Hi Errorken,

You wrote you fixed this problem. We've experienced the same problem in Icefaces 1.8.2 in IBM WebSphere Application Server 6.1.0.29. Could you please write me where did you fix or send me the related source code? Sry if my request is stupid, I'm a beginner in the community work.
shar_kumar

Joined: 10/Feb/2009 00:00:00
Messages: 5
Offline


Hi,
We do have the same issue with our application. We are recommended to move to 1.8.2 version as it is company wise approved version for us.
Please let me know if this dead lock issue is going to be resolved when we move from 1.7.1 to 1.8.2 directly.

Thanks
SRT
lomniczi

Joined: 20/Oct/2009 00:00:00
Messages: 9
Offline


Hi Kumar,

We modified the source code of 1.8.2 version. I've attached the related file, and you can see the modified method below:

public void dispose() {
try {
if (!lifecycleLock.isHeldByCurrentThread()) {
lifecycleLock.tryLock(30, TimeUnit.SECONDS);
}
dispose.run();
ContextEventRepeater.viewNumberDisposed(
facesContext.getExternalContext().getSession(false),
sessionID,
Integer.parseInt(viewIdentifier));
} catch (InterruptedException exception) {
// do nothing.
} finally {
releaseLifecycleLockUnconditionally();
}
}

The problem was a deadlock. Two threads used an instance of this class (at session invalitation), and one thread locked the HTTP session, the other thread locked the lifecycleLock field. They were waiting for each others monitors. The new solution that dispose method waits max 30secs until get the monitor. This solutions it seems to be proper.
 Filename View.java [Disk] Download
 Description
 Filesize 11 Kbytes
 Downloaded:  732 time(s)

shar_kumar

Joined: 10/Feb/2009 00:00:00
Messages: 5
Offline


Thank you so much!
Can I upgrade
my application from 1.7.1 to 1.8.2?
How can I use the source code attached.

Thanks
shark
shar_kumar

Joined: 10/Feb/2009 00:00:00
Messages: 5
Offline


Hi
I deployed 1.8.2, but I get an error when I try to attach a document in one of our screens. PFA error screen.

Thanks
SRT
[Thumb - icefaces_error.png]
 Filename icefaces_error.png [Disk] Download
 Description
 Filesize 68 Kbytes
 Downloaded:  457 time(s)

 
Forum Index -> Contributor's Corner
Go to:   
Powered by JForum 2.1.7ice © JForum Team