{"record":{"id":"a3e3bb940f1de2fd","repo":"conductor-oss/conductor","slug":"error-creating-updating-event-handler-s-s","errorCode":null,"errorMessage":"Error creating/updating event handler: %s/%s","messagePattern":"Error creating/updating event handler: (.+?)/(.+?)","errorType":"exception","errorClass":"TransientException","httpStatus":500,"severity":"error","filePath":"cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java","lineNumber":145,"sourceCode":"            LOGGER.error(errorMsg, e);\n            throw new TransientException(errorMsg, e);\n        }\n    }\n\n    private void insertOrUpdateEventHandler(EventHandler eventHandler) {\n        try {\n            String handler = toJson(eventHandler);\n            session.execute(insertEventHandlerStatement.bind(eventHandler.getName(), handler));\n            recordCassandraDaoRequests(\"storeEventHandler\");\n            recordCassandraDaoPayloadSize(\"storeEventHandler\", handler.length(), \"n/a\", \"n/a\");\n        } catch (DriverException e) {\n            Monitors.error(CLASS_NAME, \"insertOrUpdateEventHandler\");\n            String errorMsg =\n                    String.format(\n                            \"Error creating/updating event handler: %s/%s\",\n                            eventHandler.getName(), eventHandler.getEvent());\n            LOGGER.error(errorMsg, e);\n            throw new TransientException(errorMsg, e);\n        }\n    }\n}\n","sourceCodeStart":127,"sourceCodeEnd":149,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java#L127-L149","documentation":"Thrown by CassandraEventHandlerDAO.insertOrUpdateEventHandler when inserting/updating an event handler row fails. DriverException during session.execute(insertEventHandlerStatement.bind(...)) is wrapped in TransientException. Triggered by addEventHandler and updateEventHandler paths.","triggerScenarios":"Calling addEventHandler/updateEventHandler with a handler whose JSON is too large for the column, when Cassandra is unavailable, or when the write times out / exceeds consistency.","commonSituations":"Cassandra connectivity loss. Write timeout under load. Schema mismatch (table/columns missing). A very large EventHandler payload exceeding column limits.","solutions":["Verify Cassandra is reachable and the session is healthy.","Confirm the event_handler table and its columns match the prepared statement (re-run init if schema drifted).","Retry the write — TransientException is retryable.","If the handler JSON is large, check it is within Cassandra's text column / row size limits."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Validate the handler before persisting\nif (eventHandler == null || isBlank(eventHandler.getName()) || isBlank(eventHandler.getEvent())) {\n    throw new IllegalArgumentException(\"event handler name and event required\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    dao.addEventHandler(eventHandler);\n} catch (TransientException e) {\n    log.warn(\"Transient failure storing handler {}; retrying\", eventHandler.getName());\n    throw e;","preventionTips":["Validate handler name/event are non-blank before insert.","Retry TransientException with exponential backoff.","Keep handler payloads small to avoid column-size limits."],"tags":["cassandra","event-handler","write","transient","persistence"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}