Uploaded image for project: 'Jackrabbit JCR-RMI'
  1. Jackrabbit JCR-RMI
  2. JCRRMI-28

Leaking ServerEvent objects after RMI connection loss

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


    • Bug
    • Status: Patch Available
    • Major
    • Resolution: Unresolved
    • 1.6.0, 2.1.0
    • 1.6.0
    • None
    • Windows 7 Pro x64

      32Bit Java VM
      java version "1.6.0_20"
      Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
      Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)


      When an RMI connection is crashes, or the client is terminated without calling "session.logout()", the server leaks ServerEventCollection$ServerEvent objects.

      Attached is a zip with two java programs that demonstrate the behaviour. Steps to reproduce:

      • Open a cmd shell
      • cd jcrserver
      • mvn compile
      • SET MAVEN_OPTS=-Djava.rmi.dgc.leaseValue=10000 && mvn exec:java -Dexec.mainClass=RMIServer
      • Open another cmd shell
      • cd jcrrmiclient
      • mvn compile
      • mvn exec:java -Dexec.mainClass=RMIClient

      Watch the heap:

      • Start VisualVM (you'll need the VisualVM-Sampler plugin)
      • Go to the RMIServer process.
      • Open the "Sampler" tab and sample "Memory".
      • In the filter enter "ServerEvent".

      You'll now see the number of ServerEvents (also _Stub and _Skel) steadily increasing.

      • Quit the RMIClient using Ctrl-C.

      The number of ServerEvents is still increasing, even after the RMI lease time expires.

      If, instead of being killed, the client calls "session.logout()", the server stops producing new ServerEvent instances.



          This comment will be Viewable by All Users Viewable by All Users


            Unassigned Unassigned
            jenstheess Jens Theess



              Issue deployment