A typical request to a software system is handled by multiple subsystems, many of which might be distinct servers residing on distinct hosts and locations. Tracing the request flow on distributed systems can be challenging, as log messages are scattered across various systems and intermingled with messages for other requests. To make this easier, a correlation ID can be assigned to a request, which is then added to every associated operation as the request flows through the larger system. The correlation ID allows related log messages to be easily located and grouped. The server supports correlation IDs for all HTTP requests received through its HTTP(S) Connection Handler.
When a HTTP request is received, it is automatically assigned a correlation ID. This
ID can be used to correlate HTTP responses with messages recorded to the HTTP
Detailed Operation log and the trace log. For specific web APIs, the correlation
ID can also be passed to the LDAP subsystem. For the SCIM 1, Delegated Admin,
Consent, and Directory REST APIs, the correlation ID will also appear with
associated requests in LDAP logs in the correlationID
key. The
correlation ID is also used as the default client request ID value in Intermediate
Client Request Controls used by the SCIM 2, Consent, and Directory REST APIs.
Values related to the Intermediate Client Request Control appear in the LDAP logs
in the via
key, and are forwarded to downstream LDAP servers when
received by the PingDirectoryProxy server. The
correlation ID header is also added to requests forwarded by the PingDataGovernance gateway.
For Server SDK extensions that have access to the current HttpServletRequest, the
current correlation ID can be retrieved as a string through the
HttpServletRequest's
com.pingidentity.pingdata.correlation_id
attribute. For
example:
(String) request.getAttribute("com.pingidentity.pingdata.correlation_id");