Skip to content

Commit

Permalink
Issue #8460 check DefaultSessionIdManager is started
Browse files Browse the repository at this point in the history
  • Loading branch information
janbartel committed Aug 15, 2022
1 parent 32e0815 commit 32b91b4
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.io.PrintWriter;
import java.util.Date;
import java.util.Enumeration;
import java.util.UUID;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
Expand Down Expand Up @@ -75,6 +76,8 @@ protected void handleForm(HttpServletRequest request)
session.setAttribute("test", "value");
session.setAttribute("obj", new ObjectAttributeValue(System.currentTimeMillis()));
session.setAttribute("WEBCL", new MultiMap<>());
UUID uuid = UUID.randomUUID();
session.setAttribute("uuid", uuid);
}
else if (session != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ private Server createServer(ServletHolder servletHolder, String nodeName)
{
DefaultSessionIdManager sessionIdManager = new DefaultSessionIdManager(server);
sessionIdManager.setWorkerName(nodeName);
server.setSessionIdManager(sessionIdManager);
}

return server;
Expand Down
2 changes: 0 additions & 2 deletions jetty-server/src/main/config/etc/sessions/id-manager.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
<!-- ===================================================================== -->
<!-- Configure a SessionIdManager -->
<!-- ===================================================================== -->
<Set name="sessionIdManager">
<New id="idMgr" class="org.eclipse.jetty.server.session.DefaultSessionIdManager">
<Arg>
<Ref refid="Server"/>
Expand All @@ -32,5 +31,4 @@
</New>
</Set>
</New>
</Set>
</Configure>
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public class DefaultSessionIdManager extends ContainerLifeCycle implements Sessi
public DefaultSessionIdManager(Server server)
{
_server = server;
_server.setSessionIdManager(this);
}

/**
Expand All @@ -86,6 +87,7 @@ public DefaultSessionIdManager(Server server, Random random)
public void setServer(Server server)
{
_server = server;
_server.setSessionIdManager(this);
}

/**
Expand Down Expand Up @@ -193,6 +195,9 @@ public void setReseed(long reseed)
@Override
public String newSessionId(HttpServletRequest request, long created)
{
if (!isStarted())
throw new IllegalStateException("DefaultSessionIdManager not started");

if (request == null)
return newSessionId(created);

Expand Down Expand Up @@ -223,6 +228,9 @@ public String newSessionId(HttpServletRequest request, long created)
*/
public String newSessionId(long seedTerm)
{
if (!isStarted())
throw new IllegalStateException("DefaultSessionIdManager not started");

// pick a new unique ID!
String id = null;

Expand Down Expand Up @@ -270,10 +278,13 @@ public String newSessionId(long seedTerm)
}
return id;
}

@Override
public boolean isIdInUse(String id)
{
if (!isStarted())
throw new IllegalStateException("DefaultSessionIdManager not started");

if (id == null)
return false;

Expand Down Expand Up @@ -379,6 +390,9 @@ public void initRandom()
@Override
public String getExtendedId(String clusterId, HttpServletRequest request)
{
if (!isStarted())
throw new IllegalStateException("DefaultSessionIdManager not started");

if (!StringUtil.isBlank(_workerName))
{
if (_workerAttr == null)
Expand Down Expand Up @@ -413,6 +427,9 @@ public String getId(String extendedId)
@Override
public void expireAll(String id)
{
if (!isStarted())
throw new IllegalStateException("DefaultSessionIdManager not started");

if (LOG.isDebugEnabled())
LOG.debug("Expiring {}", id);

Expand Down Expand Up @@ -440,6 +457,9 @@ public void invalidateAll(String id)
@Override
public String renewSessionId(String oldClusterId, String oldNodeId, HttpServletRequest request)
{
if (!isStarted())
throw new IllegalStateException("DefaultSessionIdManager not started");

//generate a new id
String newClusterId = newSessionId(request.hashCode());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,6 @@ protected void doStart() throws Exception
{
Thread.currentThread().setContextClassLoader(serverLoader);
_sessionIdManager = new DefaultSessionIdManager(server);
server.setSessionIdManager(_sessionIdManager);
server.manage(_sessionIdManager);
_sessionIdManager.start();
}
Expand Down

0 comments on commit 32b91b4

Please sign in to comment.