Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-2277

PubSub Sink sends empty records

    XMLWordPrintable

Details

    Description

      Seeing the following on Debezium Server with a MySQL source and a Google PubSub sink.

      io.debezium.DebeziumException: java.util.concurrent.ExecutionException: com.google.api.gax.rpc.InvalidArgumentException: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: One or more messages in the publish request is empty. Each message must contain either non-empty data, or at least one attribute.
       at io.debezium.server.pubsub.PubSubChangeConsumer.handleBatch(PubSubChangeConsumer.java:151)
       at io.debezium.embedded.ConvertingEngineBuilder.lambda$notifying$2(ConvertingEngineBuilder.java:81)
       at io.debezium.embedded.EmbeddedEngine.run(EmbeddedEngine.java:810)
       at io.debezium.embedded.ConvertingEngineBuilder$2.run(ConvertingEngineBuilder.java:170)
       at io.debezium.server.DebeziumServer.lambda$start$1(DebeziumServer.java:133)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       at java.lang.Thread.run(Thread.java:748)
       Caused by: java.util.concurrent.ExecutionException: com.google.api.gax.rpc.InvalidArgumentException: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: One or more messages in the publish request is empty. Each message must contain either non-empty data, or at least one attribute.
       at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:552)
       at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:533)
       at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:90)
       at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:62)
       at io.debezium.server.pubsub.PubSubChangeConsumer.handleBatch(PubSubChangeConsumer.java:148)
       ... 7 more

      This puts the server in an irrecoverable state requiring manual intervention.

      Shouldn't the sink guard against sending empty requests?

      Attachments

        Activity

          People

            ccranfor@redhat.com Chris Cranford
            passkit Nick Murray (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: