You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Removed zongji type mappings which are now provided by the Zongji package directly
Added check for tablemap events
* Moved most of the binlog event handling logic to a separate BinlogListener class.
Introduced a mechanism to limit the maximum size of the binlog processing queue, thus also limiting memory usage.
This maximum processing queue size is configurable
* Updated the BinLogStream to use the new BinLogListener
* Renamed BinlogListener to BinLogListener
* Added changeset
* Simplified BinLogListener stopping mechanism
Cleaned up BinLogStream logs a bit
* Corrected BinLogListener name.
Simplified BinLogListener stopping mechanism
* Supply port for binlog listener connections.
* Only set up binlog heartbeat once the listener is fully started up.
Added a few more defensive stopped checks to the binlog listener
* Updated changeset
* Changed binlog backpressure mechanism to be based on processing queue memory usage rather than number of events
* Changed binlog backpressure mechanism to be based on processing queue memory usage rather than number of events.
Introduced a maximum timeout that the binlog processing queue can be paused before auto-resuming. This is to prevent the replication connection timing out.
* Added optional columns field to SourceEntityDescriptor
Made SourceTable implement SourceEntityDescriptor interface
* Cleanup unused imports
* Ensure column values are preserved when available Report 0 storage metrics instead of ignoring them. SourceTable.
Moved MySQL table detail retrieval logic to utility function.
* Added basic schema change handling for MySQL
* Revert columns field addition to SourceEntityDescriptor
* Added schema change handling for the MySQL binlog replication.
* Include powersync core version in metrics metadata
* Code analysis cleanup
* Merge conflicts
* Fixed parser import
* Fixed mysql->sqlite rows parsing that would filter out columns with null values
* Cleaned up SchemaChange handling in BinLogListener
Improved binlog table filtering
Added extended type definitions for node-sql-parser package
* Added schema change tests
Cleaned up MySQL tests in general and added a few new test utils
* Change binlog event receive log message to debug
* Revert and fix mysql->sqlite row conversion for null value columns
* Added conditional skip of mysql schema test for syntax that does not exist in version 5.7
* Fixed version checking for mysql 5.7 incompatible test
* Fix skip test on mysql 5.7 schema change
* Reverted mysql dev docker compose
Updated to released zongji listener version
* Moved schema change handling to processing queue
Catch parsing errors, and log an error if the DDL query might apply to one of the tables in the sync rules.
* Fixed bug where multiple zongji listeners could be started if multiple schema change events were in the processing queue
Added small timeout to test to prevent rare race condition
* Extended node-sql-parser type definitions
Added util functions to identify the different types of DDL statements
* - Simplified schema change types
- Added more detections of constraint changes
- Removed detection of create table statements since they can be detected and reacted to when row events are received for new tables
- Added multiple extra test cases
* Removed unused constant
* Skip unsupported schema test for MySQL 5.7
* Added error handling for zongji emitted schema errors
* Added changeset
* Typo fixes from pr feedback
* Removed filters from mysql dev docker config
* Added safeguard for gtid splitting when no transactions have been run on the mysql database yet.
* BinLog listener now correctly takes schema into account for replication.
TableFilter creation is now internally handled in the BinLog listener
Pause/unpause binlog listening now uses the same stop start functionality used for schema change handling.
* BinLog stream now correctly honors multiple schemas in the sync rules.
* Added tests for multi schema support
* MySQL util fix post merge
* Removed accidentally commited keepalive code in BinLogStream.
* Cleaned up Binlog docs and comments a bit
* Added keepalive support for MySQL replication.
* Removed potentially spammy log entry.
* Increased MySQL keepalive table timestamp granularity
Added tests for keepalive
Moved common test functions to utils
* Added check to skip MySQL keepalive table creation if present and correctly set up.
* Added success check for mysql keepalive
* Reworked MySQL keepalive mechanism by hooking into heartbeat events on the binlog.
* Bucket Keepalives now bump the syncrules keepalive timestamp even if the LSN stayed the same.
* Switched keepalive logs to debug
Added a few more comments for keepalives
Updated to released Zongji package
* Added changeset
* Small cleanup of reverted code
// Since handling the schema changes can take a long time, we need to stop the Zongji listener instead of pausing it.
390
+
// Handling schema changes can take a long time, so we stop the Zongji listener whilst handling them to prevent the listener from timing out.
356
391
awaitthis.stopZongji();
357
392
358
393
for(constchangeofschemaChanges){
359
394
this.logger.info(`Processing schema change ${change.type} for table [${change.schema}.${change.table}]`);
360
395
awaitthis.eventHandler.onSchemaChange(change);
361
396
}
362
397
363
-
// DDL queries are auto commited, but do not come with a corresponding Xid event.
364
-
// This is problematic for DDL queries which result in row events because the checkpoint is not moved on,
365
-
// so we manually commit here.
366
-
this.binLogPosition.offset=nextPosition;
367
-
constLSN=newcommon.ReplicatedGTID({
368
-
raw_gtid: this.currentGTID!.raw,
369
-
position: this.binLogPosition
370
-
}).comparable;
371
-
awaitthis.eventHandler.onCommit(LSN);
398
+
// DDL queries are auto commited, but do not come with a corresponding Xid event, in those cases we trigger a manual commit if we are not already in a transaction.
399
+
// Some DDL queries include row events, and in those cases will include a Xid event.
0 commit comments