Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-27888

[GSS](7.4.z) Expired session remains in the cache when session expiration conflicts with a continuation request to the backup cache

XMLWordPrintable

      When there is a conflict between session expiration in the node which has the primary cache, and a long-running request in the node which has the back-up cache, it causes a memory leak.

      Session W-Jks1elbgEXw_Kkhw7x4SPTLJS120KPGwTgi8zD is not removed from the cache even if the session timeout is exceeded in the following scenarios:

      // test application session-test.war is attached on this ticket
      $ session-test.war  jboss-eap-7.4-node1/standalone/deployment/
      $ session-test.war  jboss-eap-7.4-node2/standalone/deployment/
      
      // start 2 nodes JBoss EAP 7.4.18 cluster
      $ jboss-eap-7.4-node1/bin/standalone.sh -Djboss.node.id=node1 -c standalone-ha.xml
      $ jboss-eap-7.4-node2/bin/standalone.sh -Djboss.node.id=node2 -Djboss.socket.binding.port-offset=100 -c standalone-ha.xml
      
      // start new session on node1, the session-timeout is 1 minute
      $ curl -v 127.0.0.1:8080/session-test/count
      ...
      < HTTP/1.1 200 OK
      < Connection: keep-alive
      < Set-Cookie: JSESSIONID=W-Jks1elbgEXw_Kkhw7x4SPTLJS120KPGwTgi8zD.node1; path=/session-test
      < Content-Type: text/plain;charset=utf-8
      < Content-Length: 55
      < Date: Mon, 02 Sep 2024 09:57:10 GMT
      < 
      count: 1, id=W-Jks1elbgEXw_Kkhw7x4SPTLJS120KPGwTgi8zD
      
      // send a long-running request to node2, with JSESSIONID=W-Jks1elb... Stickey session is intentionally broken in this scenario
      $ curl -v -b JSESSIONID=W-Jks1elbgEXw_Kkhw7x4SPTLJS120KPGwTgi8zD.node1 127.0.0.1:8180/session-test/count?slow=true
      
      // SessionMetadata is not removed from the cache after a long-running request is completed
      // if node1 restarts or send a request to node1 with the expired session id, the session will be removed from the cache
      $ jmap -histo:live <jvm-pid-of-node1> | grep -e SimpleSessionAccessMetaData -e SimpleSessionCreationMetaData
      5222:             1             32  org.wildfly.clustering.web.cache.session.SimpleSessionCreationMetaData
      6420:             1             24  org.wildfly.clustering.web.cache.session.SimpleSessionAccessMetaData
      

              pferraro@redhat.com Paul Ferraro
              rhn-support-nagetsum Norito Agetsuma
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated:
                Resolved: