eventuate-foundation / eventuate-cdc

Other
73 stars 31 forks source link

Upgrading Docker Compose Plugin breaks build #149

Open cer opened 1 year ago

cer commented 1 year ago

dfae8b14d9fc833d0041089d53748f4aeaa69497 reverted by a3f1e0ea0743362868e4adc17d6c975eb66368bc

See failed build: https://app.circleci.com/pipelines/github/eventuate-foundation/eventuate-cdc/200/workflows/66dc6724-8d80-4ec2-8d3f-94d291a62984

Specifically: https://app.circleci.com/pipelines/github/eventuate-foundation/eventuate-cdc/200/workflows/66dc6724-8d80-4ec2-8d3f-94d291a62984/jobs/3605

This script is stopping/starting containers: https://github.com/eventuate-foundation/eventuate-cdc/blob/54ed5da3c56682c3e45df12165785a115b901e8f/scripts/build-and-test-all-database-id-jsonschema.sh#L72-L76

Previously the containers were removed, now they are stopped/started. Unclear why.

As a result, MySqlBinlogClient is processing events (e.g. TABLE_MAP) that occurs before the schema was changed. As a result, the column ordering is no longer correct since the metadata query retrieves the current metadata - not what exists at the time of the event.

10:04:42.338 [blc-localhost:3306] INFO  i.e.l.m.binlog.ColumnOrderExtractor - Table io.eventuate.common.jdbc.SchemaAndTable@4c242629[schema=eventuate,tableName=message] has these columns {creation_time=5, headers=2, payload=7, message_partition=4, destination=6, id=1, published=3}
10:04:42.340 [blc-localhost:3306] ERROR i.e.l.m.binlog.MySqlBinaryLogClient - Stopping due to exception
java.lang.IllegalArgumentException: Unexpected type class [B of column published, should be int or stringified int
    at io.eventuate.local.common.BinlogEntry.getBooleanColumn(BinlogEntry.java:19)
    at io.eventuate.tram.cdc.connector.BinlogEntryToMessageConverter.convert(BinlogEntryToMessageConverter.java:24)
    at io.eventuate.local.common.BinlogEntryHandler.publish(BinlogEntryHandler.java:37)
    at io.eventuate.local.mysql.binlog.MySqlBinaryLogClient.publish(MySqlBinaryLogClient.java:348)
    at io.eventuate.local.mysql.binlog.MySqlBinaryLogClient.lambda$handleWriteRowsEvent$5(MySqlBinaryLogClient.java:331)

Action items: