Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Adding support to propagate unique ID to message for Kafka EventSource messages #1453

Merged
merged 3 commits into from
Dec 9, 2021

Conversation

dpadhiar
Copy link
Member

@dpadhiar dpadhiar commented Dec 8, 2021

Checklist:

closes: #1427

Logs from kafka-eventsource pod:


kubectl -n argo-events logs kafka-eventsource-5rz64-84fb76f977-2fxgz -f{"level":"info","ts":1638925051.5781267,"logger":"argo-events.eventsource","caller":"metrics/metrics.go:172","msg":"starting metrics server","eventSourceName":"kafka"}
{"level":"info","ts":1638925051.5772445,"logger":"argo-events.eventsource","caller":"cmd/start.go:63","msg":"starting eventsource server","eventSourceName":"kafka","version":"v1+de99a9e.dirty"}
{"level":"info","ts":1638925051.6553247,"logger":"argo-events.eventsource","caller":"leaderelection/leaderelection.go:122","msg":"Not the LEADER, stand by ...","eventSourceName":"kafka"}
{"level":"info","ts":1638925052.65216,"logger":"argo-events.eventsource","caller":"leaderelection/leaderelection.go:131","msg":"Becoming a Candidate, stand by ...","eventSourceName":"kafka"}
{"level":"info","ts":1638925052.6532981,"logger":"argo-events.eventsource","caller":"leaderelection/leaderelection.go:128","msg":"I'm the LEADER, starting ...","eventSourceName":"kafka"}
{"level":"info","ts":1638925052.6534202,"logger":"argo-events.eventsource","caller":"eventsources/eventing.go:318","msg":"Starting event source server...","eventSourceName":"kafka"}
{"level":"info","ts":1638925052.6608167,"logger":"argo-events.eventsource","caller":"driver/nats.go:93","msg":"NATS auth strategy: Token","eventSourceName":"kafka","clientID":"client-kafka-eventsource-5rz64-84fb76f977-2fxgz-941"}
{"level":"info","ts":1638925052.6903045,"logger":"argo-events.eventsource","caller":"driver/nats.go:105","msg":"Connected to NATS server.","eventSourceName":"kafka","clientID":"client-kafka-eventsource-5rz64-84fb76f977-2fxgz-941"}
{"level":"info","ts":1638925052.7265532,"logger":"argo-events.eventsource","caller":"driver/nats.go:118","msg":"Connected to NATS streaming server.","eventSourceName":"kafka","clientID":"client-kafka-eventsource-5rz64-84fb76f977-2fxgz-941"}
{"level":"info","ts":1638925052.72922,"logger":"argo-events.eventsource","caller":"eventsources/eventing.go:438","msg":"Eventing server started.","eventSourceName":"kafka"}
{"level":"info","ts":1638925052.730126,"logger":"argo-events.eventsource","caller":"eventsources/eventing.go:341","msg":"starting eventbus connection daemon...","eventSourceName":"kafka"}
{"level":"info","ts":1638925052.730585,"logger":"argo-events.eventsource","caller":"kafka/start.go:80","msg":"start kafka event source...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example"}
{"level":"info","ts":1638925052.7317588,"logger":"argo-events.eventsource","caller":"kafka/start.go:163","msg":"start kafka event source...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example"}
{"level":"info","ts":1638925052.7317789,"logger":"argo-events.eventsource","caller":"kafka/start.go:167","msg":"connecting to Kafka cluster...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example"}
{"level":"info","ts":1638925052.7906559,"logger":"argo-events.eventsource","caller":"kafka/start.go:188","msg":"parsing the partition value...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example","partition-id":"1"}
{"level":"info","ts":1638925052.7907264,"logger":"argo-events.eventsource","caller":"kafka/start.go:195","msg":"getting available partitions...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example","partition-id":"1"}
{"level":"info","ts":1638925052.7908683,"logger":"argo-events.eventsource","caller":"kafka/start.go:201","msg":"verifying the partition exists within available partitions...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example","partition-id":"1"}
{"level":"info","ts":1638925052.790884,"logger":"argo-events.eventsource","caller":"kafka/start.go:206","msg":"getting partition consumer...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example","partition-id":"1"}
{"level":"info","ts":1638925052.809988,"logger":"argo-events.eventsource","caller":"kafka/start.go:242","msg":"listening to messages on the partition...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example","partition-id":"1"}
{"level":"info","ts":1638925128.6844213,"logger":"argo-events.eventsource","caller":"kafka/start.go:217","msg":"dispatching event on the data channel...","eventSourceName":"kafka","eventSourceType":"kafka","eventName":"example","partition-id":"1"}
{"level":"info","ts":1638925128.703207,"logger":"argo-events.eventsource","caller":"eventsources/eventing.go:426","msg":"succeeded to publish an event","eventSourceName":"kafka","eventName":"example","eventSourceType":"kafka","eventID":"kafka:example:kafka-broker:9092:topic-2:1:5"}

Copy link
Member

@sarabala1979 sarabala1979 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGMT
@whynowy can you review it?

@dpadhiar dpadhiar marked this pull request as ready for review December 9, 2021 00:00
type Options func(*event.Event) error

// Option to set different ID for event
func SetCustomID(id string) Options {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A better function name would be WithID(id string).


// Function can be passed as Option to generate unique id for kafka event
// eventSourceName:eventName:kafka-url:topic:partition:offset
func genUniqueID(eventSourceName string, eventName string, kafkaURL string, topic string, partition int32, offset int64) string {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor - func genUniqueID(eventSourceName, eventName, kafkaURL, topic string, partition int32, offset int64).

// eventSourceName:eventName:kafka-url:topic:partition:offset
func genUniqueID(eventSourceName string, eventName string, kafkaURL string, topic string, partition int32, offset int64) string {

kafkaID := fmt.Sprintf("%s:%s:%s:%s:%d:%d", eventSourceName, eventName, kafkaURL, topic, partition, offset)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kafkaURL could be very long, which contains several URLs separated by comma. I would suggest to split the URL to only take the first one.

@@ -375,9 +380,20 @@ func (consumer *Consumer) processOne(session sarama.ConsumerGroupSession, messag
return errors.Wrap(err, "failed to marshal the event data, rejecting the event...")
}

if err = consumer.dispatch(eventBody); err != nil {
kafkaID := genUniqueID(consumer.eventSourceName, consumer.eventName, consumer.kafkaEventSource.URL, message.Topic, message.Partition, message.Offset)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Name it messageID or kafkaMessageID, kafkaID is very tricky.

Signed-off-by: Dillen Padhiar <dpadhiar@ucsd.edu>
Copy link
Member

@whynowy whynowy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks @dpadhiar

@whynowy whynowy merged commit b4c3b5c into argoproj:master Dec 9, 2021
whynowy pushed a commit that referenced this pull request Dec 10, 2021
BulkBeing pushed a commit to BulkBeing/argo-events that referenced this pull request Mar 7, 2022
juliev0 pushed a commit to juliev0/argo-events that referenced this pull request Mar 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Propagate unique ID to the message for Kafka EventSource messages
3 participants