-
Notifications
You must be signed in to change notification settings - Fork 89
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
[server][controller] Add MaterializedViewWriter and support view writers in L/F #1296
Conversation
e43850a
to
a711263
Compare
791712b
to
bcee9bc
Compare
bcee9bc
to
3c59c8c
Compare
...ient/src/main/java/com/linkedin/davinci/kafka/consumer/LeaderFollowerStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
...ts/da-vinci-client/src/main/java/com/linkedin/davinci/store/view/MaterializedViewWriter.java
Outdated
Show resolved
Hide resolved
clients/venice-push-job/src/main/java/com/linkedin/venice/hadoop/VenicePushJob.java
Show resolved
Hide resolved
3c59c8c
to
37c15cc
Compare
internal/venice-common/src/main/java/com/linkedin/venice/meta/MaterializedViewParameters.java
Show resolved
Hide resolved
...ces/venice-controller/src/main/java/com/linkedin/venice/pushmonitor/AbstractPushMonitor.java
Show resolved
Hide resolved
...ient/src/main/java/com/linkedin/davinci/kafka/consumer/LeaderFollowerStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
...client/src/main/java/com/linkedin/davinci/kafka/consumer/ActiveActiveStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
...client/src/main/java/com/linkedin/davinci/kafka/consumer/ActiveActiveStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
...ient/src/main/java/com/linkedin/davinci/kafka/consumer/LeaderFollowerStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
...client/src/main/java/com/linkedin/davinci/kafka/consumer/ActiveActiveStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
clients/venice-push-job/src/main/java/com/linkedin/venice/hadoop/VenicePushJob.java
Outdated
Show resolved
Hide resolved
...-job/src/main/java/com/linkedin/venice/hadoop/mapreduce/datawriter/reduce/VeniceReducer.java
Outdated
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/views/ChangeCaptureView.java
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/writer/CompositeVeniceWriter.java
Outdated
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Show resolved
Hide resolved
51028b4
to
1e7493f
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.
Left a few more comments.
...ient/src/main/java/com/linkedin/davinci/kafka/consumer/LeaderFollowerStoreIngestionTask.java
Show resolved
Hide resolved
...ient/src/main/java/com/linkedin/davinci/kafka/consumer/LeaderFollowerStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
...s/da-vinci-client/src/main/java/com/linkedin/davinci/store/view/VeniceViewWriterFactory.java
Outdated
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/writer/CompositeVeniceWriter.java
Outdated
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/writer/CompositeVeniceWriter.java
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Show resolved
Hide resolved
...ces/venice-controller/src/main/java/com/linkedin/venice/pushmonitor/AbstractPushMonitor.java
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/writer/CompositeVeniceWriter.java
Outdated
Show resolved
Hide resolved
3ad1097
to
88ec04b
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.
There is a major comment regarding LeaderCompleteState
HB messages and we don't need to address it in this PR and all other comments are very minor.
Thanks a lot for addressing the comments quickly!
...ient/src/main/java/com/linkedin/davinci/kafka/consumer/LeaderFollowerStoreIngestionTask.java
Outdated
Show resolved
Hide resolved
...ts/da-vinci-client/src/main/java/com/linkedin/davinci/store/view/MaterializedViewWriter.java
Show resolved
Hide resolved
...venice-push-job/src/test/java/com/linkedin/venice/hadoop/mapreduce/AbstractTestVeniceMR.java
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/writer/CompositeVeniceWriter.java
Outdated
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/writer/CompositeVeniceWriter.java
Outdated
Show resolved
Hide resolved
internal/venice-common/src/main/java/com/linkedin/venice/writer/CompositeVeniceWriter.java
Outdated
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Outdated
Show resolved
Hide resolved
...ces/venice-controller/src/main/java/com/linkedin/venice/pushmonitor/AbstractPushMonitor.java
Outdated
Show resolved
Hide resolved
...ces/venice-controller/src/main/java/com/linkedin/venice/pushmonitor/AbstractPushMonitor.java
Outdated
Show resolved
Hide resolved
979089c
to
a5260e7
Compare
…ers in L/F 1. View writers will be invoked in L/F SIT too instead of only in A/A SIT. We rely on view config validation to ensure views that do require A/A are only added to stores with A/A enabled. 2. This PR only includes creation of materialized view topics, writing of data records and control messages to the materialized view topics in server and controller. - Materialized view topics are created during version creation time along with other view topics. - SOP is sent during view topic creation time with same chunking and compression configs as the store version. - EOP is sent when servers have reported EOP in every partition. - Incremental push control messages SOIP and EOIP are not propagated to the view topic for now because the end to end incremental push tracking story for view topics is not clear yet. Store owners will likely just disable the requirement to wait for view consumers to fully ingest the incremental push. - Ingestion heartbeats will be propagated in a broadcast manner. See implementation for details. - Version swap for CDC users will be implemented in a separate PR to keep this PR somewhat short for review. 3. TODO: one pending issue to be resolved is that during processing of batch records in the native replication source fabric, where we consume local VT, a leader transfer could result in missing records in the materialized view topic. This is because we don't do any global checkpointing across leader and followers when consuming local VT.
1. Removed heartbeat propagation 2. Refactored CompositeVeniceWriter and reduced code dup 3. Better CM coordination in L/F SIT for segment and heartbeat CMs
ddc56a0
to
4e07678
Compare
4e07678
to
dc8be78
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.
Great work, thanks!
[server][controller] Add MaterializedViewWriter and support view writers in L/F
View writers will be invoked in L/F SIT too instead of only in A/A SIT. We rely on view config validation to ensure views that do require A/A are only added to stores with A/A enabled.
This PR only includes creation of materialized view topics, writing of data records and control messages to the materialized view topics in server and controller.
How was this PR tested?
Unit and integration tests
Does this PR introduce any user-facing changes?