start:
private void startDebeziumEngine() {
debeziumEngine = DebeziumEngine.create(ChangeEventFormat.of(Connect.class))
.using(debeziumListenerConfig().asProperties())
//informed when the engine terminates
.using((success, message, throwable) -> {
if(!success && isAlive != null){
logger.fatal(String.format("debezium engine terminated with error. %s", message), throwable);
System.exit(1);
} else {
logger.debug(() -> "debezium engine terminated");
dbListenerExecutor.destroy();
}
})
.using(new DebeziumConnectorCallback())
.notifying(new DBChangeConsumer())
.build();
dbListenerExecutor.execute(debeziumEngine);
}
class DebeziumConnectorCallback implements DebeziumEngine.ConnectorCallback {
@Override
public void connectorStarted() {
logger.debug(() -> "debezium connector started");
}
@Override
public void connectorStopped() {
logger.debug(() -> "debezium connector stopped");
}
}
@PreDestroy
private void close(){
try {
logger.debug(() -> "DB events listener is closing...");
if(debeziumEngine != null) {
debeziumEngine.close();
}
} catch (IOException ex) {
logger.debug("failed to stop debezium engine", ex);
}
}
Extended log:
2022-09-22 07:27:30,680 DEBUG {SpringApplicationShutdownHook} (DBEventsListener.java:426) DB events listener is closing...
2022-09-22 07:27:30,681 INFO {SpringApplicationShutdownHook} (EmbeddedEngine.java:1047) Stopping the embedded engine
2022-09-22 07:27:30,683 INFO {SpringApplicationShutdownHook} (EmbeddedEngine.java:1055) Waiting for PT5M for connector to stop
2022-09-22 07:27:35,619 DEBUG {modelserviceDBCacheEventsWorker1} (ChangeEventQueue.java:251) checking for more records...
2022-09-22 07:27:35,619 DEBUG {modelserviceDBCacheEventsWorker1} (EmbeddedEngine.java:789) Embedded engine returned from polling task for records
2022-09-22 07:27:35,619 DEBUG {modelserviceDBCacheEventsWorker1} (EmbeddedEngine.java:828) Received no records from the task
2022-09-22 07:27:35,619 INFO {modelserviceDBCacheEventsWorker1} (EmbeddedEngine.java:846) Stopping the task and engine
2022-09-22 07:27:35,619 INFO {modelserviceDBCacheEventsWorker1} (BaseSourceTask.java:238) Stopping down connector
2022-09-22 07:27:35,684 INFO {debezium-mysqlconnector-skybox_mysql_db_server-change-event-source-coordinator} (ChangeEventSourceCoordinator.java:175) Finished streaming
2022-09-22 07:27:35,685 INFO {blc-127.0.0.1:3306} (MySqlStreamingChangeEventSource.java:1205) Stopped reading binlog after 0 events, last recorded offset: {transaction_id=null, ts_sec=1663755256, file=mysqlbin.000002, pos=294349, server_id=1, event=1}
2022-09-22 07:27:35,703 ERROR {modelserviceDBCacheEventsWorker1} (MySqlConnectorTask.java:224) Exception while closing JDBC connection
java.sql.SQLNonTransientConnectionException: Communications link failure during rollback(). Transaction resolution unknown.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
at com.mysql.cj.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:1835) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
at com.mysql.cj.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:1693) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
at com.mysql.cj.jdbc.ConnectionImpl.close(ConnectionImpl.java:713) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
at io.debezium.jdbc.JdbcConnection.lambda$doClose$3(JdbcConnection.java:955) ~[debezium-core-1.9.5.Final.jar!/:1.9.5.Final]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_322]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_322]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_322]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_322]
2022-09-22 07:27:35,717 DEBUG {modelserviceDBCacheEventsWorker1} (DBEventsListener.java:508) debezium connector stopped
2022-09-22 07:27:35,717 DEBUG {SpringApplicationShutdownHook} (EmbeddedEngine.java:1060) Interrupting the embedded engine's thread Thread[modelserviceDBCacheEventsWorker1,5,main] (already interrupted: false)
2022-09-22 07:27:35,717 DEBUG {modelserviceDBCacheEventsWorker1} (DBEventsListener.java:161) debezium engine terminated
2022-09-22 07:27:35,718 DEBUG {modelserviceDBCacheEventsWorker1} (ModelServiceExecutors.java:142) destroying executor modelserviceDBCacheEventsExecutor gracefully