Identity Manager Auditing SocketTimeoutException with client: DirXML error

  • 7006951
  • 29-Sep-2010
  • 26-Apr-2012

Environment

Novell Identity Manager 3.6.1
Novell Identity Manager Engine

Situation

With Identity Manager Auditing, logging is working however, I see the following error in the nproduct.log: "SocketTimeoutException with client: DirXML". The events are still being logged even though we see the error, so not sure what the implications of the error are, but we should figure out the cause of it.

Resolution

After investigation, "SocketTimeoutException with client: DirXML" message is
not a harmful message, just a informational message generated from
NAuditPA.jar/ClientConnection.java.

In summary, currently when user application starts up, it calls
NauditAppender.java which instantiate a new instance of
com.novell.naudit.LogEvent.java, then it references to
com.novell.naudit.logevent.LogEvent.logOpen -> prepareCache() -> logLoadCache()
-> com.novell.naudit.lcache.LCache -> which starts cache socket and
initantiates the ClientConnection.java.

The error message happens on code segment:

try
{
    cmd = Util.getBEInt(in.readInt());
}
catch(SocketTimeoutException ste)
{
    Log.log("jlcache",  "SocketTimeoutException with client: " + appName);
    // Since we timed out go back and try again.
    continue;
}

What this does is that cache socket is waiting for cache client
(ClientConnection.java) to input something, and in.readInt() is waiting for 3
minutes (INITIAL_TIMEOUT = 180000 (180 seconds)) to timeout, so next wait will
happen.

In the situation that NAuditPA.jar is able to connect audit server, then LCache
is not used, however, since LCache socket is already started during server
startup, the socket is still waiting for cache client (ClientConnection.java)
to input something, if nothing is input in 3 minutes, it will log "
"SocketTimeoutException" message on the console.

In the situation that NAuditPA.jar is not able to connect to audit server, then
LCache is used, because log information is being stored to locale cache. Now
in.readInt() is fed with something (in my test case, it is fed with 'V'
LE_CMD_EVENT_EXT), then you don't see this "SocketTimeoutException" printed on
the console. After socket accepts the input, and it continues to wait for next
input, if nothing is fed again, it will print "SocketTimeoutException" again
upon 3 minutes timeout.

Note: NAuditPA.jar references to "Novell Audit Platform Agent".

From above, we can tell that the "SocketTimeoutException" message is not
harmful and just informational message.