transaction has taken too long

Hallo,

I have got the following exception which comes up only sometimes.

Nested Exception (com.softwareag.tamino.db.API.common.TAccessFailureException, tag: $Name: JavaTaminoAPI_2_1_0_39 $) stacktrace:

Tamino access failure (INOXYE9291, Transaction aborted because it has taken too long)
at com.softwareag.tamino.db.API.accessor.TAccessFailureVerifier.newAccessFailureException(Unknown Source)
at com.softwareag.tamino.db.API.accessor.TAccessFailureVerifier.verify(Unknown Source)
at com.softwareag.tamino.db.API.accessor.TAccessFailureVerifier.verifyQueryResponse(Unknown Source)
at com.softwareag.tamino.db.API.accessor.TXMLObjectAccessorImpl.query(Unknown Source)
at com.softwareag.tmb.server.tmdb.BaseTaminoAccess.read(BaseTaminoAccess.java:245)


I have not found out the rule to reproduce it yet. There is no concurrent access.
Has anybody an idea what could be the problem?

Thanks in advance
Pascal Sch

INOXYE9291 is documented in the online documentation. The documentation mentions an explicit transaction timeout (Properties->Server->maximum transaction duration) and also the number of XML work threads (Properties->XML->XML work threads). For long running queries there is a server setting “XML maximum query duration”.

The problem is that the query is very simple and the amount of data is very small. That’s why a timeout should not appear in this case.
By the way, I forgot to say that I have got this problem only in combination with transaction.

Here is a code snippet:
TConnection inoConnection;
// get connection

tran = inoConnection.useLocalTransactionMode();

// do the query
TXMLObjectAccessor accessor = tcon.newXMLObjectAccessor(
TAccessLocation.newInstance(“collection”), TDOMObjectModel.getInstance());
TResponse res = accessor.query(TQuery.newInstance(query));

→ exception

I would be very much surprised if you got this exception outside of a transaction! :slight_smile:

What are the values of the following for the database concerned (under Properties)? Does the exception happen quickly or slowly? I.e. is it immediate or after some time?

Server.maximum transaction duration
Server.non-activity timeout

XML.XML work threads
XML.XML maximum sessions
XML.XML maximum query duration

The exception happens very quickly, at most a second.

The properties are all default for few users:

XML work threads : 10
XML maximum sessions: 100
XML maximum query duration 300 seconds (dynamic)
Server maximum transaction duration: 300 seconds
Server non-activity timeout: 900 seconds

Hi Pascal,

please provide the complete XML representation of the exception. You can get it from a TException object by calling getXMLMessage().

Greetings,
Oliver Kleber

Here you are the complete XML representation of the exception:

