binarywang/WxJava · error · WxRuntimeException
unsupported method
Error message
unsupported method
What it means
Thrown unconditionally by JedisDistributedLock.newCondition(). The lock implements the Lock interface but does not back a Condition, so requesting one raises WxRuntimeException('unsupported method').
Source
Thrown at weixin-java-common/src/main/java/me/chanjar/weixin/common/util/locks/JedisDistributedLock.java:73
}
@Override
public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
try (Jedis jedis = jedisPool.getResource()) {
return lock.acquire(jedis);
}
}
@Override
public void unlock() {
try (Jedis jedis = jedisPool.getResource()) {
lock.release(jedis);
}
}
@Override
public Condition newCondition() {
throw new WxRuntimeException("unsupported method");
}
}
View on GitHub (pinned to 1c43293a3c)
Solutions
- Do not call newCondition() on this lock; use a different coordination primitive (e.g. a blocking queue, Redis pub/sub) for cross-node signaling.
- Gate code that needs conditions behind an instanceof check or a different Lock implementation.
Example fix
// before Condition c = distributedLock.newCondition(); // after - use an in-JVM Lock for conditions, Redis for mutual exclusion ReentrantLock local = new ReentrantLock(); Condition c = local.newCondition();
Defensive patterns
Strategy: validation
Validate before calling
if (lock instanceof JedisDistributedLock) {
throw new UnsupportedOperationException("conditions unsupported");
}
Condition c = lock.newCondition(); Type guard
static boolean supportsCondition(Lock l) { return !(l instanceof JedisDistributedLock); } Try / catch
null
Prevention
- Never call newCondition() on JedisDistributedLock.
- Use in-JVM locks (ReentrantLock) for conditions; Redis only for mutual exclusion.
- Guard generic Lock-consuming code with a feature check.
When it happens
Trigger: Calling lock.newCondition() on a JedisDistributedLock instance, e.g. via code that generically uses Lock.newCondition() for await/signal coordination.
Common situations: Generic concurrency utilities that assume every Lock supports conditions; porting in-process wait/notify patterns onto the distributed lock.
Related errors
AI-assisted analysis of binarywang/WxJava@1c43293a3c (2026-08-14).
Data as JSON: /api/errors/8fba37c036913281.
Report an issue: GitHub.