Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
10000 commits
Select commit Hold shift + click to select a range
3988ad7
Apply before set image
Oct 21, 2026
fa6c858
Merge pull request #40706 from apache/fix-publish-beam-metrics
Oct 21, 2026
8cae499
[Java] Close GcsUtilV2's small-file performance gaps with GcsUtilV1 (…
Oct 21, 2026
b54c607
move pipeline examples from blueprint to pipelines (#40615)
Oct 21, 2026
63d8acc
[BEAM-19954] Resolve string annotations in callable type hints (#40625)
Oct 21, 2026
5b9c5ba
test: allow users to set custom Neo4j config (#40700)
Oct 21, 2026
06e4102
[yaml] - fix spanner configs and examples (#40587)
Oct 21, 2026
b4f9f3e
Update xgboost dependency, execute in CI (#40694)
Oct 21, 2026
f3f7ad1
Fix prober community metrics (#40707)
Oct 21, 2026
5b6aa70
Merge pull request #40683 from apache/fix-spanner-flatmap
Oct 21, 2026
f5f6006
rename TestRecord (#40728)
Oct 22, 2026
1484637
drop transformers 428 (#40719)
Oct 22, 2026
9811046
[DebeziumIO] Add opt-in full metadata (op and Debezium source fields)…
Oct 22, 2026
e261c9f
[#36841] Spark 4 streaming: windowed GroupByKey and Combine via trans…
Oct 22, 2026
cae975b
Update FlareDB runner doc (#40576)
Oct 22, 2026
248548d
Merge pull request #40303 from reuvenlax/merge_validates_runner_phase2
Oct 22, 2026
3d5375a
Expand Beam SQL TPC-DS query support and add Python TPC-DS suite (#40…
Oct 22, 2026
9f5f83e
[Python] Keep BigQuery load jobs distinct for table aliases (#40001)
Oct 22, 2026
198abd4
[go] - update codeql go workflow
Oct 22, 2026
6e5fdbf
Temporarily skip Iceberg cdc tests for managed service (#40731)
Oct 22, 2026
94b84b6
[Java] Use GcsUtil V2 by default (#40713)
Oct 22, 2026
1fcf426
Upgrade allowed version of pillow (#40708)
Oct 22, 2026
e333810
Only feed total memory readings to the ModelManager resource estimato…
Oct 22, 2026
d593d38
[Python] Support custom BigQuery endpoints and universe domains (#40675)
Oct 22, 2026
d4ba44d
[Java] Honor GOOGLE_CLOUD_UNIVERSE_DOMAIN for the Dataflow endpoint (…
Oct 22, 2026
c8b5acf
Scope RunInference model_identifier annotation to BeamML_RunInference…
Oct 22, 2026
e4c2f8c
Honor allowMissingRequiredFields when building Storage Write API mess…
Oct 22, 2026
932dbe6
[Java][BigQueryIO] Fix BigQueryIO streaming insert silently dropping …
Oct 23, 2026
6848f84
Handle null split initialization results in Flink lazy source enumera…
Oct 23, 2026
6271afb
Merge pull request #40733 from apache/20261022_fixCodeqlGo
Oct 23, 2026
0213fa8
add pr size label workflow (#40717)
Oct 23, 2026
a7e7379
Bump google.golang.org/api from 0.304.0 to 0.305.0 in /sdks (#40742)
Oct 23, 2026
3d5ca3e
Update Numpy and Pandas Deps (#40704)
Oct 23, 2026
f1a9dc0
Update pytorch dependencies (#40710)
Oct 23, 2026
1d8e837
[RunInference] Validate model handler batching arguments (#40718)
Oct 23, 2026
313c54d
update bigquery tools test patch (#40746)
Oct 23, 2026
5c15387
[Python] Handle NaN in DataFrame drop_duplicates, duplicated and nuni…
Oct 23, 2026
f3c72af
Use default java
Oct 23, 2026
015209a
Workaround
Oct 23, 2026
0202475
[DebeziumIO] Add CHANGES.md entry for opt-in full metadata (#40701) (…
Oct 23, 2026
8a6a3c1
Add V2 standard coders for WindowedValue and Timer with ElementMetada…
Oct 23, 2026
5d0fdfb
Update transformers bounds and tests (#40745)
Oct 23, 2026
509c333
[Go] Avoid importing gcpopts in gcsx and dataflowlib to prevent flag …
Oct 23, 2026
1ba4129
Preserve ModelManager metric_tag across RunInference side-input model…
Oct 23, 2026
61a94bd
TPC-DS suite follow ups (#40741)
Oct 23, 2026
2c21f02
AddFiles: Parse partition keys in filepath for requirement check (#40…
Oct 23, 2026
eb8f207
Trigger BQ CDC IT. Fix impl (#40618)
Oct 23, 2026
2213e54
rename TestRecord
Oct 23, 2026
e71f3de
Merge pull request #40751 from apache/fix-local-env-tests
Oct 24, 2026
a168361
Bump serialize-javascript and mocha in /sdks/typescript (#40762)
Oct 24, 2026
7ab792f
[KafkaIO] Advance idle partition watermark without requiring a record…
Oct 25, 2026
1702dbb
Bump docker/login-action from 4.6.0 to 4.7.0 (#40806)
Oct 26, 2026
c05abc8
Bump github/codeql-action from 4.39.0 to 4.39.1 (#40807)
Oct 26, 2026
4fef922
Bump zizmorcore/zizmor-action from 0.7.1 to 0.8.0 (#40802)
Oct 26, 2026
37c2da4
Bump cloud.google.com/go/bigquery from 1.85.0 to 1.86.0 in /sdks (#40…
Oct 26, 2026
a013eec
Bump com.google.cloud.tools:dependencies from 1.5.15 to 1.5.16 (#40799)
Oct 26, 2026
fed09ee
Bump google.golang.org/api from 0.305.0 to 0.308.0 in /sdks (#40804)
Oct 26, 2026
7b467c4
Bump github.com/aws/aws-sdk-go-v2/credentials in /sdks (#40805)
Oct 26, 2026
2ade6dd
Bump cloud.google.com/go/datastore from 1.27.0 to 1.28.0 in /sdks (#4…
Oct 26, 2026
eb2f544
Bump cloud.google.com/go/storage from 1.69.0 to 1.70.0 in /sdks (#40800)
Oct 26, 2026
c6568c0
Update Python container image requirements (#40696)
Oct 26, 2026
1e5058c
[Java] Set job location when cleaning up BigQueryIO export reads (#40…
Oct 26, 2026
7598225
[Java] Honor non-default universe domains in GcsUtilV2 (#40796)
Oct 26, 2026
39be11f
Fix functools.partial() typehint breakage when using future annotatio…
Oct 26, 2026
a072d20
Merge pull request #40758 from aIbrahiim/rename-test-record-2
Oct 26, 2026
2343124
Disable Bigtable change streams before deleting stale test instances
Oct 26, 2026
b25beaa
Merge pull request #40813 from apache/fix-cleanup
Oct 26, 2026
27e9a85
Use default java
Oct 26, 2026
4550ac8
[Python] Preserve data channel failure causes (#40775)
Oct 26, 2026
927c5b2
[Go SDK] Fix generic registration of anonymous struct types (#40649)
Oct 26, 2026
49a6a2e
Update tensorflow dependencies (#40752)
Oct 26, 2026
9183632
Fix correctness issue in JsonToRow, RowJsonDeserializer and RowJsonSe…
Oct 26, 2026
b9a783a
Set firm upper bound on Python 3.11 numpy (#40823)
Oct 26, 2026
056876f
AddFiles: PathPattern and RouteFiles (#40749)
Oct 27, 2026
985f995
Bump github.com/nats-io/nats.go from 1.54.0 to 1.55.0 in /sdks (#40832)
Oct 27, 2026
6c36587
Merge pull request #40815 from apache/fix-solace
Oct 27, 2026
7c77cd9
Bump github.com/aws/aws-sdk-go-v2/service/s3 in /sdks (#40833)
Oct 27, 2026
2bb4c92
Bump cloud.google.com/go/pubsub/v2 from 2.7.0 to 2.8.0 in /sdks (#40834)
Oct 27, 2026
2c02d67
Bump github.com/aws/aws-sdk-go-v2/config from 1.33.9 to 1.33.10 in /s…
Oct 27, 2026
1bc09d2
Bump github.com/aws/aws-sdk-go-v2/feature/s3/manager in /sdks (#40836)
Oct 27, 2026
fbbde5a
udpate beam dev sdk container tag to 20261026 (#40831)
Oct 27, 2026
e0790a9
[Java fn-execution] Drain bundle output before waiting for the Proces…
Oct 27, 2026
0b90e18
Remove obsolete ConsumerSpEL and ProducerSpEL reflection shims in Kaf…
Oct 27, 2026
f753731
[Spanner Change Stream] Fix Change Streams PostgreSQL metadata querie…
Oct 27, 2026
c45c018
Merge pull request #39999 from bvolpato/bvolpato/java-bigquery-failed…
Oct 27, 2026
4fb2f32
[FileWrites] Allow maxNumWritersPerBundle to exceed DEFAULT_MAX_NUM_W…
Oct 27, 2026
728ef1b
AddFiles: Wire a destination-table key through the registration chain…
Oct 27, 2026
aea4522
Managed Iceberg AddFiles (#40827)
Oct 27, 2026
cba7341
Move quota_project_id (#40851)
Oct 28, 2026
0f1ac43
More bound fixes
Oct 6, 2026
688a9c1
Fix HF Inference API test model (#40844)
Oct 28, 2026
a757f49
[#36841] Spark 4 streaming: Impulse, bounded reads and PAssert on the…
Oct 28, 2026
9c6a259
[YAML] Add SplunkIO write SchemaTransform and WriteToSplunk (#40481)
Oct 28, 2026
dcc8255
Remove twister2 runner support (#40869)
Oct 28, 2026
21c810a
[InfluxDB] Wait for HTTP readiness before integration tests (#40783)
Oct 28, 2026
bd682df
[Dataflow Streaming] Avoid LinkedBlockingQueue.removeIf data race in …
Oct 28, 2026
5307a31
Use UnsignedLong for backlog calculation and clean up stale comments …
Oct 28, 2026
3afdc9a
Fix IcebergIO rejecting timestamp strings with a space separator (#40…
Oct 28, 2026
71133a8
Merge pull request #40867 from claudevdm/more-bound-fixes
Oct 28, 2026
b7f6a6b
[#18690] Port SolrIOTest off deprecated DoFnTester (#40819)
Oct 28, 2026
77cf5b2
Moving to 2.79.0-SNAPSHOT on master branch.
Oct 28, 2026
6178842
Update CHANGES.md
Oct 28, 2026
0c5adea
[Spark] Resolve the structured streaming pipeline state from the exec…
Oct 28, 2026
be3d44e
Updates Delta CDC read to fail when schemas are different at... (#40868)
Oct 28, 2026
1760453
[CI] Avoid duplicate Python snapshot builds
Oct 28, 2026
86d28a3
[JmsIO] Address review comments on checkpoint registry
Oct 29, 2026
2b0b034
[JmsIO] Suppress ReferenceEquality warning in finalizeCheckpoint
Oct 29, 2026
b171508
[Prism] Drop elements for windows whose trigger has finished (#40878)
Oct 29, 2026
320e100
[Experimental] Update ONNX extras (#40821)
Oct 29, 2026
7531f63
Update Python container CA dependencies and distroless base images to…
Oct 29, 2026
7fddc85
Port SplittableParDoProcessFnTest off DoFnTester (#40865)
Oct 29, 2026
496079b
m-o-r fixes (#40678)
Oct 29, 2026
f6b269c
AddFiles: Dynamic destinations (#40852)
Oct 29, 2026
fcf84eb
[RunInference] Import resource independently of ModelManager (#40855)
Oct 29, 2026
316d0ba
update pr review code flow when assigning reviewer ahead of bot (#40753)
Oct 29, 2026
015ca3c
Bump httplib2 to 0.32.1 and remove distrusted eMudhra roots from Java…
Oct 29, 2026
12bbb17
drop legacy options from HF Inference api
Oct 29, 2026
802f984
Bump github.com/aws/aws-sdk-go-v2/feature/s3/manager in /sdks (#40894)
Oct 30, 2026
ada88dc
Bump github.com/nats-io/nats-server/v2 from 2.15.1 to 2.15.2 in /sdks…
Oct 30, 2026
ad4a0b7
Bump google.golang.org/api from 0.308.0 to 0.309.0 in /sdks (#40897)
Oct 30, 2026
84cd1ea
Merge pull request #40856 from bvolpato/bvolpato/reuse-python-snapsho…
Oct 30, 2026
1c789c3
[Go SDK] Make pipelinex.computeRoots and xlangx.HandlerParams orderin…
Oct 30, 2026
03d6cb6
[Python] Support Protobuf 7.x (#40581)
Oct 30, 2026
966735e
Merge pull request #40892 from aIbrahiim/fix-hf-api-payload
Oct 30, 2026
3074d01
[Python] Preserve argument binding for defaulted DoFn elements (#40798)
Oct 30, 2026
e843314
fix readFromKafka schema error (#40023)
Oct 30, 2026
f831ff1
[YAML] Clean up BigQuery datasets when fixtures fail (#40863)
Oct 30, 2026
b88840e
[CI] Fix Go dependency cache path (#40777)
Oct 30, 2026
0fd0361
Fix collections.abc pretty type
Oct 31, 2026
dca8454
Merge pull request #40923 from apache/fix-managedio-docs
Oct 31, 2026
61701d6
Bump node-forge from 1.4.0 to 1.4.2 in /sdks/typescript (#40918)
Oct 31, 2026
5d82bbc
[RunInference] Send one Gemini request per input so every element get…
Oct 31, 2026
ca387ce
[Iceberg] Make streaming metadata assertions deterministic (#40781)
Oct 31, 2026
dd3c0c0
[Java] Avoid duplicate timestamps in InfluxDB fixtures (#40772)
Oct 31, 2026
aba9e79
Fixes a bug in WindmillSet.addIfAbsent. (#40748)
Oct 31, 2026
99dbd88
Upgrade Google Ads to 48.1.0 (API v26) (#40930)
Nov 1, 2026
ba371f1
Bump gradle/actions/setup-gradle from 6.4.0 to 6.4.1 (#40938)
Nov 2, 2026
cee5911
Bump cloud.google.com/go/profiler from 0.7.0 to 0.7.1 in /sdks (#40940)
Nov 2, 2026
d423f3f
Bump golang.org/x/net from 0.61.0 to 0.62.0 in /sdks (#40941)
Nov 2, 2026
a6b8561
Bump cloud.google.com/go/datastore from 1.28.0 to 1.28.1 in /sdks (#4…
Nov 2, 2026
7caa61b
Bump google.golang.org/grpc from 1.84.0 to 1.85.0 in /sdks (#40943)
Nov 2, 2026
5d52780
Bump github.com/aws/aws-sdk-go-v2/credentials in /sdks (#40939)
Nov 2, 2026
d2eca08
[Model] Document finishing triggers and closed windows (#40879)
Nov 2, 2026
62a2b58
install Corepack in the website image (#40945)
Nov 2, 2026
1650054
Skip WindowInto(GlobalWIndows()) elementwise if upstream pcoll is alr…
Nov 2, 2026
ac018e4
[Python] Make remote inference retry tests deterministic (#40776)
Nov 2, 2026
1bcf5ba
Optimize Cython LCGenerator and SyntheticSource KV generation (#40915)
Nov 2, 2026
2527ffe
Register _FilteringIterable as an iterable-like type. (#40888)
Nov 2, 2026
619e347
[Prism] Hold time sorted input until the allowed lateness has passed …
Nov 2, 2026
9fb00aa
[Flink] Reshuffle batch inputs round-robin from deterministic start c…
Nov 2, 2026
f467e1c
Move pinned pip in setupVirtualenv to 26.2.2 (#40847)
Nov 2, 2026
2dce40e
[Website] Remove stray space before commas in blog post author lists …
Nov 2, 2026
3255418
Republish 2.77.0 release containers in the weekly workflow (#40954)
Nov 2, 2026
f2395a6
[#36841] Spark 4 streaming: detached reader for sibling scans of one …
Nov 2, 2026
3fd91ba
Fix Dataflow Validate runner test flakiness for streaming tests (#40952)
Nov 3, 2026
6f5436f
bump FnAPI container to beam-master-20261102 (#40957)
Nov 3, 2026
fd4f216
[JmsIO] Bound checkpoint registry and keep older checkpoint marks res…
Nov 3, 2026
23f4085
Bump github.com/aws/aws-sdk-go-v2/config in /sdks (#40963)
Nov 3, 2026
59ae985
Bump google.golang.org/api from 0.309.0 to 0.310.0 in /sdks (#40964)
Nov 3, 2026
6ef970c
Invalidate caches on KeyCommitTooLargeException. (#40956)
Nov 3, 2026
c009aa1
Bump cloud.google.com/go/bigquery from 1.86.0 to 1.86.1 in /sdks (#40…
Nov 3, 2026
15077b2
Bump github.com/aws/aws-sdk-go-v2/service/s3 in /sdks (#40962)
Nov 3, 2026
9135d05
Bump github.com/aws/aws-sdk-go-v2/feature/s3/manager in /sdks (#40965)
Nov 3, 2026
5a3eb91
[Spanner Change Stream] Claim CreatedAt timestamp before scheduling p…
Nov 3, 2026
4b5b9c8
[Go SDK] Add the standard millis_instant and decimal logical types (#…
Nov 3, 2026
157b905
[Java] Propagate BigQuery Storage API downstream errors (#40004)
Nov 3, 2026
ae065d1
Update beam-site PR on release candidate reruns (#40778)
Nov 3, 2026
26f3d47
[Website] Fix the code examples on the Test Your Pipeline page (#40969)
Nov 3, 2026
c9fbc95
make tests order independent (#40953)
Nov 3, 2026
1eb4a88
Authenticate before pushing. (#40959)
Nov 3, 2026
e924714
[Website] Document the Avro table type for Beam SQL CREATE EXTERNAL T…
Nov 3, 2026
64f221c
Upgrade Iceberg dependency to 1.12.0 (#40971)
Nov 3, 2026
85c72d9
Beam SQL Primary Keys (#40826)
Nov 3, 2026
73f5f06
[#36841] Spark 4 streaming: ValidatesRunner suite for the Structured …
Nov 4, 2026
756bb8c
Add WITH clause to Beam SQL to set connector properties (#40848)
Nov 4, 2026
3421a2a
Fix typo 'occured' to 'occurred' in ZipFilesTest.java (#40979)
Nov 4, 2026
b0c68c4
Clean up remaining Python 3.10 references (#40972)
Nov 4, 2026
579b6c1
Update Python Dependencies (#40960)
Nov 4, 2026
673cf71
Updates Beam SQL Shell to support Delta Lake (#40958)
Nov 4, 2026
676a6e5
Update CHANGES.md add subsection for Improvement and Breaking change …
Nov 4, 2026
c11c73e
Bind Prism JobManagement server to localhost by default (#40989)
Nov 4, 2026
12547d4
add snakeyaml dep to managed module (#40981)
Nov 4, 2026
79c6459
Fix pmc email (#40988)
Nov 4, 2026
7b12d2c
[codecov] - add token to precommit python coverage workflow (#40995)
Nov 4, 2026
71c11d4
Fix broken GlobalWindow singleton (#40910)
Nov 4, 2026
37a26e5
[python] - update deferredSeries.duplicated logic (#40846)
Nov 5, 2026
acca614
[Prism] Wait for the job service before starting loopback workers (#4…
Nov 5, 2026
ca1d87a
Bump zizmorcore/zizmor-action from 0.8.0 to 0.8.1 (#41009)
Nov 5, 2026
d712d26
[SolaceIO] Route persistent write ACKs to the owning bundle (#40985)
Nov 5, 2026
6757b2b
use Python 3.12 for TensorRT benchmarks
Nov 5, 2026
d8084e8
Merge pull request #40605 from jbonofre/jmsio-checkpoint-registry
Nov 5, 2026
4c19ffe
[Prism] Fix flaky TestPersistBundle_ResidualResumeDelay bound (#40993)
Nov 5, 2026
d249864
bump FnAPI container (#41016)
Nov 5, 2026
4030c01
[yaml] fix documentation and tests for flags (#40617)
Nov 5, 2026
74ab567
[YAML] Fix WindowInto day duration parsing and ExtractWindowingInfo d…
Nov 5, 2026
aa9be1e
[Go] Avoid integration job name collisions (#40780)
Nov 5, 2026
fdad289
[Java] Improve ProtoCoder decode error for raw Message type (#19713) …
Nov 5, 2026
e663ec6
[Java] Fix silent data truncation when mutating partially-cached Stat…
Nov 5, 2026
0b814da
Stable code identifier pickling (#40711)
Nov 5, 2026
1f29d15
Add Credit Karma ML model explainability case study (#40974)
Nov 5, 2026
b4f1491
Fixes some bugs with GroupIntoBatches. (#40754)
Nov 5, 2026
fff61b5
[Python][RunInference] Report the model identifier to model handlers …
Nov 5, 2026
1d2d59c
Include streaming and numberOfWorkerHarnessThreads in Go Dataflow sdk…
Nov 5, 2026
c304f56
[yaml] - include yaml and tfrecord extras in py311-cloudcoverage (#40…
Nov 5, 2026
8f5a492
Fix flaky PipelineBasedStreamingInsertTest.test_failure_in_some_rows_…
Nov 5, 2026
9fb1378
Bump github/codeql-action from 4.39.1 to 4.39.2 (#41032)
Nov 6, 2026
3dd07de
[SolaceIO] Keep shared Solace write sessions open across DoFn teardow…
Nov 6, 2026
8970af1
[Python] Add an experimental beam command with beam run #40891 (#40968)
Nov 6, 2026
6f57563
Populate missing pipeline options in Go Dataflow sdk_pipeline_options…
Nov 6, 2026
d8eb82a
[Flink] Copy length-prefixed batch records and decode grouping inputs…
Nov 6, 2026
2b0fa95
[Python][RunInference] Add prefix-aware batching across workers (#40905)
Nov 6, 2026
d3078c1
Wait for expansion services to listen before running XVR tests (#41035)
Nov 6, 2026
9ff540f
[Python][RunInference] Add a capacity-based autoscaling signal for mo…
Nov 6, 2026
9fd9748
Update collaborators in .asf.yaml (#41053)
Nov 6, 2026
625716a
[Python] Fix rebatching into multi-column pyarrow Tables (#41042) (#4…
Nov 6, 2026
7e3d29e
Harden Spark and Flink state execution tests against PreCommit Java l…
Nov 6, 2026
63b69ed
[Python/YAML] Accept >=, <=, == and != in generic Filter expressions …
Nov 6, 2026
431b7c7
Merge pull request #41014 from aIbrahiim/fix-inference-benchmark-pyth…
Nov 7, 2026
84a02fe
[Go SDK] Add pass through registration for the fixed and variable len…
Nov 7, 2026
776e83a
[Java] Honor withMaxRetryJobs for bounded BigQueryIO file loads (#39938)
Nov 9, 2026
32253a8
Bump github.com/aws/aws-sdk-go-v2/service/s3 in /sdks (#41096)
Nov 9, 2026
5846e48
Bump github.com/testcontainers/testcontainers-go in /sdks (#41095)
Nov 9, 2026
ee52788
Bump docker/login-action from 4.7.0 to 4.8.0 (#41092)
Nov 9, 2026
d7a5e19
Bump github/codeql-action from 4.39.2 to 4.39.3 (#41093)
Nov 9, 2026
e8587b0
[Java][BigQueryIO] Avoid reflective lookup in unknown-column collecto…
Nov 9, 2026
93893ae
[Solace] Fix flaky SolaceIO integration tests (#40740)
Nov 9, 2026
e1e928d
Retry transient errors in BigqueryClient.queryUnflattened (#40793)
Nov 9, 2026
fcc2d6d
Bump cloud.google.com/go/pubsub from 1.51.1 to 1.52.0 in /sdks (#41097)
Nov 9, 2026
798516a
Bump github.com/aws/aws-sdk-go-v2/feature/s3/manager in /sdks (#41094)
Nov 9, 2026
9da36cc
[Python] Use __name__ prefix in code_object_pickler_test. (#41104)
Nov 9, 2026
261c376
Update opentelemetry package version constraints (#40973)
Nov 9, 2026
e958734
[Python][RunInference] Deduplicate ModelHandler wrappers via _Delegat…
Nov 9, 2026
374f33b
Add ParDoFn.getDoFnInfo and implement across ParDoFn implementations.…
Nov 9, 2026
1375327
Support java_gc experiment in Java SDK harness container (#41029)
Nov 9, 2026
302365e
Bump Iceberg to 1.12.0 in beam-sql.sh (#41090)
Nov 9, 2026
2e95981
[Prism] Fix GroupIntoBatches losing or misframing batches (#40975)
Nov 9, 2026
a412fda
Make SqlTransformSchemaTransformProvider config schema portable (#346…
Nov 9, 2026
cc3757c
Retry cibuildwheel in build_wheels.yml to handle container teardown t…
Nov 9, 2026
5fdf08e
Retry YAML integration test fixture setup on transient Docker/service…
Nov 9, 2026
698761f
Port DatastoreV1Test off DoFnTester (#40866)
Nov 9, 2026
6f0aec8
[Flink] Add a dedicated operator for batch combines in the global win…
Nov 9, 2026
9568a80
Use curl -fsSL --retry 5 in website/Dockerfile (#41114)
Nov 9, 2026
f8f675e
Use the default Redistribute key count for cross-language KafkaIO rea…
Nov 9, 2026
a537a4c
Increase Gradle wrapper networkTimeout and retry wrapper bootstrap on…
Nov 9, 2026
74f141d
Add CHANGES function to Beam SQL (#40982)
Nov 9, 2026
9777788
[#40950] Spark Structured Streaming runner: translate Redistribute li…
Nov 9, 2026
663df87
Use curl -fsSL --retry 5 when installing docker-compose in workflows …
Nov 9, 2026
fa40983
Configure mavenCentralMirrorUrl in buildSrc/settings.gradle.kts plugi…
Nov 9, 2026
e729f61
Retry transient 5xx GitHub API errors in pr-bot getGitHubClient (#41124)
Nov 9, 2026
1f52d36
Move BundleLifter from Iceberg to sdk/util (#40978)
Nov 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
66 changes: 66 additions & 0 deletions .agent/skills/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

# Apache Beam Skills

This directory contains skills that help the agent perform specialized tasks in the Apache Beam codebase. For more information, see the [Agent Skills Documentation](http://antigravity.google/docs/skills).

## Available Skills

| Skill | Description |
|-------|-------------|
| [adding-new-metadata](adding-new-metadata/SKILL.md) | Guide on how to add and propagate new metadata fields in WindowedValue to avoid metadata loss |
| [beam-concepts](beam-concepts/SKILL.md) | Core Beam programming model (PCollections, PTransforms, windowing, triggers) |
| [beam-dofn-modernizer](beam-dofn-modernizer/SKILL.md) | Rewrite Apache Beam DoFn methods to remove legacy ProcessContext/OnTimerContext |
| [ci-cd](ci-cd/SKILL.md) | GitHub Actions workflows, debugging CI failures, triggering tests |
| [contributing](contributing/SKILL.md) | PR workflow, issue management, code review, release cycles |
| [gradle-build](gradle-build/SKILL.md) | Build commands, flags, publishing, troubleshooting |
| [io-connectors](io-connectors/SKILL.md) | 51+ I/O connectors, testing patterns, usage examples |
| [developing-new-io-connectors](developing-new-io-connectors/SKILL.md) | A detailed guide on developing new I/O connectors |
| [java-development](java-development/SKILL.md) | Java SDK development, building, testing, project structure |
| [license-compliance](license-compliance/SKILL.md) | Apache 2.0 license headers for all new files |
| [python-development](python-development/SKILL.md) | Python SDK environment setup, testing, building pipelines |
| [runners](runners/SKILL.md) | Direct, Dataflow, Flink, Spark runner configuration |
| [yaml-development](yaml-development/SKILL.md) | YAML SDK development, environment setup, testing, and key concepts |

## How Skills Work

1. **Discovery**: The agent scans skill descriptions to find relevant ones
2. **Activation**: When a skill matches the task, the agent reads the full `SKILL.md`
3. **Execution**: The agent follows the skill's instructions

## Skill Structure

Each skill folder contains:
- `SKILL.md` - Main instruction file with YAML frontmatter

```yaml
---
name: skill-name
description: Concise description for when to use this skill
---
# Skill Content
Detailed instructions...
```

## Adding New Skills

1. Create a new folder under `.agent/skills/`
2. Add a `SKILL.md` with YAML frontmatter (`name`, `description`)
3. Write clear, actionable instructions in the markdown body
118 changes: 118 additions & 0 deletions .agent/skills/adding-new-metadata/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
---
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

name: adding-new-metadata
description: Guide on how to add and propagate new metadata fields in Apache Beam's WindowedValue, extending protos, windmill persistence, and runner interfaces to avoid metadata loss.
---

# Adding New Metadata to WindowedValue

This skill provides a comprehensive guide on adding new metadata (e.g., CDC metadata, drain mode flags, OpenTelemetry trace context) to Apache Beam's `WindowedValue` and ensuring it propagates correctly through the execution engine. Failing to propagate metadata in all necessary places will result in metadata loss during pipeline execution.

## 1. Extending the Proto Model

When adding new metadata that must cross worker boundaries or be serialized by the Fn API, the proto definitions must be updated.

* **Key Files:** `model/fn-execution/src/main/proto/org/apache/beam/model/fn_execution/v1/beam_fn_api.proto`
* **Action:** Add the new metadata field to the appropriate message (`ElementMetadata`).
* **Note:** Add proper documentation in proto. Type of the field can be different from the type in WindowedValue, see OpenTelemetry trace context for example.

## 2. WindowedValue Interface and Implementations

The `WindowedValue` is the core container for elements flowing through a Beam pipeline. It holds the value, timestamp, windows, pane info, and any additional metadata.

### Core Interface Updates
* **Key File:** `sdks/java/core/src/main/java/org/apache/beam/sdk/values/WindowedValue.java`
* **Action:** Add getter methods for your new metadata.

### Concrete Implementations
You must update **all** concrete implementations of `WindowedValue` to store and return the new metadata. If you miss one, metadata will be silently dropped.
* `ValueInGlobalWindow`
* `ValueInSingleWindow`
* `ValueInEmptyWindows` (often used inside runners, like Dataflow's worker package)
* **Action:** Update constructors, factory methods (`of()`), fields in these classes and coders.

### OutputBuilder vs. Context Output
* **IMPORTANT:** Do **not** add new arguments to legacy methods like `context.outputWindowedValue(...)` or `WindowedValue.of(value, timestamp, windows, pane)`. This causes brittleness and breaks the API for every new metadata field.
* **Action:** Modify `OutputBuilder` (`sdks/java/core/src/main/java/org/apache/beam/sdk/values/OutputBuilder.java`) to accept the new metadata (e.g., `.withDrainMode(...)`, `.withTraceContext(...)`). Use the builder pattern when constructing outputs to propagate offset and record IDs smoothly.

## 3. Windmill Persistence (Dataflow Streaming Engine) Runner v1

For the Dataflow streaming runner, metadata must survive serialization to and from the Windmill backend.

* **Serialization (Sink):**
* **File:** `runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/WindmillSink.java`
* **Action:** Extract the metadata from the `WindowedValue`, and add it to already created ElementMetadata proto builder.
* **Deserialization (Reader):**
* **Files:** `runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/UngroupedWindmillReader.java` and `WindowingWindmillReader.java`
* **Action:** Extract the metadata from ElementMetadata proto and reconstruct the `WindowedValue` using the updated factory methods/builders that include the metadata. This is incremental work, as plenty of metadata is already extracted from the proto.

## 4. Propagation Across Core Classes

Metadata must be explicitly copied or forwarded whenever a `WindowedValue` is transformed, buffered, or processed.

### DoFn Runners (Java Core)
You must ensure that when a DoFn processes an element and outputs a new element, the appropriate metadata from the *input* is propagated to the *output* (unless explicitly changed by the logic).
* `runners/core-java/src/main/java/org/apache/beam/runners/core/SimpleDoFnRunner.java`
* `runners/core-java/src/main/java/org/apache/beam/runners/core/StatefulDoFnRunner.java`
* `runners/core-java/src/main/java/org/apache/beam/runners/core/LateDataDroppingDoFnRunner.java`
* `runners/core-java/src/main/java/org/apache/beam/runners/core/ProcessFnRunner.java`
* `sdks/java/harness/src/main/java/org/apache/beam/fn/harness/FnApiDoFnRunner.java`

**Action:** When these runners call `outputWindowedValue()`, they should extract the metadata from the input or current context and attach it using the `OutputBuilder` or the new `WindowedValue` interfaces.

### Grouping and Reducing
* `runners/core-java/src/main/java/org/apache/beam/runners/core/ReduceFnRunner.java`
* `runners/core-java/src/main/java/org/apache/beam/runners/core/ReduceFnContextFactory.java`
* **Action:** Ensure that during GroupByKey/Combine operations, if metadata needs to be preserved (e.g., `CausedByDrain`), it is correctly passed into the `ReduceFnContextFactory` and propagated when outputting the grouped results.

### Splittable DoFns (SDF)
* `runners/core-java/src/main/java/org/apache/beam/runners/core/OutputAndTimeBoundedSplittableProcessElementInvoker.java`
* `sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/SplittableParDoNaiveBounded.java`

### Timers
If metadata needs to survive timer firings (e.g., knowing an `@OnTimer` fired because of a system drain), it must be added to Timer data structures. This is a bit of uncharted area which was only implemented for CausedByDrain metadata that comes from backend, not from persisted metadata. In order to persist all WindowedValue metadata across timer, more work has to be done, below are some pointers:
* `runners/core-java/src/main/java/org/apache/beam/runners/core/TimerInternals.java` and implementations (e.g., `WindmillTimerInternals.java` in Dataflow).
* **Action:** Add the field to `TimerData`, next to `CausedByDrain`. Propagate it when setting the timer and expose it when the timer fires so it bubbles up.
* Eventually, metadata from Timer lands in WindowedValue, so it can be exposed to users. Keep field names, types, and getters similar to WindowedValue as much as possible, as common interface may be introduced eventually.

## 5. Exposing Metadata to the User (DoFn Signatures)

User needs to access the metadata in their `DoFn` (e.g., `@ProcessElement public void process(ProcessContext c, CausedByDrain drain) { ... }`), you must update the reflection and bytecode generation logic.

* **Files:**
* `sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignatures.java`
* `sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignature.java`
* `sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java`
* `sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/ByteBuddyDoFnInvokerFactory.java`
* **Action:** Add logic to detect the new parameter type in the DoFn method signature. Generate bytecode using ByteBuddy to extract the property from the `WindowedValue` or context and pass it as an argument during method invocation.

## Checklist for Adding New Metadata

1. [ ] Define the metadata in `beam_fn_api.proto` (if applicable).
2. [ ] Add getters to the `WindowedValue` interface.
3. [ ] Update `ValueInGlobalWindow`, `ValueInSingleWindow`, `ValueInEmptyWindows` to store the metadata.
4. [ ] Update `OutputBuilder` to accept the metadata.
5. [ ] Update `WindmillSink` to serialize the metadata to the backend.
6. [ ] Update `UngroupedWindmillReader` and `WindowingWindmillReader` to deserialize the metadata.
7. [ ] Update `WindmillKeyedWorkItem`.
8. [ ] Update `SimpleDoFnRunner`, `StatefulDoFnRunner`, and `FnApiDoFnRunner` to propagate the metadata from input to output.
9. [ ] Update `ReduceFnRunner` and `OutputAndTimeBoundedSplittableProcessElementInvoker` for complex transform propagation.
10. [ ] If required by timers, update `TimerData` and `TimerInternals`.
11. [ ] If exposed to the user, update `DoFnSignatures` and `ByteBuddyDoFnInvokerFactory`.
12. [ ] Update other runners (Flink, Spark) to ensure they propagate the new `WindowedValue` fields correctly in their specific operators/runners.
Loading