This is an automated email from the ASF dual-hosted git repository.
kennknowles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 8a6a3c1837d Add V2 standard coders for WindowedValue and Timer with
ElementMetadata support (#40744)
8a6a3c1837d is described below
commit 8a6a3c1837df000d42bbef460d12ac04f2ee5f7d
Author: Radosław Stankiewicz <[email protected]>
AuthorDate: Fri Oct 23 19:41:04 2026 +0200
Add V2 standard coders for WindowedValue and Timer with ElementMetadata
support (#40744)
---
.../beam/model/pipeline/v1/beam_runner_api.proto | 42 ++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git
a/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto
b/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto
index ceea6ee2c17..ec83504a060 100644
---
a/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto
+++
b/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto
@@ -1145,6 +1145,48 @@ message StandardCoders {
// encoded with it's corresponding coder.
// Components: single coder for the value
NULLABLE = 17 [(beam_urn) = "beam:coder:nullable:v1"];
+
+ // Encodes an element, the windows it is in, the timestamp of the element,
+ // the pane of the element, and optionally element metadata.
+ // The encoding is represented as:
+ // timestamp windows pane [metadata_length metadata] element
+ //
+ // timestamp - Same as beam:coder:windowed_value:v1.
+ // windows - Same as beam:coder:windowed_value:v1.
+ // pane - Similar to beam:coder:windowed_value:v1, but the first byte
+ // has the high bit 0x80 set if element metadata
+ // is present.
+ // metadata_length - A VarInt64 representing the length of the metadata
+ // payload. Only present if the 0x80 bit is set on the first byte of
+ // pane.
+ // metadata - Serialized ElementMetadata proto bytes. Only present if the
+ // 0x80 bit is set on the first byte of pane.
+ // element - Same as beam:coder:windowed_value:v1.
+ //
+ // Components: The element coder and the window coder, in that order.
+ WINDOWED_VALUE_V2 = 19 [(beam_urn) = "beam:coder:windowed_value:v2"];
+
+ // Encodes a timer containing a user key, a dynamic timer tag, a clear bit,
+ // a fire timestamp, a hold timestamp, the windows, the paneinfo, and
+ // optionally element metadata.
+ // The encoding is represented as:
+ // user key - Same as beam:coder:timer:v1.
+ // dynamic timer tag - Same as beam:coder:timer:v1.
+ // windows - Same as beam:coder:timer:v1.
+ // clear bit - Same as beam:coder:timer:v1.
+ // If clear bit is false, it is followed by:
+ // fire timestamp - Same as beam:coder:timer:v1.
+ // hold timestamp - Same as beam:coder:timer:v1.
+ // paneinfo - Similar to beam:coder:timer:v1, but the first byte has
+ // the high bit 0x80 set if element metadata
+ // is present.
+ // metadata_length - A VarInt64 representing the length of the metadata
+ // payload. Only present if the 0x80 bit is set on the first byte of
+ // paneinfo.
+ // metadata - Serialized ElementMetadata proto bytes. Only present if
the
+ // 0x80 bit is set on the first byte of paneinfo.
+ // Components: Coder for the key and windows.
+ TIMER_V2 = 20 [(beam_urn) = "beam:coder:timer:v2"];
}
}