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

SQL Server signal actions not recognized with more than one database

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • None
    • 2.5.2.Final
    • sqlserver-connector
    • None
    • False
    • None
    • False

    Description

      In order to make your issue reports as actionable as possible, please provide the following information, depending on the issue type.

      Bug report

      For bug reports, provide this information, please:

      What Debezium connector do you use and what version?

      2.5.2.Final

      What is the connector configuration?

       

          database.hostname: "..."
          database.port: "1433"
          database.user: SA
          database.password: "...."
          database.names: "data,debezium"
          database.applicationIntent: ReadOnly
          driver.encrypt: "true"
          driver.trustServerCertificate: "true"
          topic.prefix: "signalling"
          topic.creation.enable: "true"
          topic.creation.default.replication.factor: "3"
          topic.creation.default.partitions: "10"
          table.include.list: "dbo.debezium_signal,dbo.NewPersons"
          schema.history.internal.kafka.bootstrap.servers: "..."
          schema.history.internal.consumer.security.protocol: "SASL_SSL"
          schema.history.internal.consumer.ssl.endpoint.identification.algorithm: "https"
          schema.history.internal.consumer.sasl.mechanism: "PLAIN"
          schema.history.internal.consumer.sasl.jaas.config: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"${file:/mnt/secrets/ccloud-credentials/plain.txt:username}\" password=\"${file:/mnt/secrets/ccloud-credentials/plain.txt:password}\";"
          schema.history.internal.producer.security.protocol: "SASL_SSL"
          schema.history.internal.producer.ssl.endpoint.identification.algorithm: "https"
          schema.history.internal.producer.sasl.mechanism: "PLAIN"
          schema.history.internal.producer.sasl.jaas.config: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"${file:/mnt/secrets/ccloud-credentials/plain.txt:username}\" password=\"${file:/mnt/secrets/ccloud-credentials/plain.txt:password}\";"
          schema.history.internal.kafka.topic: "signalling-schemahistory"
          signal.data.collection: debezium.dbo.debezium_signal
          signal.enabled.channels: "source,kafka"
          signal.kafka.topic: signalling-signal
          signal.kafka.bootstrap.servers: ...
          signal.consumer.security.protocol: "SASL_SSL"
          signal.consumer.ssl.endpoint.identification.algorithm: "https"
          signal.consumer.sasl.mechanism: "PLAIN"
          signal.consumer.sasl.jaas.config: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"${file:/mnt/secrets/ccloud-credentials/plain.txt:username}\" password=\"${file:/mnt/secrets/ccloud-credentials/plain.txt:password}\";"
          provide.transaction.metadata: "false"
          include.schema.changes: "false"

       

       

      What is the captured database version and mode of deployment?

      docker instantiated SQL Server

       

      docker run -d -p 1433:1433 --env ACCEPT_EULA=Y --env SA_PASSWORD='...' --env MSSQL_AGENT_ENABLED=True --name sql1 mcr.microsoft.com/mssql/server:2022-latest 

       

       

      What behaviour do you expect?

      I expect to be able to use source (the signal.data.collection database table) and kafka (signal.kafka.topic) to be able to send signals to execute snapshot or other activities on the debezium connector.

      What behaviour do you see?

      It is unable to trigger any signals instead giving the message such as below.

       

      [WARN] 2024-02-28 19:54:47,628 [debezium-sqlserverconnector-signalling-change-event-source-coordinator] io.debezium.pipeline.signal.SignalProcessor processSignal - Signal 'A9EE28E9-D6F7-45D1-B561-13F114959126' has been received but the type 'execute-snapshot' is not recognized  

      With debug logging enabled there is no evidence of any signal actions being registered as this debug statement should log: https://github.com/debezium/debezium/blob/v2.5.2.Final/debezium-core/src/main/java/io/debezium/pipeline/signal/SignalProcessor.java#L132

      When the debezium_signal table is located within the same database as the captured table and database.names only has one database, the actions are registered and it is not an issue.

      I suspect the issue is related to this TODO but I could not f ind a ticket referencing the TODO. 

      https://github.com/debezium/debezium/blob/v2.5.2.Final/debezium-connector-sqlserver/src/main/java/io/debezium/connector/sqlserver/SqlServerChangeEventSourceCoordinator.java#L94

      In the same way that the the kafka signal table needs to have only one partiotion, it seems like two database.names appears as if it were a topic with more than one partition and this: https://github.com/debezium/debezium/blob/v2.5.2.Final/debezium-core/src/main/java/io/debezium/pipeline/ChangeEventSourceCoordinator.java#L176 

      results in Optional.empty()

       

       

      Do you see the same behaviour using the latest relesead Debezium version?

      Yes 2.5.2

      Do you have the connector logs, ideally from start till finish?

      Yes

       

      How to reproduce the issue using our tutorial deployment?

      No

       

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dgradl-dlth Dan Gradl
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: