-
Notifications
You must be signed in to change notification settings - Fork 1.1k
JDBC Lock Registry not working with Oracle #8748
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Thank you for the detailed sample! Really helpful. So, looks like we cannot use a SERIALIZABLE isolation:
And we need to change it to the Will be fixed soon... |
That is strange. Your application fails for me even with this simple code:
The exception is this:
I cannot reproduce it without Spring Boot in simple JUnit test for Spring Integration. Probably When I "mock" it with this:
It works well. Either way I'm to go ahead and fix as we agreed before. |
Fixes spring-projects#8748 The Oracle DB throws `ORA-08177: can't serialize access for this transaction` when other transaction on the row has begun * Change the isolation for `DefaultLockRepository.acquire()` transaction to the `READ_COMMITTED` for what database automatically and silently restarts the entire SQL statement, and no error occurs. * Add `oracle` dependencies to JDBC module * Introduce `OracleContainerTest` and implement it for `OracleLockRegistryTests` **Cherry-pick to `6.1.x` & `6.0.x`**
Fixes #8748 The Oracle DB throws `ORA-08177: can't serialize access for this transaction` when other transaction on the row has begun * Change the isolation for `DefaultLockRepository.acquire()` transaction to the `READ_COMMITTED` for what database automatically and silently restarts the entire SQL statement, and no error occurs. * Add `oracle` dependencies to JDBC module * Introduce `OracleContainerTest` and implement it for `OracleLockRegistryTests` **Cherry-pick to `6.1.x` & `6.0.x`**
Fixes #8748 The Oracle DB throws `ORA-08177: can't serialize access for this transaction` when other transaction on the row has begun * Change the isolation for `DefaultLockRepository.acquire()` transaction to the `READ_COMMITTED` for what database automatically and silently restarts the entire SQL statement, and no error occurs. * Add `oracle` dependencies to JDBC module * Introduce `OracleContainerTest` and implement it for `OracleLockRegistryTests` **Cherry-pick to `6.1.x` & `6.0.x`**
Fixes #8748 The Oracle DB throws `ORA-08177: can't serialize access for this transaction` when other transaction on the row has begun * Change the isolation for `DefaultLockRepository.acquire()` transaction to the `READ_COMMITTED` for what database automatically and silently restarts the entire SQL statement, and no error occurs. * Add `oracle` dependencies to JDBC module * Introduce `OracleContainerTest` and implement it for `OracleLockRegistryTests` **Cherry-pick to `6.1.x` & `6.0.x`**
In what version(s) of Spring Integration are you seeing this issue?
6.1.3
Describe the bug
Using JDBC Lock Registry on Oracle always throws java.lang.IllegalMonitorStateException: The current thread doesn't own mutex at ...
To Reproduce
Expected behavior
JDBC Lock Registry on Oracle does not throw exception.
Sample
https://github.com/uebelack/spring-integration-lock-oracle
Workaround
The text was updated successfully, but these errors were encountered: