[protocol][build] Stage MetadataResponseRecord v4 - #2964
Open
ymuppala wants to merge 1 commit into
Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR stages a new Avro protocol version (MetadataResponseRecord v4) by adding a defaulted storageMode field to the nested VersionProperties record, while intentionally keeping Avro code generation and the active runtime protocol pinned to v3 to allow a safe, incremental rollout.
Changes:
- Added
MetadataResponseRecordv4 schema withVersionProperties.storageMode(int, default0/INTERNAL) for backward compatibility. - Updated the Avro build override list to keep
MetadataResponseRecordgeneration pinned tov3despite the presence ofv4.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| internal/venice-common/src/main/resources/avro/MetadataResponseRecord/v4/MetadataResponseRecord.avsc | Introduces v4 schema with the new defaulted storageMode field for staged protocol evolution. |
| build.gradle | Pins Avro compilation for MetadataResponseRecord to v3 via the version override mechanism to prevent early activation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
misyel
previously approved these changes
Aug 7, 2026
Adds the v4 .avsc carrying VersionProperties.storageMode, the current version's storage mode (mirrors StoreVersion.storageMode from StoreMetaValue v44), so a follow-up PR can expose it over the metadata fetch response and let Fast Clients gate external-storage reads on the version actually being served. Schema-staging only: the build.gradle versionOverrides entry pins MetadataResponseRecord codegen to v3, so the generated VersionProperties and the wire-format version are unchanged. A follow-up PR removes the pin, bumps SERVER_METADATA_RESPONSE 3 -> 4, populates the field server-side, and consumes it in the Fast Client. The new field is an int with default 0 (= INTERNAL, Venice-only), so v3 readers and v4 writers stay compatible in both directions and clients that never see the field behave exactly as they do today. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ymuppala
force-pushed
the
ymuppala/stage-metadata-storage-mode
branch
from
August 7, 2026 21:07
b7bc6d4 to
e295f2e
Compare
ymuppala
enabled auto-merge (squash)
August 7, 2026 23:11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stage
MetadataResponseRecordv4 with a defaultedstorageModefield inVersionProperties. Keep code generation and the runtime protocol pinned to v3 so this change can roll out before activation.The field defaults to
INTERNAL(0) for compatibility with older writers.Testing
./gradlew :internal:venice-common:compileJavaVersionPropertiesdoes not containstorageModewhile the v3 override is activeSERVER_METADATA_RESPONSEremains at version 3