Author Message
chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
Hi

I have the problem when DD app connect to the web service, the Com.avaya.sce.runtimecommon.SCERuntimeException will be catch.
Please give me any suggestion about this error.
THank you.
I post the log file in the Application Detail as below:-

Com.avaya.sce.runtimecommon.SCERuntimeException: Next servlet not provided in subflow exit point map for return node "null"
Variable Name:   Exception stack trace
Variable Value:   Error processing request EXCEPTION> com.avaya.sce.runtimecommon.SCERuntimeException: Next servlet not provided in subflow exit point map for return node "null" at com.avaya.sce.runtime.SubflowReturn.handleRequest(SubflowReturn.java:39) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.evaluateActions(Data.java:107) at flow.subflow.custverify.ChkSMCStatus.executeDataActions(ChkSMCStatus.java:101) at com.avaya.sce.runtime.Data.handleRequest(Data.java:73) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.evaluateActions(Data.java:107) at flow.subflow.custverify.ChkResult.executeDataActions(ChkResult.java:114) at com.avaya.sce.runtime.Data.handleRequest(Data.java:73) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.avaya.sce.runtime.SCEServlet.forward(SCEServlet.java:1001) at com.avaya.sce.runtime.Data.handleRequest(Data.java:94) at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:63) at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:197) at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595)
WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
It seems to be complaining about the exit point of the subflow is not pointing anywhere. When you have a subflow in the call flow, both ends need to connect to some nodes. Do you see any errors in the Problems tab in Eclipse that indicates a problem?
WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
I found out from the my colleague that this is error is probably caused by another app exception in the call flow. If you restart the app server, this error should go away. This is a known problem. We've fixed it for the next release.
chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
Hi

Thank you for your advice.

I have some questions as detail below:-
- what is the " another app exception in the call flow" that you posted?

- It correct that if I restart the App Server , everything will be fine. but I have to restart everyday it doesn't make sense. Could you have any suggestion about this ?


What is the release version that fix this problem ?

Best Regards,
Chukiat D.
WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
I was suggesting that you may have an exception prior to the one posted here. That exception triggers the corruption of the runtime call flow shown by the exception posted here, and only restarting the app server can recover from the corruption. So, you need to look into the log again to see if there is another exception. If this happens very often, the root cause should be traceable. You can send me the app's trace.log if you continue to struggle with finding the root cause. My email is wilsonyu@avaya.com.
chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
Hi

I have download the app log file. But the app log file is very big. I could not sent by email. Do you have the FTP server that I can put this trace log to you.

Besides, I would like to know that when the exception :
com.avaya.sce.runtimecommon.SCERuntimeException will occurs in IVR App ?

Now, the IVR app always out of sync with web service every day. I have to fix this problem by stop / start the IVR app in Tomcat Server .

Do you have any suggestion ?
Please advice.
Thank you.

Best Regards,
Chukiat D.
WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
The SCERuntimeException could occur anytime during the call where there is data or logic problem in the app that causes failure. Are you seeing other SCERuntimeException?

What does it mean that the app is out of sync with web service?

Since we are not in the support, group we don't have a public FTP server. Could you identify and extra couple of calls worth of the trace.log before the exception happens, and send that portion instead of the whole log file?
chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
"the app is out of sync with web service" is mean that
when it has more incoming, the IVR App try to request information with Web Service. The Com.avaya.sce.runtimecommon.SCERuntimeException
will always occur.

I have to stop / start the IVR App in the TOmcat Server.
And then IVR App will be able to commu. with Web Service.

Besides, I have replicate the IVR App to the IVR App1 .
When The Com.avaya.sce.runtimecommon.SCERuntimeException
will always occur in the IVR App. But the IVR App1 can communicate with web service without the Com.avaya.sce.runtimecommon.SCERuntimeException .

So this problem is the problem on the IVR app or Tomcat Session ?

Please advice.

THank you.

I check that IVR App is out of sync with Web service by
ErikJohnson2
Joined: Jan 18, 2006
Messages: 0
Offline
The exception:
Com.avaya.sce.runtimecommon.SCERuntimeException: Next servlet not provided in subflow exit point map for return node "null"

