I am not sure this is the right place to place my question. Admin, please move it to right place.
We have configured 'CLOPT -T 02' in our ubb file in our appliction. Our application has two modules one is in Java which is basically front end gui and another is in 'c' which is back end.
Java module calls 'c' module using tuxedo. The scenario is that when we left java module idle for sometime (in above configuration it is 2 minutes) and then try to navigate then an error message appears on front end gui which is generic "TPESYSTEM - internal system error". We are not able to determine that the error is due to a timeout. We need to identify whether the error is because of timeout. Is there any interface through which timeout can be determined?
We are using Terrapin-1.4 to call tuxedo apis ( ATMI.tpcall(serviceName, fml, fml,0)). Our tuxedo version is 8.
I'm not sure sure what you are specifying with the -T 02 option as that is not a standard CLOPT. I'm guessing it is for the WSL? If so, that indicates how long the WSH will allow a workstation client to remain idle before disconnecting the connection. That may map to a TPESYSTEM in the WSL client libraries. You should probably call tpterm() and then tpinit() to reconnect to the WSL to recover the connection, although since you are using Terrapin (not an Oracle product), you should probably check with them as to how to recover from this error.
If in fact this is a -T 02 for the WSL, is there a reason you are timing out connections so quickly? Normally a workstation client stays connected for a period of time, and then terminates the connection with a tpterm(). If the front end GUI is a fat Java client and not an appserver, then I'd suggest increasing the timeout value, or add the recovery logic to handle a disconnection.
Oracle Tuxedo Chief Architect
I agree with Todd that for many applications a CLOPT value greater than -T 2 would be apprpriate so that clients do not time out unnecessarily.
If a TPESYSTEM does occur, the tperrordetail(0) API described at http://download.oracle.com/docs/cd/E13203_01/tuxedo/tux80/atmi/rf3c43.htm#1021798 can be useful in determining the cause of the error. If a workstation client has been disconnected from the application then tperroordetail(0) will return TPED_TERM, and if Jolt client has been disconnected from the application then tperrordetail(0) will return TPED_CLIENTDISCONNECTED.
If there is support for tperrordetail in the Terrapin front end you are using then this can help you to determine why a particular error occurred.
First of all thanx for your response. "CLOPT -T 02" is just an example. There are many clients that uses our application and as per their requirement they configure required timeout. The timeout configuration is even more than 10 minutes. The requirement is that when a user remains idle for more than timout configuration and then try to navigate gui then an error message corresponding to timout, something like "session expired", should be displayed to user. But I am not able to figure out the interface through which I can determine the timeout has occurred.
When anything clicked after timeout occured our java application calls "ATMI.tpcall(serviceName, fml, fml,0))" which respond with TuxError exception. The error number that is being returned is
"12" and error detail is "TPESYSTEM - internal system error".
I'm afraid there isn't much more we can help you with as your issue is with the Terrapin software which Oracle doesn't provide or support. Ed's description is the best available for how to determine what the cause of the TPESYSTEM error was, but how you do that with Terrapin is something you'll have to ask them, which may be difficult given that I can no longer find them on the web. If these are Java clients, then you could use Jolt or web services to access your Tuxedo services via SALT. Those would both be supported options. But I don't think there is much we can do to help you with Terrapin. Sorry.
Oracle Tuxedo Chief Architect