We are using Debezium version 2.5 to capture SQL CDC (Change Data Capture) events, which are then published to Google Cloud Pub/Sub.
This uses the PubSubChangeConsumer for this purpose. However, we encountered an issue where a timeout occurred during the publish event, leading to an instruction to shut down the Debezium process.
The shutdown call got stuck because of an infinite wait on the wait() method inside the waitComplete method of Waiter class.
Implementing a time-bounded wait call may resolve this issue.
Please find the thread dump of a waiting thread.
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.16/Native Method)
waiting on
at java.lang.Object.wait(java.base@11.0.16/Object.java:328)
at com.google.cloud.pubsub.v1.Waiter.waitComplete(Waiter.java:44)
waiting to re-lock in wait() <0x00000000d26dc200> (a com.google.cloud.pubsub.v1.Waiter)
at com.google.cloud.pubsub.v1.Publisher.shutdown(Publisher.java:617)
at io.debezium.server.pubsub.PubSubChangeConsumer.lambda$close$1(PubSubChangeConsumer.java:210)
at io.debezium.server.pubsub.PubSubChangeConsumer$$Lambda$1156/0x00000008401aac40.accept(Unknown Source)
at java.util.HashMap$Values.forEach(java.base@11.0.16/HashMap.java:977)
at io.debezium.server.pubsub.PubSubChangeConsumer.close(PubSubChangeConsumer.java:208)
at io.debezium.server.pubsub.PubSubChangeConsumer_Bean.doDestroy(Unknown Source)
at io.debezium.server.pubsub.PubSubChangeConsumer_Bean.destroy(Unknown Source)
at io.debezium.server.pubsub.PubSubChangeConsumer_Bean.destroy(Unknown Source)
at io.debezium.server.DebeziumServer.stop(DebeziumServer.java:242)
at io.debezium.server.DebeziumServer_Observer_stop_d470e05516c8d86f955c7275c00cebdc903562ab.notify(Unknown Source)
at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:346)
at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:328)
at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:82)
at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:155)
at io.quarkus.arc.runtime.ArcRecorder$2.run(ArcRecorder.java:111)
at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84)
at io.quarkus.runtime.StartupContext.close(StartupContext.java:73)
at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source)
at io.quarkus.runtime.Application.stop(Application.java:208)
at io.quarkus.runtime.Application.stop(Application.java:155)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:227)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
at io.debezium.server.Main.main(Main.java:15)
We are using Debezium version 2.5 to capture SQL CDC (Change Data Capture) events, which are then published to Google Cloud Pub/Sub. This uses the PubSubChangeConsumer for this purpose. However, we encountered an issue where a timeout occurred during the publish event, leading to an instruction to shut down the Debezium process.
The shutdown call got stuck because of an infinite wait on the wait() method inside the waitComplete method of Waiter class.
Implementing a time-bounded wait call may resolve this issue.
Please find the thread dump of a waiting thread.
java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@11.0.16/Native Method)