| Summary: | Clear command causing deadlock when lock time out happens | |||
|---|---|---|---|---|
| Product: | [JBoss] JBoss Data Grid 6 | Reporter: | Osamu Nagano <onagano> | |
| Component: | Infinispan | Assignee: | Tristan Tarrant <ttarrant> | |
| Status: | CLOSED WONTFIX | QA Contact: | Martin Gencur <mgencur> | |
| Severity: | unspecified | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 6.4.1, 6.5.0, 6.6.0, 6.5.1 | CC: | amanukya, jdg-bugs, myoshida, rmarwaha, ttarrant, wfink | |
| Target Milestone: | ER1 | |||
| Target Release: | 6.6.1 | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | Doc Type: | Bug Fix | ||
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1311083 (view as bug list) | Environment: | ||
| Last Closed: | 2020-09-16 06:03:30 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Bug Depends On: | ||||
| Bug Blocks: | 1309749, 1311083 | |||
This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune with any questions Verified, thanks! |
TimeoutException thrown at line 46 is not caught and the lock never released. Hot Rod client will retry the same clear command on a different node, leading to a deadlock. core/src/main/java/org/infinispan/interceptors/locking/NonTransactionalLockingInterceptor.java ~~~ 39 @Override 40 public Object visitClearCommand(InvocationContext ctx, ClearCommand command) throws Throwable { 41 assertNonTransactional(ctx); 42 boolean skipLocking = hasSkipLocking(command); 43 long lockTimeout = getLockAcquisitionTimeout(command, skipLocking); 44 for (Object key: dataContainer.keySet()) { 45 if (shouldLock(key, command)) { 46 lockKey(ctx, key, lockTimeout, skipLocking); 47 } 48 } 49 try { 50 return invokeNextInterceptor(ctx, command); 51 } finally { 52 lockManager.unlockAll(ctx); 53 } 54 } ~~~