To prevent multiple deadlocks on our database (MSSQL Server) we switch isolation level to snapshot isolation. And now we are getting following multiple messages in a log-file:
2008-09-10 09:48:10,221 ERROR [TP-Processor16] [atlassian.xwork.interceptors.XWorkTransactionInterceptor] onThrowable Invoking rollback for transaction on action '/pages/viewpage.action (ViewPageAction.execute())' due to throwable: org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not update: [bucket.user.propertyset.BucketPropertySetItem#bucket.user.propertyset.BucketPropertySetItem@ccf6bf53]; bad SQL grammar []; nested exception is java.sql.SQLException: Snapshot isolation transaction aborted due to update conflict. You cannot use snapshot isolation to access table 'dbo.OS_PROPERTYENTRY' directly or indirectly in database 'Confluence_2_9' to update, delete, or insert the row that has been modified or deleted by another transaction. Retry the transaction or change the isolation level for the update/delete statement.
– url: /wiki/display/Connectivity/Home+of+Connectivity+product | userName: evstidm
org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not update: [bucket.user.propertyset.BucketPropertySetItem#bucket.user.propertyset.BucketPropertySetItem@ccf6bf53]; bad SQL grammar []; nested exception is java.sql.SQLException: Snapshot isolation transaction aborted due to update conflict. You cannot use snapshot isolation to access table 'dbo.OS_PROPERTYENTRY' directly or indirectly in database 'Confluence_2_9' to update, delete, or insert the row that has been modified or deleted by another transaction. Retry the transaction or change the isolation level for the update/delete statement.
Caused by: java.sql.SQLException: Snapshot isolation transaction aborted due to update conflict. You cannot use snapshot isolation to access table 'dbo.OS_PROPERTYENTRY' directly or indirectly in database 'Confluence_2_9' to update, delete, or insert the row that has been modified or deleted by another transaction. Retry the transaction or change the isolation level for the update/delete statement.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)
at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeUpdate(JtdsPreparedStatement.java:505)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
at net.sf.hibernate.impl.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:22)