IBM Support

P8 4.0.x - Work items are not being processed from WSRequest(0) queue.

Troubleshooting


Problem

Process Task Manager showed WSRequest(0) adaptor's status as running, however work items are not being processed from the WSRequest(0) queue. As new work item arrives in the queue, the total count increases.

Cause

One of the work items is waiting for a response from the 3rd party web service. However, since the wsdl url was "bad", the work item did not timeout from WSRequest until 10 minutes later.

The wsinvoke.log showed the following exception.

2009.01.08 17:27:02.398 WS-Request[1] invoke
EndPoint=http://mycompany.com:443/mmpservice/utils/OutboundWorkflowService/servi…
PortType=OutboundWorkflowServiceImpl
Operation=execute
InputMsgName=executeRequest
OutputMsgName=executeResponse
WorkflowName=PruMmpSubmitResubmitBpm
WorkflowNumber=6D2EBA60DCF611DDA742969DD14D9F02
WorkObjectNumber=6D2EBA60DCF611DDA742969DD14D9F02
Initial InputMsg=<execute xmlns="http://webservice.workflow.3rdparty.com">CreateSubmissionEventServiceMMPX14755300002000010000100003F827EDB4-F9CD-30DB-F346-B8D187207528000010000100001Invoke(OutboundWorkflowService)
EXCEPTION=java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:865)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:742)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:863)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:742)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.ja…
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:403)
at filenet.ws.api.WSDefinition.init(WSDefinition.java:385)
at filenet.ws.api.wsrr.WSWSRRDefinition.<init>(WSWSRRDefinition.java:72)
at filenet.ws.api.wsrr.WSWSRRDefinition.getWSDefinition(WSWSRRDefinition.java:78)
at filenet.ws.api.WSDefinition.getWSDefinition(WSDefinition.java:2084)
at filenet.vw.integrator.adaptors.webservices.WSRequestOperation.getWSDLDefinition(WSRequestOperation.java:392)
at filenet.vw.integrator.adaptors.webservices.WSRequestOperation.getWSDLDefinition(WSRequestOperation.java:278)
at filenet.vw.integrator.adaptors.webservices.WSRequestOperation.getWSDLDefinition(WSRequestOperation.java:193)
at filenet.vw.integrator.adaptors.webservices.WSInvokeOperation.invoke(WSInvokeOperation.java:366)
at filenet.vw.integrator.adaptors.webservices.VWWebServicesAdaptor.run(VWWebServicesAdaptor.java:578)
at java.lang.Thread.run(Thread.java:570)
Fault=java.net.SocketException
Detail=myaeserver(48.140.153.136) java.net.SocketException Unexpected end of file from server
Status=3
WS-Request[1] invoke finished TOOK 640074m <== 10 minutes

Diagnosing The Problem

To troubleshoot, we can enable WSRequest trace in P8BPMWSBroker.properties.

Here are the steps:
1. On the AE server, bring up Process Task Manager.
2. Stop Component Integrator
3. Close Process Task Manager
4. Modify the P8BPMWSBroker.properties in <installed location>/Workplace/WEB-INF directory.

a. For tracing SOAP messages coming out of WS-Request in CM
filenet.ws.request.tracing=true
filenet.ws.request.tracefile=c\:\\wsinvoke.log
filenet.ws.request.tracefilesize=5000000

b. For tracing SOAP messages coming into P8BPMWSBroker servlet in Workplace
filenet.ws.listener.tracing=true
filenet.ws.listener.tracefile=c\:\\wsinvoke.log
filenet.ws.listener.tracefilesize=5000000

NOTE: We need to modify the tracefile destination, filenet.ws.request.tracefile, to point to a valid directory on the server.

5. Bring up Process Task Manager.
6. Start Component Integrator. to point to a valid path in the server.
7. Reproduce problem and forward the resulting trace.

Resolving The Problem

To fix the problem, correct the wsdl url and relaunch the workflow.

To minimize the impact in the future, the following changes can also be considered:

1. Reduce the timeout for WSRequest(0) adaptor. The value is set in the P8BPMWSBroker.properties from the default 10 minutes to 2 minutes. That way if an exception occur the work item will be send to the Malfunction sub map after 2 minutes instead of 10.

2. Increase the number of threads allowed to be started by the WSRequest adaptor. To do this go to the AE server bring up Process Task Manager -> Application Engine node -> Component Manager node -> Advanced tab, and find the setting "WS-Request Concurrent Threads." Set the number of threads here. The default is 1. This number can be increased for a system with multiple CPUs.

Additional info regarding WSRequest timeout values:

In general, invoking a 3rd party web service consists of the following:
* Retrieving the WSDL (it will be cached if it's a true 3rd party WSDL)
* Invoking the web service from the soap address.Timeout can be occurred in either while retrieving WSDL or invoking the web service method.

For P8 4.0:
1. The WSDL timeout setting is hardcoded to be 10 minutes unless the ReliableMessaging flag is enabled for the invoke, then the options that you're pointing out below can be modified accordingly.
filenet.wsrm.inactivity.timeout=600000
filenet.wsrm.inactivity.timeout.PE9=600000
The ReliableMessaging flag is originated from designer as the "useReliableMessaging" attribute in the invoke step. In the UI, there is a check box in the Invoke. It is unchecked by default. So by default, you would have a 10 minute-timeout for retrieving WSDL.
(600000 ms = 600 seconds = 5 minutes)

2. The Invoke timeout setting is controlled by synchronous.timeout property. This line must be added manually. If not specified, then the default 5 minutes is used. This property also controls the timeout for replying back to a 3rd party web service client calling into PE Web Service synchronously. What that means is that barring all other timeout on the connection, a PE web service should reply within 5 minutes or the value of synchronous.timeout to the caller.

For P8 3.5,
1. The WSDL timeout setting is hardcoded to be 3 minutes unless the system property filenet.ws.wsdl.timeout is specified for the Component Manager JRE properties. For example, to set the the WSDL timeout to be 5 minutes: -Dfilenet.ws.wsdl.timeout=300000
(300000 ms = 300 seconds = 5 minutes)

2. Same as #2 above for 4.0.

[{"Product":{"code":"SSTHRT","label":"IBM Case Foundation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Process Engine","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"},{"code":"PF016","label":"Linux"}],"Version":"4.0.3;4.0.2;4.0.1;4.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
17 June 2018

UID

swg21367606