CA Gen: .NET Proxy User Exit TCPIPDynamicCoopFlowExit.cs
search cancel

CA Gen: .NET Proxy User Exit TCPIPDynamicCoopFlowExit.cs

book

Article ID: 13956

calendar_today

Updated On:

Products

Gen Gen - Run Time Distributed

Issue/Introduction

The errors that are captured in the exit are difficult to test. To validate that the exit is working as expected, is there a way to capture the message text when a transaction is disabled and validate that the exit does the number of retries expected?

1. Here's the message that's returned when executing the test harness: 

Invoking 'TestSvr8::Execute(imports)' method. 

'TestSvr8::Execute(imports)' FAILED with exception: 

OdcCommException: Error: [Function: CFBDynamicMessage::parseForCommError]Received peer communication error: 729 : 

at com.ca.gen.odc.coopflow.CoopFlow.PerformFlow(ITranEntry tran, IImportWrapper impWrapper, IExportWrapper expWrapper) 

at dotnet1.TestSvr8.Execute(TestSvr8Import importView, String comCfg) 

at ProxyTestApplication.DoExecute() 

2. TCPIPDynamicCoopFlowExit.cs - this is the exit source code that appears to capture this error. It is not executing the retries because the SYSM messages for the CICS region, the TISRVLIS has only written one set of messages for the test harness execution. It is expected to see these two messages repeated for the number of retries coded in the exit. The exit is coded to retry 5 times. 

TISRVLIS TISN TASK=00000080 03/17/2017 07:10:06 CICS INQUIRE TRANSID NOT ENABLED FOR SERVER TRANSACTION SVR8

TISRVLIS TISN TASK=00000080 03/17/2017 07:10:06 CICS ERROR, RESPONSE=00000000, RESP2=00000000 

 

How can this exit be modified to capture this error so that it can go through the retry logic? 

Resolution

The Retry for condition connection reset by peer (10054) occurs when the server starts successfully but terminates before sending a response. Usually, this means an abnormal termination - i.e. an ABEND. 

Any familiar method can be used to trigger the abnormal end: 

1.  Add an EAB (External Action Block) that causes an ABEND

2.  Remove one of the programs called by the server (if Dynamic calls are used between Action Blocks, remove one of them from the CICS definition so it cannot be loaded - like a CEE 4038 error). 

3.  Run the server under CEDX and abnormally terminate the transaction (usually PF12) before it sends the response. 

4.  Use CEMT and Purge or Force Purge the server (this is hard because often the servers terminate before the Purge can be issued).