{"record":{"id":"8fba37c036913281","repo":"binarywang/WxJava","slug":"unsupported-method","errorCode":null,"errorMessage":"unsupported method","messagePattern":"unsupported method","errorType":"exception","errorClass":"WxRuntimeException","httpStatus":null,"severity":"error","filePath":"weixin-java-common/src/main/java/me/chanjar/weixin/common/util/locks/JedisDistributedLock.java","lineNumber":73,"sourceCode":"  }\n\n  @Override\n  public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {\n    try (Jedis jedis = jedisPool.getResource()) {\n      return lock.acquire(jedis);\n    }\n  }\n\n  @Override\n  public void unlock() {\n    try (Jedis jedis = jedisPool.getResource()) {\n      lock.release(jedis);\n    }\n  }\n\n  @Override\n  public Condition newCondition() {\n    throw new WxRuntimeException(\"unsupported method\");\n  }\n\n}\n","sourceCodeStart":55,"sourceCodeEnd":77,"githubUrl":"https://github.com/binarywang/WxJava/blob/1c43293a3c2c9d7e91304b6d037fb017f680d0c6/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/locks/JedisDistributedLock.java#L55-L77","documentation":"Thrown unconditionally by JedisDistributedLock.newCondition(). The lock implements the Lock interface but does not back a Condition, so requesting one raises WxRuntimeException('unsupported method').","triggerScenarios":"Calling lock.newCondition() on a JedisDistributedLock instance, e.g. via code that generically uses Lock.newCondition() for await/signal coordination.","commonSituations":"Generic concurrency utilities that assume every Lock supports conditions; porting in-process wait/notify patterns onto the distributed lock.","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."],"exampleFix":"// before\nCondition c = distributedLock.newCondition();\n// after - use an in-JVM Lock for conditions, Redis for mutual exclusion\nReentrantLock local = new ReentrantLock();\nCondition c = local.newCondition();","handlingStrategy":"validation","validationCode":"if (lock instanceof JedisDistributedLock) {\n  throw new UnsupportedOperationException(\"conditions unsupported\");\n}\nCondition c = lock.newCondition();","typeGuard":"static boolean supportsCondition(Lock l) { return !(l instanceof JedisDistributedLock); }","tryCatchPattern":"null","preventionTips":["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."],"tags":["redis","jedis","distributed-lock","unsupported"],"backgroundTag":null,"analyzedSha":"1c43293a3c2c9d7e91304b6d037fb017f680d0c6","analyzedAt":"2026-08-14T02:29:11.060Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}