-
Notifications
You must be signed in to change notification settings - Fork 0
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
OBSDATA-440 Adding SegmentMetadataEvent and publishing them via KafkaSegmentMetadataEmitter #106
Conversation
@harinirajendran , fyi, if you open the PR as draft, it won't add the owners as reviewers after it's opened and will also provide a clear indication that this is a draft not ready to be merged yet. |
Thanks @kkonstantine . I converted this to a Draft PR :) |
c27beb6
to
65afa3a
Compare
...rc/main/java/org/apache/druid/emitter/kafkasegmentmetadata/serde/DruidSegmentEventProto.java
Outdated
Show resolved
Hide resolved
...src/main/java/org.apache.druid.emitter.kafkasegmentmetadata/KafkaSegmentMetadataEmitter.java
Outdated
Show resolved
Hide resolved
65afa3a
to
ed45d4e
Compare
301e06f
to
2d8ee7c
Compare
core/src/main/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEvent.java
Outdated
Show resolved
Hide resolved
a28f5c5
to
0205c2a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR. I did my first pass, would have to set up druid codebase also.
core/src/test/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEventTest.java
Outdated
Show resolved
Hide resolved
extensions-contrib/kafka-segment-metadata-emitter/src/main/proto/DruidSegmentEvent.proto
Outdated
Show resolved
Hide resolved
.../src/main/java/org/apache/druid/data/input/opencensus/protobuf/OpenCensusProtobufReader.java
Outdated
Show resolved
Hide resolved
...tter/src/main/java/org/apache/druid/emitter/kafkasegmentmetadata/DruidSegmentEventProto.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEvent.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEvent.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEventTest.java
Outdated
Show resolved
Hide resolved
...tter/src/main/java/org/apache/druid/emitter/kafkasegmentmetadata/DruidSegmentEventProto.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/apache/druid/emitter/kafkasegmentmetadata/KafkaSegmentMetadataEmitter.java
Outdated
Show resolved
Hide resolved
.../test/java/org/apache/druid/data/input/opencensus/protobuf/OpenCensusProtobufReaderTest.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/apache/druid/indexing/common/actions/SegmentTransactionalInsertAction.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have addressed all other comments except this one in this update. Will add a different commit addressing this comment and re-request reviews at that point.
core/src/main/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEvent.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEvent.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEventTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/java/util/emitter/service/SegmentMetadataEventTest.java
Outdated
Show resolved
Hide resolved
.../src/main/java/org/apache/druid/data/input/opencensus/protobuf/OpenCensusProtobufReader.java
Outdated
Show resolved
Hide resolved
extensions-contrib/kafka-segment-metadata-emitter/src/main/proto/DruidSegmentEvent.proto
Outdated
Show resolved
Hide resolved
...tter/src/main/java/org/apache/druid/emitter/kafkasegmentmetadata/DruidSegmentEventProto.java
Outdated
Show resolved
Hide resolved
...tter/src/main/java/org/apache/druid/emitter/kafkasegmentmetadata/DruidSegmentEventProto.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/apache/druid/emitter/kafkasegmentmetadata/KafkaSegmentMetadataEmitter.java
Outdated
Show resolved
Hide resolved
...s-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated the following
- Removed the
-protobuf
suffix when the segment metata format is not JSON. - Fixed the double counting issue.
...s-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java
Show resolved
Hide resolved
...s-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java
Show resolved
Hide resolved
...ntrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java
Show resolved
Hide resolved
...s-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, added a note that we should do a follow-up to add tests for the eventTypes logic
Thanks, @xvrl for the review. |
before we merge this, we should make sure we enable tests for the target branch to ensure this passes all tests / validations |
10e598f
to
25ee854
Compare
1f7d391
to
e858efb
Compare
Adding the new
SegmentMetadataEvent
and publishing these segment-related metadata events into Kafka by enhancing theKafkaEmitter
Description
In this PR, we are enhancing
KafkaEmitter
, to emit metadata about published segments (SegmentMetadataEvent
) into a Kafka topic. This segment metadata information that gets published into Kafka, can be used by any other downstream services to query Druid intelligently based on the segments published.Old behavior of Kafka Emitter
Kafka Emitter always emits
metrics
andalerts
and would emitrequests
if the configrequest.topic
is configured.Configs
metric.topic
andalert.topic
are always mandatory and cannot benull
.Current behavior of Kafka Emitter [with backwards compatibility]
We introduced a new config named
event.types
which dictates the types of events we want theKafkaEmitter
to emit. This config takes in a list of strings and can have one or more from[alerts, metrics, requests and segmentMetadata]
. And based on this config,alert.topic
,request.topic
,metric.topic
andsegmentMetadata.topic
should be configured and not left empty.If no
event.types
is set, then by default, the kafka emitter would emitmetrics
andalerts
. And in that case, to maintain backwards compatibility, decision to send out requests are based on ifrequest.topic
is empty or set.Metadata format
The emitter by default would emit the metadata in json string format. If
segment.metadata.format
is set toprotobuf
, then the emitter emits it in protobuf format.Testing Done
SegmentMetadataEvent
classSegmentMetadataEvent
is getting published in KafkaThis PR has: