Isolation Level in Transaction

LabKey Support Forum (Inactive)
Isolation Level in Transaction bront  2014-11-11 03:59
Status: Closed
 
hi,

I am in the midst of deploying a custom Java module onto a development/test server, and I am getting the following error when I try to browse the schema or create queries:

"Cannot change transaction isolation level in the middle of a transaction."

I noticed an issue report that seems to address this.
https://www.labkey.org/issues/home/Developer/issues/details.view?issueId=21294

I've never seen this before. It occurs with both 14.1 and 14.2. We're using PostgreSQL 9.3.

Any suggestions?

Many thanks,

bront
 
 
jeckels responded:  2014-11-11 11:27
Hi Bront,

Is there a stack trace in the labkey.log file? It would help in determining if it's the same underlying scenario as issue 21294, or something unrelated.

Thanks,
Josh
 
adam responded:  2014-11-11 11:48
Yes, please share the stack trace to help us track down the underlying cause.

I added a workaround for this issue in 14.3, as part of the improvements documented in issue #20880. Once you move to 14.3 let us know if you still see the problem.

Adam
 
bront responded:  2014-11-11 11:49
Here's are a couple of recent errors...

Thanks,

bront


ERROR Table 2014-11-11 14:43:21,393 DavCrawler : SQL Exception
org.postgresql.util.PSQLException: Cannot change transaction isolation level in the middle of a transaction.
    at org.postgresql.jdbc2.AbstractJdbc2Connection.setTransactionIsolation(AbstractJdbc2Connection.java:940)
    at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
    at com.sun.proxy.$Proxy2.setTransactionIsolation(Unknown Source)
    at org.labkey.api.data.ConnectionWrapper.setTransactionIsolation(ConnectionWrapper.java:306)
    at org.labkey.core.dialect.PostgreSql84Dialect.configureToDisableJdbcCaching(PostgreSql84Dialect.java:1508)
    at org.labkey.api.data.ExecutingSelector$ExecutingResultSetFactory.getResultSet(ExecutingSelector.java:297)
    at org.labkey.api.data.BaseSelector.handleResultSet(BaseSelector.java:244)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:94)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:141)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:125)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:120)
    at org.labkey.search.model.SavePaths.getPaths(SavePaths.java:289)
    at org.labkey.search.model.DavCrawler.findSomeWork(DavCrawler.java:523)
    at org.labkey.search.model.DavCrawler$1.run(DavCrawler.java:490)
ERROR Table 2014-11-11 14:43:21,393 DavCrawler : SQL [31778]
    SELECT Path, LastCrawled, NextCrawl
    FROM search.CrawlCollections
    WHERE NextCrawl < ? AND (LastCrawled IS NULL OR LastCrawled < ?) ORDER BY NextCrawl
    LIMIT 100
    ?[1] Tue Nov 11 14:43:21 EST 2014
    ?[2] Tue Nov 11 14:21:00 EST 2014

    org.labkey.api.data.ExecutingSelector$ExecutingResultSetFactory.handleSqlException(ExecutingSelector.java:414)
    org.labkey.api.data.BaseSelector.handleResultSet(BaseSelector.java:253)
    org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:94)
    org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:141)
    org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:125)
ERROR DavCrawler 2014-11-11 14:43:21,393 DavCrawler : Unexpected error
org.springframework.jdbc.UncategorizedSQLException: ExecutingSelector; uncategorized SQLException for SQL []; SQL state [25001]; error code [0]; Cannot change transaction isolation level in the middle of a transaction.; nested exception is org.postgresql.util.PSQLException: Cannot change transaction isolation level in the middle of a transaction.
    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:124)
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
    at org.labkey.api.data.ExceptionFramework$1.translate(ExceptionFramework.java:38)
    at org.labkey.api.data.ExceptionFramework$1.translate(ExceptionFramework.java:32)
    at org.labkey.api.data.ExecutingSelector$ExecutingResultSetFactory.handleSqlException(ExecutingSelector.java:416)
    at org.labkey.api.data.BaseSelector.handleResultSet(BaseSelector.java:253)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:94)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:141)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:125)
    at org.labkey.api.data.ExecutingSelector.getResultSet(ExecutingSelector.java:120)
    at org.labkey.search.model.SavePaths.getPaths(SavePaths.java:289)
    at org.labkey.search.model.DavCrawler.findSomeWork(DavCrawler.java:523)
    at org.labkey.search.model.DavCrawler$1.run(DavCrawler.java:490)
Caused by: org.postgresql.util.PSQLException: Cannot change transaction isolation level in the middle of a transaction.
    at org.postgresql.jdbc2.AbstractJdbc2Connection.setTransactionIsolation(AbstractJdbc2Connection.java:940)
    at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
    at com.sun.proxy.$Proxy2.setTransactionIsolation(Unknown Source)
    at org.labkey.api.data.ConnectionWrapper.setTransactionIsolation(ConnectionWrapper.java:306)
    at org.labkey.core.dialect.PostgreSql84Dialect.configureToDisableJdbcCaching(PostgreSql84Dialect.java:1508)
    at org.labkey.api.data.ExecutingSelector$ExecutingResultSetFactory.getResultSet(ExecutingSelector.java:297)
    at org.labkey.api.data.BaseSelector.handleResultSet(BaseSelector.java:244)
    ... 7 more
 
bront responded:  2014-11-11 12:04
We are also running Ubuntu 14.04 and PostgreSQL 9.3.5.

thanks,

bront