Как снять блокировку Redis, преодолевая условие Thread - PullRequest
0 голосов
/ 01 мая 2019

Код для разблокировки com.veracode.was.utils.caching.redis.RedisLock имеет следующий вид:

private void unlock(boolean silent) {
    if (rlock.isLocked()) {
        if (!rlock.isHeldByCurrentThread()) {
            if (!silent) {
                throw new RuntimeException("Not allowed to unlock from thread that does not own the lock");
            } else {
                LOG.info("Not allowed to unlock from thread that does not own the lock");
            }
        } else {
            rlock.unlock();
        }
    } else {
        LOG.info("Already unlocked. Unnecessary call to unlock()");
    }
}

Некоторые наши замки не могут пройти условие:

if (!rlock.isHeldByCurrentThread())

Итак, они остаются запертыми навсегда. Есть ли способ снять эти замки?

...