dxcmd terminates unexpectedly with error 143 when executing large queries

  • 7022430
  • 05-Dec-2017
  • 05-Dec-2017

Environment

eDirectory 8.8.8.x
eDirectory 9.0.x
Identity Manager 4.5
Identity Manager 4.6

Situation

When executing the following command: 
dxcmd -user admin.sa.system -password password -sendevent 'driver.driverset1.system' /root/query.xml /root/output.log

if the query submitted takes over 2 minutes to complete, the process fails with error 143 and no result file is generated.

Resolution

Increase the timeout value by setting the environment variable NCPCLIENT_REQ_TIMEOUT to a number of seconds larger than the total time the query takes.
Setting the environment variable permanently for dxcmd can be accomplished by adding export NCPCLIENT_REQ_TIMEOUT=value to the dxcmd script /opt/novell/eDirectory/bin/dxcmd. 
It is also possible to set the variable manually in the terminal from which the script is being executed by executing export NCPCLIENT_REQ_TIMEOUT=value prior to executing dxcmd.
Alternatively the variable can be set as user or system variable depending on the use case.

Cause

By default a NCP connection has a timeout of 115 seconds. If the total time of the query plus returning results exceeds that value, dxcmd exits with error 143. By setting the NCPCLIENT_REQ_TIMEOUT to a larger value (for example 1200), you increase the amount of time that the operations is allowed to use to complete. Since the value is in seconds, a setting of 1200 would allow the operation to take up to 20 minutes.

Additional Information

The command:

dxcmd -sendevent <driver dn> <input filename>

   
submits a document to the driver’s Subscriber channel, bypassing the driver cache. The document gets processed ahead of anything that might be in the cache at the time of the submission. The submission will fail if the driver is not running.