Altinity / clickhouse-sink-connector

Replicate data from MySQL, Postgres and MongoDB to ClickHouse
https://www.altinity.com
Apache License 2.0
198 stars 48 forks source link

Sink connector client - show_replica_status on startup #400

Open subkanthi opened 7 months ago

subkanthi commented 7 months ago

If the sink_connector_client show_replica_status is called right after startup, the API should respond with a message that the replication hasnt started.

debezium-embedded_1  | 136001 2023-12-04 21:23:07.473 [JettyServerThreadPool-44] WARN io.javalin.Javalin  - Uncaught exception
debezium-embedded_1  | java.lang.NullPointerException: Cannot invoke "com.altinity.clickhouse.sink.connector.db.BaseDbWriter.executeQueryWithResultSet(String)" because "this.writer" is null
debezium-embedded_1  |  at com.altinity.clickhouse.debezium.embedded.cdc.DebeziumChangeEventCapture.getDebeziumStorageStatus(DebeziumChangeEventCapture.java:313)
debezium-embedded_1  |  at com.altinity.clickhouse.debezium.embedded.ClickHouseDebeziumEmbeddedApplication.lambda$main$2(ClickHouseDebeziumEmbeddedApplication.java:100)
debezium-embedded_1  |  at io.javalin.routing.HandlerEntry.handle(HandlerEntry.kt:19)
debezium-embedded_1  |  at io.javalin.http.servlet.DefaultTasks.HTTP$lambda$8$lambda$6$lambda$5(DefaultTasks.kt:38)
debezium-embedded_1  |  at io.javalin.http.servlet.JavalinServlet.handleTask(JavalinServlet.kt:88)
debezium-embedded_1  |  at io.javalin.http.servlet.JavalinServlet.handleSync(JavalinServlet.kt:53)
debezium-embedded_1  |  at io.javalin.http.servlet.JavalinServlet.service(JavalinServlet.kt:41)
debezium-embedded_1  |  at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
debezium-embedded_1  |  at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58)
debezium-embedded_1  |  at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
debezium-embedded_1  |  at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
debezium-embedded_1  |  at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:529)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
debezium-embedded_1  |  at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
debezium-embedded_1  |  at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:57)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
debezium-embedded_1  |  at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
debezium-embedded_1  |  at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
debezium-embedded_1  |  at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
debezium-embedded_1  |  at org.eclipse.jetty.server.Server.handle(Server.java:563)
debezium-embedded_1  |  at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
debezium-embedded_1  |  at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
debezium-embedded_1  |  at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
debezium-embedded_1  |  at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
debezium-embedded_1  |  at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
debezium-embedded_1  |  at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
debezium-embedded_1  |  at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
debezium-embedded_1  |  at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
debezium-embedded_1  |  at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
debezium-embedded_1  |  at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
debezium-embedded_1  |  at java.base/java.lang.Thread.run(Thread.java:833)
subkanthi commented 1 month ago

This was already fixed as part of another bug.

./sink-connector-client show_replica_status
[
  {
    "Seconds_Behind_Source": 0
  },
  {
    "Replica_Running": true
  },
  {
    "Database": "test"
  }
]