{"record":{"id":"ff67f45f017039b8","repo":"apache/flink","slug":"unknown-op-type-value-s-the-ogg-json-message","errorCode":null,"errorMessage":"Unknown \"op_type\" value \"%s\". The Ogg JSON message is '%s'","messagePattern":"Unknown \"op_type\" value \"(.+?)\"\\. The Ogg JSON message is '(.+?)'","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"flink-formats/flink-json/src/main/java/org/apache/flink/formats/json/ogg/OggJsonDeserializationSchema.java","lineNumber":201,"sourceCode":"            } else if (OP_UPDATE.equals(op)) {\n                if (before == null) {\n                    throw new IllegalStateException(\n                            String.format(REPLICA_IDENTITY_EXCEPTION, \"UPDATE\"));\n                }\n                before.setRowKind(RowKind.UPDATE_BEFORE);\n                after.setRowKind(RowKind.UPDATE_AFTER);\n                genericRowDataList.add(emitRow(row, before));\n                genericRowDataList.add(emitRow(row, after));\n            } else if (OP_DELETE.equals(op)) {\n                if (before == null) {\n                    throw new IllegalStateException(\n                            String.format(REPLICA_IDENTITY_EXCEPTION, \"DELETE\"));\n                }\n                before.setRowKind(RowKind.DELETE);\n                genericRowDataList.add(emitRow(row, before));\n            } else {\n                if (!ignoreParseErrors) {\n                    throw new IOException(\n                            format(\n                                    \"Unknown \\\"op_type\\\" value \\\"%s\\\". The Ogg JSON message is '%s'\",\n                                    op, new String(message)));\n                }\n                if (LOG.isDebugEnabled()) {\n                    LOG.debug(\n                            \"Unknown \\\"op_type\\\" value '{}'. The Ogg JSON message is '{}'.\",\n                            op,\n                            new String(message));\n                }\n            }\n        } catch (Throwable t) {\n            // a big try catch to protect the processing.\n            if (!ignoreParseErrors) {\n                throw new IOException(\n                        format(\"Corrupt Ogg JSON message '%s'.\", new String(message)), t);\n            }\n            if (LOG.isDebugEnabled()) {","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/apache/flink/blob/2f3c205e9266cb30240eb7f4fdab15cad629a70f/flink-formats/flink-json/src/main/java/org/apache/flink/formats/json/ogg/OggJsonDeserializationSchema.java#L183-L219","documentation":"The 'op_type' field of an Ogg JSON message was not one of the recognized values ('I' insert, 'U' update, 'D' delete as OP_CREATE/OP_UPDATE/OP_DELETE). With 'ogg-json.ignore-parse-errors' = false the deserializer throws IOException including the offending op_type and the raw message; with it true the event is debug-logged and skipped.","triggerScenarios":"Ogg GoldenGate messages with op_type values outside I/U/D — e.g. DDL events, transaction markers, or truncate operations — arriving on a topic read by an ogg-json table source.","commonSituations":"Capturing Ogg topics that include DDL/transaction metadata records; producer-side format changes or custom op_type encodings; truncated/corrupt single messages.","solutions":["Set 'ogg-json.ignore-parse-errors' = true on the source table to skip unsupported event kinds.","Configure the Ogg/GoldenGate extract or Kafka routing to publish only row-change (DML) events to the consumed topic.","Verify with a console consumer which op_type values actually appear and align the format expectation."],"exampleFix":"-- before\n'format' = 'ogg-json'\n-- after\n'format' = 'ogg-json',\n'ogg-json.ignore-parse-errors' = 'true'","handlingStrategy":"try-catch","validationCode":"JsonNode n = MAPPER.readTree(message);\nString op = n.path(\"op_type\").asText(\"\");\nif (!(\"I\".equals(op) || \"U\".equals(op) || \"D\".equals(op))) return; // skip non-DML","typeGuard":null,"tryCatchPattern":"try { deserializer.deserialize(message, collector); } catch (IOException e) { skipped.inc(); log.warn(\"Unsupported Ogg op_type in {}\", new String(message)); }","preventionTips":["Route only DML events to Ogg-consumed topics.","Enable 'ogg-json.ignore-parse-errors' when mixed event streams are unavoidable."],"tags":["flink","ogg","json","cdc","parse-error"],"backgroundTag":null,"analyzedSha":"2f3c205e9266cb30240eb7f4fdab15cad629a70f","analyzedAt":"2026-08-14T08:48:24.518Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}