<?xml version="1.0"?>
com.softwareag.tamino.db.API.accessor.TAccessFailureVerifier.verifyQueryResponse(Unknown Source)com.softwareag.tamino.db.API.accessor.TXMLObjectAccessorImpl.query(Unknown Source)com.softwareag.tmb.server.tmdb.BaseTaminoAccess.read(BaseTaminoAccess.java:245)com.softwareag.tmb.server.tmdb.BaseTaminoAccess.query(BaseTaminoAccess.java:776)com.softwareag.tmb.server.tmdb.BaseTaminoAccess.queryDoc(BaseTaminoAccess.java:796)com.softwareag.tmb.server.sync.SyncAccessINOImpl.getSyncData(SyncAccessINOImpl.java:120)com.softwareag.tmb.server.sync.SyncHandlerImpl.getData(SyncHandlerImpl.java:451)com.softwareag.tmb.server.sync.SyncServer.handleDownload(SyncServer.java:539)com.softwareag.tmb.server.sync.SyncServer.clientToServer(SyncServer.java:219)com.softwareag.tmb.server.sync.SyncServer.clientToServerHandler(SyncServer.java:122)upload1050344315501.dataIn_State1_action0.exec(dataIn_State1_action0.java:17)com.covigo.flow.action.ProxyAction.exec(ProxyAction.java:43)com.covigo.flow.action.ListAction.exec(ListAction.java:49)com.covigo.flow.controller.DefaultController.exec(DefaultController.java:48)com.covigo.flow.Manager.exec(Manager.java:80)com.covigo.sync.FlowManagerImpl.processObjects(FlowManagerImpl.java:116)com.covigo.sync.SyncManager.processObjects(SyncManager.java:364)com.covigo.sync.SyncManager.exec(SyncManager.java:207)sync.doPost(sync.java:137)javax.servlet.http.HttpServlet.service(HttpServlet.java:142)javax.servlet.http.HttpServlet.service(HttpServlet.java:103)com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:82)com.caucho.server.http.Invocation.service(Invocation.java:273)com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:128)com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)com.caucho.server.TcpConnection.run(TcpConnection.java:140)java.lang.Thread.run(Thread.java:479)Tamino access failure (INOXYE9291, Transaction aborted because it has taken too long)9291INOXYE9291Transaction aborted because it has taken too longcom.softwareag.tamino.db.API.accessor.TAccessFailureVerifier.newAccessFailureException(Unknown Source)com.softwareag.tamino.db.API.accessor.TAccessFailureVerifier.verify(Unknown Source)com.softwareag.tamino.db.API.accessor.TAccessFailureVerifier.verifyQueryResponse(Unknown Source)com.softwareag.tamino.db.API.accessor.TXMLObjectAccessorImpl.query(Unknown Source)com.softwareag.tmb.server.tmdb.BaseTaminoAccess.read(BaseTaminoAccess.java:245)com.softwareag.tmb.server.tmdb.BaseTaminoAccess.query(BaseTaminoAccess.java:776)com.softwareag.tmb.server.tmdb.BaseTaminoAccess.queryDoc(BaseTaminoAccess.java:796)com.softwareag.tmb.server.sync.SyncAccessINOImpl.getSyncData(SyncAccessINOImpl.java:120)com.softwareag.tmb.server.sync.SyncHandlerImpl.getData(SyncHandlerImpl.java:451)com.softwareag.tmb.server.sync.SyncServer.handleDownload(SyncServer.java:539)com.softwareag.tmb.server.sync.SyncServer.clientToServer(SyncServer.java:219)com.softwareag.tmb.server.sync.SyncServer.clientToServerHandler(SyncServer.java:122)upload1050344315501.dataIn_State1_action0.exec(dataIn_State1_action0.java:17)com.covigo.flow.action.ProxyAction.exec(ProxyAction.java:43)com.covigo.flow.action.ListAction.exec(ListAction.java:49)com.covigo.flow.controller.DefaultController.exec(DefaultController.java:48)com.covigo.flow.Manager.exec(Manager.java:80)com.covigo.sync.FlowManagerImpl.processObjects(FlowManagerImpl.java:116)com.covigo.sync.SyncManager.processObjects(SyncManager.java:364)com.covigo.sync.SyncManager.exec(SyncManager.java:207)sync.doPost(sync.java:137)javax.servlet.http.HttpServlet.service(HttpServlet.java:142)javax.servlet.http.HttpServlet.service(HttpServlet.java:103)com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:82)com.caucho.server.http.Invocation.service(Invocation.java:273)com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:128)com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)com.caucho.server.TcpConnection.run(TcpConnection.java:140)java.lang.Thread.run(Thread.java:479)


Regards
Pascal Sch

Hi Pascal,

this does not look like a simple kind of wrong usage of the Java API to me.
The transaction timeout error message comes from the Tamino server. But you said, that your query is simple and the amount of data is small. So there has to be another reason.
Possible causes may be:

- Another older transaction could not be finished and for any reason you get this error during your query execution. Did you use this connection before for any access?
- Your application runs in a servlet. Are there other servlets running in parallel?
- A real problem in the Tamino server.
- …

Did you any special settings for the transaction session parameters in the TConnection?

Regards,
Oliver Kleber