We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
Since upgrading to jdbi 3.37.0 with an internal cache, we experience a deadlock:
Thread 37 BLOCKED 'user-server-37': java.base@17.0.6/java.util.concurrent.ConcurrentHashMap.replaceNode(ConcurrentHashMap.java:1122) java.base@17.0.6/java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:1102) app//org.jdbi.v3.core.cache.internal.DefaultJdbiCache.expunge(DefaultJdbiCache.java:115) app//org.jdbi.v3.core.cache.internal.DefaultJdbiCache.getWithLoader(DefaultJdbiCache.java:61) app//org.jdbi.v3.core.statement.SqlStatements.preparedRender(SqlStatements.java:303)
Thread 53 BLOCKED 'user-server-53': app//org.jdbi.v3.core.cache.internal.DefaultJdbiCache.lambda$wrapLoader$1(DefaultJdbiCache.java:82) app//org.jdbi.v3.core.cache.internal.DefaultJdbiCache$$Lambda$961/0x000000080134bf28.create(Unknown Source) app//org.jdbi.v3.core.cache.internal.DefaultJdbiCache$$Lambda$1909/0x000000080165ca70.apply(Unknown Source) java.base@17.0.6/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) app//org.jdbi.v3.core.cache.internal.DefaultJdbiCache.getWithLoader(DefaultJdbiCache.java:57) app//org.jdbi.v3.core.statement.SqlStatements.preparedRender(SqlStatements.java:303)
Thread A holds expunge lock and calls in to CHM.remove, which takes a bucket lock. Thread B holds the bucket lock and tries to take the expunge lock.
Looks like a classic lock order reversal.
The text was updated successfully, but these errors were encountered:
cc @hgschmie
Sorry, something went wrong.
Fix Deadlock in DefaultJdbiCache
c1d1a13
Remove a thread deadlock when expunging under heavy multithread pressure. Fixes jdbi#2274
d0411a6
Successfully merging a pull request may close this issue.
Since upgrading to jdbi 3.37.0 with an internal cache, we experience a deadlock:
Thread A holds expunge lock and calls in to CHM.remove, which takes a bucket lock.
Thread B holds the bucket lock and tries to take the expunge lock.
Looks like a classic lock order reversal.
The text was updated successfully, but these errors were encountered: