{"record":{"id":"8a441467d9437e4e","repo":"alibaba/canal","slug":"failed-to-subscribe-with-reason-8a4414","errorCode":null,"errorMessage":"failed to subscribe with reason: ","messagePattern":"failed to subscribe with reason: ","errorType":"exception","errorClass":"CanalClientException","httpStatus":null,"severity":"error","filePath":"client/src/main/java/com/alibaba/otter/canal/client/impl/SimpleCanalConnector.java","lineNumber":253,"sourceCode":"        if (!running) {\n            return;\n        }\n        try {\n            writeWithHeader(Packet.newBuilder()\n                .setType(PacketType.SUBSCRIPTION)\n                .setBody(Sub.newBuilder()\n                    .setDestination(clientIdentity.getDestination())\n                    .setClientId(String.valueOf(clientIdentity.getClientId()))\n                    .setFilter(filter != null ? filter : \"\")\n                    .build()\n                    .toByteString())\n                .build()\n                .toByteArray());\n            //\n            Packet p = Packet.parseFrom(readNextPacket());\n            Ack ack = Ack.parseFrom(p.getBody());\n            if (ack.getErrorCode() > 0) {\n                throw new CanalClientException(\"failed to subscribe with reason: \" + ack.getErrorMessage());\n            }\n\n            clientIdentity.setFilter(filter);\n        } catch (IOException e) {\n            throw new CanalClientException(e);\n        }\n    }\n\n    @Override\n    public void unsubscribe() throws CanalClientException {\n        waitClientRunning();\n        if (!running) {\n            return;\n        }\n        try {\n            writeWithHeader(Packet.newBuilder()\n                .setType(PacketType.UNSUBSCRIPTION)\n                .setBody(Unsub.newBuilder()","sourceCodeStart":235,"sourceCodeEnd":271,"githubUrl":"https://github.com/alibaba/canal/blob/87be50e87686a3e8af08c368d0e1ffd1f59eb04a/client/src/main/java/com/alibaba/otter/canal/client/impl/SimpleCanalConnector.java#L235-L271","documentation":"Error \"failed to subscribe with reason: \" thrown in alibaba/canal.","triggerScenarios":"Thrown at client/src/main/java/com/alibaba/otter/canal/client/impl/SimpleCanalConnector.java:253 when the library encounters an invalid state.","commonSituations":"Subscribe rejected by server. Validate destination, filter expression, and client identity before resubscribing; log the server-provided reason verbatim.","solutions":["Read the reason string returned by the server; common causes are an invalid destination name or an invalid filter expression.","Verify the destination exists and is started: check server logs or the admin console.","Validate the subscribe filter syntax (e.g. db\\\\..* or db.table) against the canal filter rules."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"87be50e87686a3e8af08c368d0e1ffd1f59eb04a","analyzedAt":"2026-08-14T04:30:11.918Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}