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

Only use error processing mode on certain errors

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Done
    • Icon: Major Major
    • 2.3.0.CR1
    • None
    • vitess-connector
    • None

      Which use case/requirement will be addressed by the proposed feature?

      With recent changes in https://github.com/debezium/debezium-connector-vitess/pull/138 all errors are being treated the same for the error processing handling setting. For some (e.g., UNAVAILABLE) we always want to error out and reset. Only for certain ones (e.g., GRPC size limit exceeded) should we logic be based on the error processing handling mode.

      2023-06-02 20:47:08,893 WARN   Vitess|dev.byuser|streaming  VStream streaming onError. Status: Status{code=UNAVAILABLE, description=HTTP/2 error code: NO_ERROR
      Received Goaway, cause=null}   [io.debezium.connector.vitess.connection.VitessReplicationConnection]
      io.grpc.StatusRuntimeException: UNAVAILABLE: HTTP/2 error code: NO_ERROR
      Received Goaway
              at io.grpc.Status.asRuntimeException(Status.java:533)
              at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:478)
              at io.grpc.internal.DelayedClientCall$DelayedListener$3.run(DelayedClientCall.java:463)
              at io.grpc.internal.DelayedClientCall$DelayedListener.delayOrExecute(DelayedClientCall.java:427)
              at io.grpc.internal.DelayedClientCall$DelayedListener.onClose(DelayedClientCall.java:460)
              at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:616)
              at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:69)
              at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:802)
              at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:781)
              at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
              at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
              at java.base/java.lang.Thread.run(Thread.java:829)
       

      Implementation ideas (optional)

      Only use error processing handling mode for certain errors (for now GRPC size limit exceeded). For all other errors, do the standard behavior of erroring out.

              Unassigned Unassigned
              tthorn Thomas Thornton
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: