mirror of
https://github.com/jetty/jetty.project.git
synced 2025-02-19 04:55:01 +00:00
441479 Jetty hangs due to deadlocks in session manager
This commit is contained in:
parent
aedfb662b6
commit
a183219ac8
@ -176,71 +176,63 @@ public abstract class NoSqlSessionManager extends AbstractSessionManager impleme
|
||||
@Override
|
||||
protected boolean removeSession(String idInCluster)
|
||||
{
|
||||
synchronized (this)
|
||||
NoSqlSession session = _sessions.remove(idInCluster);
|
||||
|
||||
try
|
||||
{
|
||||
NoSqlSession session = _sessions.remove(idInCluster);
|
||||
|
||||
try
|
||||
if (session != null)
|
||||
{
|
||||
if (session != null)
|
||||
{
|
||||
return remove(session);
|
||||
}
|
||||
return remove(session);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
__log.warn("Problem deleting session {}", idInCluster,e);
|
||||
}
|
||||
|
||||
return session != null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
__log.warn("Problem deleting session {}", idInCluster,e);
|
||||
}
|
||||
|
||||
return session != null;
|
||||
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
protected void expire( String idInCluster )
|
||||
{
|
||||
synchronized (this)
|
||||
{
|
||||
//get the session from memory
|
||||
NoSqlSession session = _sessions.get(idInCluster);
|
||||
//get the session from memory
|
||||
NoSqlSession session = _sessions.get(idInCluster);
|
||||
|
||||
try
|
||||
try
|
||||
{
|
||||
if (session == null)
|
||||
{
|
||||
if (session == null)
|
||||
{
|
||||
//we need to expire the session with its listeners, so load it
|
||||
session = loadSession(idInCluster);
|
||||
}
|
||||
|
||||
if (session != null)
|
||||
session.timeout();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
__log.warn("Problem expiring session {}", idInCluster,e);
|
||||
//we need to expire the session with its listeners, so load it
|
||||
session = loadSession(idInCluster);
|
||||
}
|
||||
|
||||
if (session != null)
|
||||
session.timeout();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
__log.warn("Problem expiring session {}", idInCluster,e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void invalidateSession (String idInCluster)
|
||||
{
|
||||
synchronized (this)
|
||||
NoSqlSession session = _sessions.get(idInCluster);
|
||||
try
|
||||
{
|
||||
NoSqlSession session = _sessions.get(idInCluster);
|
||||
try
|
||||
__log.debug("invalidating session {}", idInCluster);
|
||||
if (session != null)
|
||||
{
|
||||
__log.debug("invalidating session {}", idInCluster);
|
||||
if (session != null)
|
||||
{
|
||||
session.invalidate();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
__log.warn("Problem invalidating session {}", idInCluster,e);
|
||||
session.invalidate();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
__log.warn("Problem invalidating session {}", idInCluster,e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user