This should rarely, rarely, happen. It can only happen if an exception is thrown while a Subflow Return node is executing and the only way that can happen is if the application server (Tomcat) invalidates the Http request or response when the subflow return is processing the request.

The only time I've seen this happen is when the platform (VP/IR) throws an error.badfetch due to a timeout waiting for a response -- this results in a second HTTP request for the session which may invalidate the first request but it all depends on if/when Tomcat invalidates the first request.

So if you have database operations or webservice operations that may exceed the platform's default fetchtimeout, you should override that timeout setting by using a Properties item and setting a longer fetchtimeout on the VXML-producing node BEFORE the database/webservice operation. This will prevent the error if it were to happen again.
chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
Hi

Thank you for your suggestion.
So is it possible that I set the removeAbandoned="true" at the Application Server. (TOmcat Server).

<tomcat home folder>\conf\Catalina\localhost\<application name>.xml

will cause this problem issue ?

"This should rarely, rarely, happen. It can only happen if an exception is thrown while a Subflow Return node is executing and the only way that can happen is if the application server (Tomcat) invalidates the Http request or response when the subflow return is processing the request. "


Besides, Please help me to clarify how to using a Properties item and setting a longer fetchtimeout on the VXML-producing node BEFORE the database/webservice operation. ?

Best Regards,
ErikJohnson2
Joined: Jan 18, 2006
Messages: 0
Offline
removeAbandoned is for managing the database connection pool and is not related to DD.

To set the fetchtimeout property, you need to add a "Property" item to a VXML-generating node (Prompt & Collect, Announcement, Menu, etc.). Then in the Properties view you will see "Fetch timeout " You can set a timeout value there.

So, in your application, you will need to back up from the location of your webservice until you find the VXML generating node and then add the property and set a higher timeout value.

chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
Hi

Thank you.

What is the meaning of "you will need to back up from the location of your webservice until you find the VXML generating node and then add the property and set a higher timeout value" ?

Is it mean that I have to add the fetch time out into a VXML-generating node (Prompt & Collect, Announcement, Menu, etc.) in every subflow of IVR App ?

Please advice.

chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
Hi

Moreover, this IVR App start live run on production about 3 months. It is not have this problem happen.

It is just found this problem on 26 /10/2008.

chukiatdenkongpon
Joined: Nov 7, 2013
Messages: 97
Offline
Hi

Moreover, this IVR App start live run on production about 3 months. It is not have this problem happen.

It is just found this problem on 26 /10/2008.

ErikJohnson2
Joined: Jan 18, 2006
Messages: 0
Offline
No.
There are 2 "types" of nodes in DD:
Ones that produces VXML -- these are Prompt & Collect, Announcement, the Transfer items, Record, Form, Menu and any module.
Then there are "backend" nodes; or nodes that only execute on the application server. These nodes are Data, Tracking, Subflow invoke, Subflow Begin, Subflow Return. These nodes execute only on the application server and then forward the request to the next node in the flow.

So if your application does something like:
Prompt&Collect -> Data -> Data -> Tracking -> Data -> Data -> Tracking -> Subflow -> Data -> Annoucement.

Then to the platform (IR/VP) the only VXML it sees will be the VXML produced by the Prompt & Collect and by the last Annoucncement. All of the Data/Tracking, etc. nodes will be invisible to the platform and will execute and forward the request until a VXML producing node is encountered. The VXML node will produce the response to the request from the platform.

The issue is if you have multiple things that may take time (database, webservice, etc.) then if the time it takes for all of the nodes to execute exceeds the time the platform is configured to wait for a response, then you can get into a case where the platform gives up waiting, throws an "error.badfetch" event and then tries to handle it.

So in your app -- you will have to go back to the VXML producing node to add the timeout setting.

Regarding the app running -- the null error you see will rarely happen. You could probably even get away with not making any changes to your app -- it may take months before you have the same problem; in fact you may never see it again... it's all timing.
Go to:   
Mobile view