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

[GSS](7.3.x) Sessions timed out may continue to remain in the Java Heap.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Critical Critical
    • 7.3.1.CR1, 7.3.1.GA
    • 7.3.0.CD18
    • Clustering
    • None
    • +
    • Hide

      EAP 7.0.0

      1. Setup EAP 7.0.0 cluster environment.
        $ mkdir /work2/test/EAP700
        $ export WORK_DIR=/work2/test/EAP700
        $ cd $WORK_DIR
        $ unzip /path/to/jboss-eap-7.0.0.zip
        $ mv jboss-eap-7.0 jboss-eap-7.0.0
        $ export JBOSS_HOME=$WORK_DIR/jboss-eap-7.0.0
        $ export PATH=$JBOSS_HOME/bin:$PATH
        $ add-user.sh --user admin --password password --silent
        $ cp -a jboss-eap-7.0.0/standalone node1
        $ cp -a jboss-eap-7.0.0/standalone node2
        
        // You may want to install byteman and setup using script.btm script here.
        
        // Start nodes.
        (node1) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node1 -Djboss.node.name=node1 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=0
        (node2) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node2 -Djboss.node.name=node2 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=100
        
        // Change log level.
        (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)"
        (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)"
        (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)"
        (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)"
        
      2. Deploy testcase.
        $ cd $WORK_DIR
        $ unzip /path/to/jboss-eap-7.0.0-quickstarts.zip
        $ cd jboss-eap-7.0.0.GA-quickstarts
        $ unzip /path/to/helloworld_02534900.zip
        $ cd helloworld_02534900
        $ mvn clean package
        (node1) $ mvn wildfly:deploy -Dwildfly.port=9990
        (node2) $ mvn wildfly:deploy -Dwildfly.port=10090
        

      EAP 7.2.5

      1. Setup EAP 7.2.5 cluster environment.
        $ mkdir /work2/test/EAP725
        $ export WORK_DIR=/work2/test/EAP725
        $ cd $WORK_DIR
        $ unzip /path/to/jboss-eap-7.2.5.zip
        $ mv jboss-eap-7.2 jboss-eap-7.2.5
        $ export JBOSS_HOME=$WORK_DIR/jboss-eap-7.2.5
        $ export PATH=$JBOSS_HOME/bin:$PATH
        $ add-user.sh --user admin --password password --silent
        $ cp -a jboss-eap-7.2.5/standalone node1
        $ cp -a jboss-eap-7.2.5/standalone node2
        
        // You may want to install byteman and setup using script.btm script here.
        
        // Start nodes.
        (node1) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node1 -Djboss.node.name=node1 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=0
        (node2) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node2 -Djboss.node.name=node2 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=100
        
        // Change log level.
        (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)"
        (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)"
        (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)"
        (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)"
        
      2. Deploy testcase.
        $ cd $WORK_DIR
        $ unzip /path/to/jboss-eap-7.2.0-quickstarts.zip
        $ cd jboss-eap-7.2.0.GA-quickstarts
        $ unzip /path/to/helloworld_02534900.zip
        $ cd helloworld_02534900
        $ mvn clean package
        (node1) $ mvn wildfly:deploy -Dwildfly.port=9990
        (node2) $ mvn wildfly:deploy -Dwildfly.port=10090
        

      Test

      1. Test 1
        1. Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*1)
        2. Count the number of sessions for node1 and node2. (You can use count_sessions.sh in helloworld_02534900.zip.)
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          
        3. Wait for session timeout.
        4. Count the number of sessions again for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*1) will become dead. <--- EXPECTED
          (EAP 7.2.5) The session (*1) will become dead. <--- EXPECTED

      2. Test 2
        1. Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*2)
        2. Count the number of sessions for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          
        3. Stop node1 before reaching session timeout.
        4. Wait for session timeout.
        5. Count the number of sessions again for node2.
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*2) will be live even after it is timed out.
          (EAP 7.2.5) The session (*2) will be live even after it is timed out.

      3. Test 3
        1. Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*3)
        2. Count the number of sessions for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          
        3. Stop node1 before reaching session timeout.
        4. Start node1 before reaching session timeout. ..... (*A)
        5. Wait for session timeout.
        6. Count the number of sessions again for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*3) will be live even after it is timed out. <--- NOT EXPECTED
          (EAP 7.2.5) The session (*3) will become dead. <--- EXPECTED

      4. Test 4
        1. Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*4-1)
        2. Count the number of sessions for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          
        3. Stop node1 before reaching session timeout.
        4. Wait for session timeout.
        5. Access node2 ( http://localhost:8180/jboss-helloworld/HelloWorld ) from the same browser. ..... (*4-2)
        6. Count the number of sessions again for node2.
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*4-1) will become dead and a new session (*4-2) will be created. <--- EXPECTED
          (EAP 7.2.5) The session (*4-1) will become dead and a new session (*4-2) will be created. <--- EXPECTED

        7. Wait for session timeout.
        8. Count the number of sessions again for node2.
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*4-2) will become dead. <--- EXPECTED
          (EAP 7.2.5) The session (*4-2) will become dead. <--- EXPECTED

      5. Test 5
        1. Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*5-1)
        2. Count the number of sessions for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          
        3. Stop node1 before reaching session timeout.
        4. Start node1 before reaching session timeout. ..... (*A)
        5. Wait for session timeout.
        6. Count the number of sessions again for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*5-1) will be live even after it is timed out. <--- NOT EXPECTED
          (EAP 7.2.5) The session (*5-1) will become dead. <--- EXPECTED

        7. Access node2 ( http://localhost:8180/jboss-helloworld/HelloWorld ) from the same browser. ..... (*5-2)
          (EAP 7.0.0) The session (*5-1) will become dead and a new session (*5-2) will be created. <--- EXPECTED
          (EAP 7.2.5) A new session (*5-2) will be created. <--- EXPECTED
      6. Test 6
        1. Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*6)
        2. Count the number of sessions for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          
        3. Stop node1 before reaching session timeout.
        4. Wait for session timeout.
        5. Start node1 after reaching session timeout. ..... (*B)
        6. Count the number of sessions again for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*6) will be live even after it is timed out. <--- NOT EXPECTED
          (EAP 7.2.5) The session (*6) will become dead. <--- EXPECTED

      7. Test 7
        1. Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*7)
        2. Count the number of sessions for node1 and node2.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
          
        3. Stop node2 before reaching session timeout.
        4. Wait for session timeout.
        5. Count the number of sessions again for node1.
          $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
          

          (EAP 7.0.0) The session (*7) will become dead. <--- EXPECTED
          (EAP 7.2.5) The session (*7) will become dead. <--- EXPECTED

      Important Notes

      In EAP 7.2.5, SessionExpirationScheduler#schedule for the session key is called when starting node1 of (*A), so the session will successfully removed when it is timed out. Likewise, when starting node1 of (*B), SessionExpirationScheduler#schedule for the session key is called. In this case, the session has already been timed out, so it will immediately removed.

      At first glance, this behavior seems fine, but not in the situation with multiple sessions as the following test below.

      1. Create 10 sessions by accessing http://localhost:8080/jboss-helloworld/HelloWorld using curl_many.sh in helloworld_02534900.zip.
      2. Count the number of sessions for node1 and node2.
        $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
        $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
        
      3. Stop node1 before reaching session timeout.
      4. Start node1 before reaching session timeout. ..... (*C)
      5. Wait for session timeout.
      6. Count the number of sessions again for node1 and node2.
        $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey
        $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey
        

        (EAP 7.0.0) All 10 sessions will be live even after it is timed out. <--- NOT EXPECTED
        (EAP 7.2.5) Only 1 session will become dead. Remaining 9 sessions will be live even after they are timed out. <--- NOT EXPECTED

      In EAP 7.2.5, when starting node1 of (*C), SessionExpirationScheduler#schedule is called for only 1 session of 10 sessions. So, the 1 session will successfully be removed when it is timed out, but the remaining 9 sessions will not be removed.

      I think SessionExpirationScheduler#schedule should be called for all sessions.

      Show
      EAP 7.0.0 Setup EAP 7.0.0 cluster environment. $ mkdir /work2/test/EAP700 $ export WORK_DIR=/work2/test/EAP700 $ cd $WORK_DIR $ unzip /path/to/jboss-eap-7.0.0.zip $ mv jboss-eap-7.0 jboss-eap-7.0.0 $ export JBOSS_HOME=$WORK_DIR/jboss-eap-7.0.0 $ export PATH=$JBOSS_HOME/bin:$PATH $ add-user.sh --user admin --password password --silent $ cp -a jboss-eap-7.0.0/standalone node1 $ cp -a jboss-eap-7.0.0/standalone node2 // You may want to install byteman and setup using script.btm script here. // Start nodes. (node1) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node1 -Djboss.node.name=node1 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=0 (node2) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node2 -Djboss.node.name=node2 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=100 // Change log level. (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)" (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)" (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)" (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)" Deploy testcase. $ cd $WORK_DIR $ unzip /path/to/jboss-eap-7.0.0-quickstarts.zip $ cd jboss-eap-7.0.0.GA-quickstarts $ unzip /path/to/helloworld_02534900.zip $ cd helloworld_02534900 $ mvn clean package (node1) $ mvn wildfly:deploy -Dwildfly.port=9990 (node2) $ mvn wildfly:deploy -Dwildfly.port=10090 EAP 7.2.5 Setup EAP 7.2.5 cluster environment. $ mkdir /work2/test/EAP725 $ export WORK_DIR=/work2/test/EAP725 $ cd $WORK_DIR $ unzip /path/to/jboss-eap-7.2.5.zip $ mv jboss-eap-7.2 jboss-eap-7.2.5 $ export JBOSS_HOME=$WORK_DIR/jboss-eap-7.2.5 $ export PATH=$JBOSS_HOME/bin:$PATH $ add-user.sh --user admin --password password --silent $ cp -a jboss-eap-7.2.5/standalone node1 $ cp -a jboss-eap-7.2.5/standalone node2 // You may want to install byteman and setup using script.btm script here. // Start nodes. (node1) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node1 -Djboss.node.name=node1 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=0 (node2) $ standalone.sh -Djboss.server.base.dir=$WORK_DIR/node2 -Djboss.node.name=node2 --server-config standalone-ha.xml -Djboss.socket.binding.port-offset=100 // Change log level. (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)" (node1) $ jboss-cli.sh --controller=localhost:9990 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)" (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/logger=org.wildfly.clustering.web.infinispan:add(level=TRACE)" (node2) $ jboss-cli.sh --controller=localhost:10090 --connect --command="/subsystem=logging/console-handler=CONSOLE:change-log-level(level=ALL)" Deploy testcase. $ cd $WORK_DIR $ unzip /path/to/jboss-eap-7.2.0-quickstarts.zip $ cd jboss-eap-7.2.0.GA-quickstarts $ unzip /path/to/helloworld_02534900.zip $ cd helloworld_02534900 $ mvn clean package (node1) $ mvn wildfly:deploy -Dwildfly.port=9990 (node2) $ mvn wildfly:deploy -Dwildfly.port=10090 Test Test 1 Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*1) Count the number of sessions for node1 and node2. (You can use count_sessions.sh in helloworld_02534900.zip.) $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Wait for session timeout. Count the number of sessions again for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) The session (*1) will become dead. <--- EXPECTED (EAP 7.2.5) The session (*1) will become dead. <--- EXPECTED Test 2 Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*2) Count the number of sessions for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Stop node1 before reaching session timeout. Wait for session timeout. Count the number of sessions again for node2. $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) The session (*2) will be live even after it is timed out. (EAP 7.2.5) The session (*2) will be live even after it is timed out. Test 3 Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*3) Count the number of sessions for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Stop node1 before reaching session timeout. Start node1 before reaching session timeout. ..... (*A) Wait for session timeout. Count the number of sessions again for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) The session (*3) will be live even after it is timed out. <--- NOT EXPECTED (EAP 7.2.5) The session (*3) will become dead. <--- EXPECTED Test 4 Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*4-1) Count the number of sessions for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Stop node1 before reaching session timeout. Wait for session timeout. Access node2 ( http://localhost:8180/jboss-helloworld/HelloWorld ) from the same browser. ..... (*4-2) Count the number of sessions again for node2. $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) The session (*4-1) will become dead and a new session (*4-2) will be created. <--- EXPECTED (EAP 7.2.5) The session (*4-1) will become dead and a new session (*4-2) will be created. <--- EXPECTED Wait for session timeout. Count the number of sessions again for node2. $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) The session (*4-2) will become dead. <--- EXPECTED (EAP 7.2.5) The session (*4-2) will become dead. <--- EXPECTED Test 5 Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*5-1) Count the number of sessions for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Stop node1 before reaching session timeout. Start node1 before reaching session timeout. ..... (*A) Wait for session timeout. Count the number of sessions again for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) The session (*5-1) will be live even after it is timed out. <--- NOT EXPECTED (EAP 7.2.5) The session (*5-1) will become dead. <--- EXPECTED Access node2 ( http://localhost:8180/jboss-helloworld/HelloWorld ) from the same browser. ..... (*5-2) (EAP 7.0.0) The session (*5-1) will become dead and a new session (*5-2) will be created. <--- EXPECTED (EAP 7.2.5) A new session (*5-2) will be created. <--- EXPECTED Test 6 Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*6) Count the number of sessions for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Stop node1 before reaching session timeout. Wait for session timeout. Start node1 after reaching session timeout. ..... (*B) Count the number of sessions again for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) The session (*6) will be live even after it is timed out. <--- NOT EXPECTED (EAP 7.2.5) The session (*6) will become dead. <--- EXPECTED Test 7 Create a session by accessing http://localhost:8080/jboss-helloworld/HelloWorld from a browser. ..... (*7) Count the number of sessions for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Stop node2 before reaching session timeout. Wait for session timeout. Count the number of sessions again for node1. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey (EAP 7.0.0) The session (*7) will become dead. <--- EXPECTED (EAP 7.2.5) The session (*7) will become dead. <--- EXPECTED Important Notes In EAP 7.2.5, SessionExpirationScheduler#schedule for the session key is called when starting node1 of (*A), so the session will successfully removed when it is timed out. Likewise, when starting node1 of (*B), SessionExpirationScheduler#schedule for the session key is called. In this case, the session has already been timed out, so it will immediately removed. At first glance, this behavior seems fine, but not in the situation with multiple sessions as the following test below. Create 10 sessions by accessing http://localhost:8080/jboss-helloworld/HelloWorld using curl_many.sh in helloworld_02534900.zip. Count the number of sessions for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey Stop node1 before reaching session timeout. Start node1 before reaching session timeout. ..... (*C) Wait for session timeout. Count the number of sessions again for node1 and node2. $ jmap -histo:live <pid_of_node1> | grep SessionAttributesKey $ jmap -histo:live <pid_of_node2> | grep SessionAttributesKey (EAP 7.0.0) All 10 sessions will be live even after it is timed out. <--- NOT EXPECTED (EAP 7.2.5) Only 1 session will become dead. Remaining 9 sessions will be live even after they are timed out. <--- NOT EXPECTED In EAP 7.2.5, when starting node1 of (*C), SessionExpirationScheduler#schedule is called for only 1 session of 10 sessions. So, the 1 session will successfully be removed when it is timed out, but the remaining 9 sessions will not be removed. I think SessionExpirationScheduler#schedule should be called for all sessions.

      In cluster environment, if we shutdown the node in which a session is created, the session continues to remain even after it is timed out. Of course, by accessing with the same session id, the session which is remaining and already timed out will become dead. However, all sessions are not necessarily accessed again after session failover. It looks memory leak especially when the number of such remaining sessions is large.

      This issue can be reproduced in EAP 7.0.0 which the user is currently using. It can also be reproduced in EAP 7.2.5 in the situation with multiple sessions.

              pferraro@redhat.com Paul Ferraro
              pferraro@redhat.com Paul Ferraro
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: