knative / eventing-contrib

Event Sources
Apache License 2.0
224 stars 225 forks source link

KafkaChannel error: "topic name already exists." (KafkaChannel 0.10.3) #793

Closed BFrancisA closed 4 years ago

BFrancisA commented 4 years ago

Expected Behavior

Using KafkaChannel 0.10.3
Create a new broker with a KafkaChannel. The Kafka topic is created. kubectl get brokers shows READY = true.

Actual Behavior

$ kubectl get brokers -n events-kafka-1
NAME       READY   REASON      URL                                                       AGE
default    True                http://default-broker.events-kafka-1.svc.cluster.local    18h
kafka-20   False   NoAddress   http://kafka-20-broker.events-kafka-1.svc.cluster.local   101m

Steps to Reproduce the Problem

  1. Install Istio 1.4.0. Knative Eventing 0.10.0, Knative Serving 0.10.0, KafkaChannel 0.10.3 Verified that all pods are running.
  2. Create a default broker in namespace events-kafka-1.
    kubectl create namespace events-kafka-1
    kubectl label namespace events-kafka-1  knative-eventing-injection=enabled
    kubectl  get brokers -n events-kafka-1  

    No errors with this:

    $ kubectl get brokers -n events-kafka-1
    NAME       READY   REASON      URL                                                       AGE
    default    True                http://default-broker.events-kafka-1.svc.cluster.local    18h

    Next create another broker called kafka-20 using:

    cat << EOF | kubectl apply -f -
    apiVersion: eventing.knative.dev/v1alpha1
    kind: Broker
    metadata:
    name: kafka-20
    namespace: events-kafka-1
    spec:
    channelTemplateSpec:
    apiVersion: messaging.knative.dev/v1alpha1
    kind: KafkaChannel
    spec:
      numPartitions: 20
      replicationFactor: 1
    EOF

    This completes. Check the brokers again:

    $ kubectl get brokers -n events-kafka-1
    NAME       READY   REASON      URL                                                       AGE
    default    True                http://default-broker.events-kafka-1.svc.cluster.local    18h
    kafka-20   False   NoAddress   http://kafka-20-broker.events-kafka-1.svc.cluster.local   101m

    Logs for controller kafka-ch-controller-88d7b9c76-zz2lk show:

    
    {"level":"info","ts":"2019-12-12T19:41:32.828Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:406","msg":"Creating topic on Kafka cluster","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"792cfc5c-3689-426c-8ea1-8e70bc5f6fc0","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger"}
    {"level":"info","ts":"2019-12-12T19:41:33.003Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:416","msg":"Successfully created topic","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"792cfc5c-3689-426c-8ea1-8e70bc5f6fc0","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger"}
    {"level":"info","ts":"2019-12-12T19:41:33.013Z","logger":"controller.kafka-ch-controller.event-broadcaster","caller":"record/event.go:258","msg":"Event(v1.ObjectReference{Kind:\"KafkaChannel\", Namespace:\"events-kafka-1\", Name:\"kafka-20-kne-trigger\", UID:\"b85f8091-fe1f-4190-845d-6930be325392\", APIVersion:\"messaging.knative.dev/v1alpha1\", ResourceVersion:\"141824\", FieldPath:\"\"}): type: 'Normal' reason: 'ChannelReconciled' KafkaChannel reconciled","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller"}
    {"level":"info","ts":"2019-12-12T19:41:33.017Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:378","msg":"KafkaChannel \"kafka-20-kne-trigger\" became ready after 1.017566918s","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller"}
    {"level":"info","ts":"2019-12-12T19:41:33.018Z","logger":"controller.kafka-ch-controller","caller":"controller/controller.go:351","msg":"Reconcile succeeded. Time taken: 224.966865ms.","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"792cfc5c-3689-426c-8ea1-8e70bc5f6fc0","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger"}
    {"level":"info","ts":"2019-12-12T19:41:33.025Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:406","msg":"Creating topic on Kafka cluster","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"96359022-e20b-4bf3-931b-dce4ba07464c","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger"}
    {"level":"error","ts":"2019-12-12T19:41:33.043Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:414","msg":"Error creating topic","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"96359022-e20b-4bf3-931b-dce4ba07464c","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger","error":"kafka server: Topic with this name already exists. - Topic 'knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger' already exists.","stacktrace":"knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller.(*Reconciler).createTopic\n\t/home/prow/go/src/knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller/kafkachannel.go:414\nknative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller.(*Reconciler).reconcile\n\t/home/prow/go/src/knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller/kafkachannel.go:250\nknative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller.(*Reconciler).Reconcile\n\t/home/prow/go/src/knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller/kafkachannel.go:192\nknative.dev/eventing-contrib/vendor/knative.dev/pkg/controller.(*Impl).processNextWorkItem\n\t/home/prow/go/src/knative.dev/eventing-contrib/vendor/knative.dev/pkg/controller/controller.go:342\nknative.dev/eventing-contrib/vendor/knative.dev/pkg/controller.(*Impl).Run.func2\n\t/home/prow/go/src/knative.dev/eventing-contrib/vendor/knative.dev/pkg/controller/controller.go:291"}

The error repeats... {"level":"info","ts":"2019-12-12T19:41:32.828Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:406","msg":"Creating topic on Kafka cluster","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"792cfc5c-3689-426c-8ea1-8e70bc5f6fc0","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger"} {"level":"info","ts":"2019-12-12T19:41:33.003Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:416","msg":"Successfully created topic","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"792cfc5c-3689-426c-8ea1-8e70bc5f6fc0","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger"} {"level":"info","ts":"2019-12-12T19:41:33.013Z","logger":"controller.kafka-ch-controller.event-broadcaster","caller":"record/event.go:258","msg":"Event(v1.ObjectReference{Kind:\"KafkaChannel\", Namespace:\"events-kafka-1\", Name:\"kafka-20-kne-trigger\", UID:\"b85f8091-fe1f-4190-845d-6930be325392\", APIVersion:\"messaging.knative.dev/v1alpha1\", ResourceVersion:\"141824\", FieldPath:\"\"}): type: 'Normal' reason: 'ChannelReconciled' KafkaChannel reconciled","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller"} {"level":"info","ts":"2019-12-12T19:41:33.017Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:378","msg":"KafkaChannel \"kafka-20-kne-trigger\" became ready after 1.017566918s","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller"} {"level":"info","ts":"2019-12-12T19:41:33.018Z","logger":"controller.kafka-ch-controller","caller":"controller/controller.go:351","msg":"Reconcile succeeded. Time taken: 224.966865ms.","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"792cfc5c-3689-426c-8ea1-8e70bc5f6fc0","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger"} {"level":"info","ts":"2019-12-12T19:41:33.025Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:406","msg":"Creating topic on Kafka cluster","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"96359022-e20b-4bf3-931b-dce4ba07464c","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger"} {"level":"error","ts":"2019-12-12T19:41:33.043Z","logger":"controller.kafka-ch-controller","caller":"controller/kafkachannel.go:414","msg":"Error creating topic","controller/impl":"pkg","knative.dev/controller":"kafka-ch-controller","knative.dev/traceid":"96359022-e20b-4bf3-931b-dce4ba07464c","knative.dev/key":"events-kafka-1/kafka-20-kne-trigger","topic":"knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger","error":"kafka server: Topic with this name already exists. - Topic 'knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger' already exists.","stacktrace":"knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller.(Reconciler).createTopic\n\t/home/prow/go/src/knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller/kafkachannel.go:414\nknative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller.(Reconciler).reconcile\n\t/home/prow/go/src/knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller/kafkachannel.go:250\nknative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller.(Reconciler).Reconcile\n\t/home/prow/go/src/knative.dev/eventing-contrib/kafka/channel/pkg/reconciler/controller/kafkachannel.go:192\nknative.dev/eventing-contrib/vendor/knative.dev/pkg/controller.(Impl).processNextWorkItem\n\t/home/prow/go/src/knative.dev/eventing-contrib/vendor/knative.dev/pkg/controller/controller.go:342\nknative.dev/eventing-contrib/vendor/knative.dev/pkg/controller.(*Impl).Run.func2\n\t/home/prow/go/src/knative.dev/eventing-contrib/vendor/knative.dev/pkg/controller/controller.go:291"}

 KafkaChannels are of course not ready.

$ kubectl get KafkaChannels -n events-kafka-1 NAME READY REASON URL AGE kafka-20-kne-ingress False TopicCreateFailed http://kafka-20-kne-ingress-kn-channel.events-kafka-1.svc.cluster.local 131m kafka-20-kne-trigger False TopicCreateFailed 131m

The Kafka topics are being created:

root@kafka-a-0:/var/opt/kafka/bin# ./kafka-topics.sh --bootstrap-server localhost:9092 --list __consumer_offsets knative-messaging-kafka.events-kafka-1.kafka-20-kne-ingress knative-messaging-kafka.events-kafka-1.kafka-20-kne-trigger



## Additional Info
This was working ok with KafkaChannel 0.9.0.
BFrancisA commented 4 years ago

Retested this example with Knative Eventing 0.11.0 and KafkaChannel 0.11.2. It worked correctly without any errors. Since the error has disappeared in the new version, I am closing this issue.