Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-4929

Transformation Key/Value type references should be to class name(), not canonicalName()

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 0.10.2.0
    • 0.11.0.0
    • connect
    • None

    Description

      The docs suggest that referencing the Key/Value transformations is done as follows:

          "transforms": "replaceFieldValue",
          "transforms.replaceFieldValue.type":  "org.apache.kafka.connect.transforms.ReplaceField.Value"
      

      But that results in a validation failure saying that the class cannot be found.

                  "value": {
                      "errors": [
                          "Invalid value org.apache.kafka.connect.transforms.ReplaceField.Value for configuration transforms.replaceFieldValue.type: Class org.apache.kafka.connect.transforms.ReplaceField.Value could not be found.",
                          "Invalid value null for configuration transforms.replaceFieldValue.type: Not a Transformation"
                      ],
                      "name": "transforms.replaceFieldValue.type",
                      "recommended_values": [
                          "org.apache.kafka.connect.transforms.ExtractField.Key",
                          "org.apache.kafka.connect.transforms.ExtractField.Value",
                          "org.apache.kafka.connect.transforms.HoistField.Key",
                          "org.apache.kafka.connect.transforms.HoistField.Value",
                          "org.apache.kafka.connect.transforms.InsertField.Key",
                          "org.apache.kafka.connect.transforms.InsertField.Value",
                          "org.apache.kafka.connect.transforms.MaskField.Key",
                          "org.apache.kafka.connect.transforms.MaskField.Value",
                          "org.apache.kafka.connect.transforms.RegexRouter",
                          "org.apache.kafka.connect.transforms.ReplaceField.Key",
                          "org.apache.kafka.connect.transforms.ReplaceField.Value",
                          "org.apache.kafka.connect.transforms.SetSchemaMetadata.Key",
                          "org.apache.kafka.connect.transforms.SetSchemaMetadata.Value",
                          "org.apache.kafka.connect.transforms.TimestampRouter",
                          "org.apache.kafka.connect.transforms.ValueToKey"
                      ],
      

      Since the Key / Value transformations are defined as static nested classes, the proper notation is

          "transforms": "replaceFieldValue",
          "transforms.replaceFieldValue.type":  "org.apache.kafka.connect.transforms.ReplaceField$Value"
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              bruce.szalwinski bruce szalwinski
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: