Uploaded image for project: 'OpenIDM'
  1. OpenIDM
  2. OPENIDM-5438

Infinite loop within Restlet 2.1.2 library when using ExternalRest over SSL

    Details

      Description

      When using the External Rest Service to communicate with a REST endpoint over SSL, repeated requests against the external service often result in OpenIDM consuming 100% and a infinite loop being triggered within the bundled Restlet library.

      The problem can be reproduced as follows:
      1. Configure a OpenIDM cluster w/MSQL Repository, JDK 7 and CentOS 6.7
      2. Add the attached `test` endpoint to both nodes
      3. Install the Javascript version of the customendpoint sample to both nodes
      4. Invoke the `test` endpoint repeatedly against both nodes. I ran the following request within a loop in two separate terminal windows.

      curl -k -X GET -H "X-OpenIDM-Username: anonymous" -H "X-OpenIDM-Password: anonymous" https://{HOSTNAME}:8443/openidm/endpoint/test
      

      Note that after a small number of requests are processed the clients hang. On the server you will observe the CPU usage spike as a result of 1-2 JVM threads which are consuming all of the CPU and appear to be looping within Restlet code.

      The issue appears to be caused by Restlet Issue #805.

      Upgrading the version of Restlet we ship with OpenIDM to v2.2.1 or above appears to resolve the issue.

        Attachments

        1. endpoint-test.json
          0.1 kB
        2. test.js
          0.3 kB

          Issue Links

            Activity

              People

              • Assignee:
                cgdrake Chris Drake
                Reporter:
                cgdrake Chris Drake
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: