Troubleshooting
Problem
CPD3E34 DDM TCP/IP communications error occurred on poll() - Poll event received in the JOBLOG of a job that is attempting to establish a DDM or DRDA connection.
Symptom
CPD3E34 DDM TCP/IP communications error occurred on poll() - Poll event received in the job log of a job that is attempting to establish a DDM or DRDA connection.
Cause
The error occurs when TCP/IP SYN packets are sent from the source IBM i, but a response is never received.
Environment
Applications making DDM or DRDA connections.
Diagnosing The Problem
The following message can be returned in a DDM or DRDA connection after 180 seconds (3 minutes):
CPD3E34 Diagnostic 40 08/31/23 16:53:43.670111 QRWXDLL QSYS *STMT QRWXDLL QSYS
From module . . . . . . . . : QRWXDLL
From procedure . . . . . . : SndCPD3Exx__FPV7QRWERCBiPi
Statement . . . . . . . . . : 30
To module . . . . . . . . . : QRWXDLL
To procedure . . . . . . . : SndCPD3Exx__FPV7QRWERCBiPi
Statement . . . . . . . . . : 30
Message . . . . : DDM TCP/IP communications error occurred on getsockname()
- Get sock name.
Cause . . . . . : Error code (errno) 3447 was received while processing the
getsockname() - Get sock name function for DRDA/DDM TCP/IP communications.
Recovery . . . : See any previously listed message(s) to determine the
cause of the error; if necessary, correct the error and issue the request
again.
The above example was taken from a v7r4m0 system. The same error, but on poll(), may occur on earlier releases.
The error occurs when TCP/IP SYN packets are sent from the source IBM i, but a response is never received. If this condition lasts longer than the DDM connect() time, the connection will fail and a CPD3E34 error is received.
Resolving The Problem
Undocumented environment Variable QIBM_DRDADDM_CNN_TIMEOUT allows modification of the poll() timeout value. This environment variable specifies the amount of time in seconds to that poll() is to wait before returning. If the value of timeout is 0, poll() will return immediately. If the value of timeout is -1, poll() will block until a requested event occurs or until the call is interrupted. Any value less than -1 will return a CPE3021.
On a v730 system, the default timeout value for poll() is 5 seconds.
On a v730 system, the default timeout value for poll() is 5 seconds.
At v740, the default value was changed to 180 seconds.
It is suggested to add QIBM_DRDADDM_CNN_TIMEOUT as a system (*SYS) environment variable, so that it will be set for all jobs using DDM/DRDA.
Syntax:
It is suggested to add QIBM_DRDADDM_CNN_TIMEOUT as a system (*SYS) environment variable, so that it will be set for all jobs using DDM/DRDA.
Syntax:
ADDENVVAR ENVVAR('QIBM_DRDADDM_CNN_TIMEOUT') VALUE(10) LEVEL(*SYS)
The recommended value is 10 (10 seconds).Restart the job to pick up the change to the *SYS level environment variable.
With QIBM_DRDADDM_CNN_TIMEOUT set, TCP/IP will poll for the specified time before CPD3E34 is posted to the job log.
[{"Type":"MASTER","Line of Business":{"code":"LOB57","label":"Power"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m0z0000000CRKAA2","label":"Data Access-\u003EDDM DRDA"}],"ARM Case Number":"TS013955926","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
19 September 2023
UID
nas8N1019970