Author Message
VasilyL

Joined: Jul 11, 2016
Messages: 200
Offline
Hi Gurus,
Seems that I really need your help with investigation of some strange situation.
I am faced with something similar lake that https://www.devconnectprogram.com/forums/posts/list/17281.page#p70297

In short:
1. I have a Main IVR.
2. I have a Module which I use in Main IVR.
3. Module makes a request to a REST web service. I make it via Java code in Servlet (I do not use in this app REST Connector). Timeout to request is set to 15 seconds.
4. Web service does not provide an answer in 15 seconds. In Module I have special code to process such behavior but in reality the code does not work.
5. In trace.log I receive error.badfetch BUT in Main IVR. And all the processing of an error in Main IVR.
6. In trace.log Then I receive "AxisFault: Read timed out"(seems that 15 seconds had gone) from the Module and then "Capturing exception [java.lang.NullPointerException]. Message [null] " from the module right after timeout.

In the catalina.out I have several errors.
************************************************************************************************************
Request is invalid sessionid [E1C69F22ADD5871F5E458F6AF0FFCCC0:/RSHB_CallSteering] class [flow.JAVA_OCRM_GetApplicationByPhone] and saved class name [flow.TRANSF_ErrorHandler is -> false
Request is invalid sessionid [E1C69F22ADD5871F5E458F6AF0FFCCC0:/RSHB_CallSteering] class [flow.JAVA_OCRM_GetApplicationByPhone] and saved class name [flow.TRANSF_ErrorHandler is -> false
*** Abandoning thread sessionid [E1C69F22ADD5871F5E458F6AF0FFCCC0:/RSHB_CallSteering], request invalid AppServlet, ignore trace above
*** Abandoning thread sessionid [E1C69F22ADD5871F5E458F6AF0FFCCC0:/RSHB_CallSteering], request invalid AppServlet, ignore trace above
Request is invalid sessionid [E1C69F22ADD5871F5E458F6AF0FFCCC0:/RSHB_CallSteering] class [flow.Start] and saved class name [flow.TRANSF_ErrorHandler is -> false
Request is invalid sessionid [E1C69F22ADD5871F5E458F6AF0FFCCC0:/RSHB_CallSteering] class [flow.Start] and saved class name [flow.TRANSF_ErrorHandler is -> false
***** Saw exception, tracing before report
java.lang.NullPointerException
at ocrmws.GetApplicationByPhone.getApplicationByPhoneWS(GetApplicationByPhone.java:185)
at ocrmws.GetApplicationByPhone.run(GetApplicationByPhone.java:198)
at flow.JAVA_OCRM_GetApplicationByPhone.servletImplementation(JAVA_OCRM_GetApplicationByPhone.java:81)

************************************************************************************************************

So, my assumption: in Main IVR for some reason I have fetch timeout 15 seconds (I do not know what is the default value for that timeout) and it happens several milliseconds earlier than the Axis timeout in the Module.
That's why I do not have a proper processing of axis timeout in Module but error.badfetch in Main IVR. And after bad fetch the session is invalidated and threads in Module are not valid anymore.
And that's why I see errors in catalina.out
Abandoning thread sessionid....
Request is invalid sessionid....


Can you please tell me If I correctly understand the situation?

If yes, then how I can check and set the default fetch timeout while using Module?

My brain is burning ... please tell me if I right or not... ?

Thanks in advance!
WilsonYu

Joined: Nov 6, 2013
Messages: 3910
Offline
Same as the other post that you've found. First you need to bump up the fetchtimeout. You can do it using the property in the AppRoot node or the form node right before the WS is called. Or you can set the default for the voice browser in EPM.
VasilyL

Joined: Jul 11, 2016
Messages: 200
Offline
Hi, thanks for a reply.

Once again, to avoid misunderstanding.
I have a Main IVR_Main which uses a module IVR_GetPay. The question is in appliance of fetchtimeout in different cases.
1. If I set the fetchtimeout in AppRoot of IVR_Main then it will be a global value for all modules as well?
2. If I set the fetchtimeout in AppRoot of module IVR_GetPay then the value of fetchtineout will be used inside IVR_GetPay only with out affecting IVR_Main?

I want to understand if I need to change the fetchtimeout for one specific web service invocation without affecting all others what is the best way: to set fetchtimeout before ws invocation and set it back after?

Thanks in advance!
Vasily.
WilsonYu

Joined: Nov 6, 2013
Messages: 3910
Offline
1. If I set the fetchtimeout in AppRoot of IVR_Main then it will be a global value for all modules as well?
Yes
2. If I set the fetchtimeout in AppRoot of module IVR_GetPay then the value of fetchtineout will be used inside IVR_GetPay only with out affecting IVR_Main?
It will affect the whole application including the modules

I want to understand if I need to change the fetchtimeout for one specific web service invocation without affecting all others what is the best way: to set fetchtimeout before ws invocation and set it back after?

I suggest change it in the node. You don't need to set it back manually. It is automatic.
Go to:   
Mobile view