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

Message Headers are surrounded with double quotes when using debezium.source.header.converter.schemas.enable=false

XMLWordPrintable

    • False
    • Hide

      None

      Show
      None
    • False

      Bug report

      What Debezium connector do you use and what version?

      MongoDB or postgresql

      What is the connector configuration?

      debezium.sink.type=rabbitmq
      debezium.source.connector.class=io.debezium.connector.postgresql.PostgresConnector
      debezium.source.topic.prefix=testc
      debezium.source.schema.include.list=inventory
      debezium.source.table.include.list=inventory.customers
      debezium.transforms=addheader
      debezium.transforms.addheader.type=org.apache.kafka.connect.transforms.InsertHeader
      debezium.transforms.addheader.header=test
      debezium.transforms.addheader.value.literal=value
      debezium.source.header.converter.schemas.enable=false

      What is the captured database version and mode of depoyment?

      • MongoDB 7.0 in k8s
      • postgresql 16 in junit IT tests

      What behaviour do you expect?

      When using debezium.source.header.converter.schemas.enable=false I expect message headers to be simple string, without surrounding quotes.

      What behaviour do you see?

      Message headers are surrounded by double quotes.

      For example, with this configuration : 

       

      debezium.transforms.addheader.type=org.apache.kafka.connect.transforms.InsertHeader
      debezium.transforms.addheader.header=test
      debezium.transforms.addheader.value.literal=value
      debezium.source.header.converter.schemas.enable=false

       

      header on the message is : 

      test=""value""

      instead of

      test="value"

      If I comment out the last line, header include the schema but not the surrounding double quotes

       

      test="{"schema": {"type":"string","optional":false} ,"payload":"value"}"
      

       

       

      To reproduce, I have updated test class RabbitMqIT and RabbitMqTestConfigSource to add new properties et assertions on header value.

      Please find the files attached.

      The modified test outputs : 

       

      [ERROR] Failures: 
      [ERROR]   RabbitMqIT.testRabbitMq:145->lambda$testRabbitMq$2:146 
      Expecting:
       <""value"">
      to be equal to:
       <"value">
      but was not.

       

       

      I have also tested it in a real deployment with rabbitmq and mongodb connector with this simple configuration
       

      debezium.transforms=unwrap debezium.transforms.unwrap.type=io.debezium.connector.mongodb.transforms.ExtractNewDocumentState debezium.transforms.unwrap.add.headers.prefix= debezium.transforms.unwrap.add.headers=op

       
      In RabbitMQ UI, the double quotes are clearly visible:

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

      I have tested on 2.4.0, 2.4.1 and 2.5.0-SNAPSHOT

       

              Unassigned Unassigned
              o.boudet@gmail.com Olivier Boudet
              Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: