mysql-binlog-connector-java
mysql-binlog-connector-java copied to clipboard
Can't process binlog for JSON partial update #1290
Steps to re-produce:
CREATE TABLE
CREATE TABLE `user_series` (
`id` varchar(255) NOT NULL,
`document` json DEFAULT NULL,
`auth_meta` json DEFAULT NULL,
`created_time` bigint(20) DEFAULT NULL,
`updated_time` bigint(20) DEFAULT NULL,
`doc_version` bigint(20) DEFAULT NULL,
`tenant_id` varchar(255) NOT NULL,
`bgCgrAcSKp` varchar(32) GENERATED ALWAYS AS (json_unquote(json_extract(`document`,_utf8mb3'$.user_id'))) VIRTUAL NOT NULL,
`WwlQjQvibH` varchar(32) GENERATED ALWAYS AS (json_unquote(json_extract(`document`,_utf8mb3'$.series_id'))) VIRTUAL NOT NULL,
`LtiXgnqHAz` varchar(32) GENERATED ALWAYS AS (json_unquote(json_extract(`document`,_utf8mb3'$.company_id'))) VIRTUAL NOT NULL,
PRIMARY KEY (`id`,`tenant_id`),
KEY `tenant` (`tenant_id`),
KEY `createdTime` (`created_time`),
KEY `updatedTime` (`updated_time`),
KEY `WCWxZSSwtL` (`bgCgrAcSKp`),
KEY `kTmJVryonn` (`WwlQjQvibH`),
KEY `fxpvzPiZiZ` (`LtiXgnqHAz`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT
insert into user_series (id, document, auth_meta, created_time, updated_time, doc_version, tenant_id)values ('377a4635dec723531001727801708045584', '{"pinned": false, "user_id": "377a4635dec72353", "series_id": "1001727801708045584", "company_id": "benaam", "series_access": true, "series_access_time": 1527666772}', '{"auth_id": "migration", "global_context_id": "migration"}', 1426603179, 1560414856, 10, 'benaam');
UPDATE
UPDATE user_series SET document = JSON_SET(document,'$.relevance', 'REQUIRED'),auth_meta = '{"global_context_id":"1142824752011481088","auth_id":"377a4635dec72353"}',updated_time = 1561305629 ,doc_version = 1 WHERE id = '377a4635dec723531001727801708045584' AND tenant_id = 'benaam';
UPDATE
UPDATE user_series SET document = JSON_SET(document,'$.relevance', 'NONE'),auth_meta = '{"global_context_id":"1142824752011481088","auth_id":"377a4635dec72353"}',updated_time = 1561305629 ,doc_version = 1 WHERE id = '377a4635dec723531001727801708045584' AND tenant_id = 'benaam';
Essentially, when I change the JSON_SET, it throws an exception
07:50:19,944 INFO TaskManager - Stopping 4 tasks
07:50:19,944 ERROR TaskManager - cause:
java.lang.RuntimeException: java.io.EOFException
at com.zendesk.maxwell.schema.columndef.JsonColumnDef.asJSON(JsonColumnDef.java:27) ~[classes/:?]
at com.zendesk.maxwell.replication.BinlogConnectorEvent.writeData(BinlogConnectorEvent.java:111) ~[classes/:?]
at com.zendesk.maxwell.replication.BinlogConnectorEvent.buildRowMap(BinlogConnectorEvent.java:161) ~[classes/:?]
at com.zendesk.maxwell.replication.BinlogConnectorEvent.jsonMaps(BinlogConnectorEvent.java:190) ~[classes/:?]
at com.zendesk.maxwell.replication.BinlogConnectorReplicator.getTransactionRows(BinlogConnectorReplicator.java:477) ~[classes/:?]
at com.zendesk.maxwell.replication.BinlogConnectorReplicator.getRow(BinlogConnectorReplicator.java:592) ~[classes/:?]
at com.zendesk.maxwell.replication.BinlogConnectorReplicator.work(BinlogConnectorReplicator.java:175) ~[classes/:?]
at com.zendesk.maxwell.util.RunLoopProcess.runLoop(RunLoopProcess.java:34) ~[classes/:?]
at com.zendesk.maxwell.Maxwell.startInner(Maxwell.java:222) ~[classes/:?]
at com.zendesk.maxwell.Maxwell.start(Maxwell.java:156) ~[classes/:?]
at com.zendesk.maxwell.Maxwell.main(Maxwell.java:243) ~[classes/:?]
Caused by: java.io.EOFException
at com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.read(ByteArrayInputStream.java:190) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at java.io.InputStream.read(InputStream.java:170) ~[?:1.8.0_212]
at com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.fill(ByteArrayInputStream.java:96) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.read(ByteArrayInputStream.java:89) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parseString(JsonBinary.java:638) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:247) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parseObject(JsonBinary.java:400) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:211) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:205) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:181) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parseAsString(JsonBinary.java:168) ~[mysql-binlog-connector-java-0.20.0.jar:0.20.0]
at com.zendesk.maxwell.schema.columndef.JsonColumnDef.asJSON(JsonColumnDef.java:25) ~[classes/:?]
... 10 more
07:50:19,947 INFO TaskManager - Stopping: com.zendesk.maxwell.schema.PositionStoreThread@18ab3f9a
07:50:19,947 INFO StoppableTaskState - com.zendesk.maxwell.schema.PositionStoreThread requestStop() called (in state: RUNNING)
07:50:19,947 INFO TaskManager - Stopping: com.zendesk.maxwell.producer.MaxwellKafkaProducerWorker@3f74dd89
07:50:19,947 INFO StoppableTaskState - MaxwellKafkaProducerWorker requestStop() called (in state: RUNNING)
07:50:19,949 INFO KafkaProducer - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 9223372036854775807 ms.
07:50:19,955 INFO TaskManager - Stopping: com.zendesk.maxwell.bootstrap.BootstrapController@1bbfb4bc
07:50:19,955 INFO StoppableTaskState - com.zendesk.maxwell.bootstrap.BootstrapController requestStop() called (in state: RUNNING)
07:50:19,955 INFO TaskManager - Stopping: com.zendesk.maxwell.replication.BinlogConnectorReplicator@1285fae5
07:50:19,955 INFO StoppableTaskState - com.zendesk.maxwell.replication.BinlogConnectorReplicator requestStop() called (in state: STOPPED)
java.lang.RuntimeException: java.io.EOFException
at com.zendesk.maxwell.schema.columndef.JsonColumnDef.asJSON(JsonColumnDef.java:27)
at com.zendesk.maxwell.replication.BinlogConnectorEvent.writeData(BinlogConnectorEvent.java:111)
at com.zendesk.maxwell.replication.BinlogConnectorEvent.buildRowMap(BinlogConnectorEvent.java:161)
at com.zendesk.maxwell.replication.BinlogConnectorEvent.jsonMaps(BinlogConnectorEvent.java:190)
at com.zendesk.maxwell.replication.BinlogConnectorReplicator.getTransactionRows(BinlogConnectorReplicator.java:477)
at com.zendesk.maxwell.replication.BinlogConnectorReplicator.getRow(BinlogConnectorReplicator.java:592)
at com.zendesk.maxwell.replication.BinlogConnectorReplicator.work(BinlogConnectorReplicator.java:175)
at com.zendesk.maxwell.util.RunLoopProcess.runLoop(RunLoopProcess.java:34)
at com.zendesk.maxwell.Maxwell.startInner(Maxwell.java:222)
at com.zendesk.maxwell.Maxwell.start(Maxwell.java:156)
at com.zendesk.maxwell.Maxwell.main(Maxwell.java:243)
Caused by: java.io.EOFException
at com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.read(ByteArrayInputStream.java:190)
at java.io.InputStream.read(InputStream.java:170)
at com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.fill(ByteArrayInputStream.java:96)
at com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.read(ByteArrayInputStream.java:89)
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parseString(JsonBinary.java:638)
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:247)
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parseObject(JsonBinary.java:400)
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:211)
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:205)
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parse(JsonBinary.java:181)
at com.github.shyiko.mysql.binlog.event.deserialization.json.JsonBinary.parseAsString(JsonBinary.java:168)
at com.zendesk.maxwell.schema.columndef.JsonColumnDef.asJSON(JsonColumnDef.java:25)
... 10 more
07:50:21,362 INFO TaskManager - Stopped all tasks