bvolpato opened a new pull request, #39919:
URL: https://github.com/apache/beam/pull/39919

   Addresses #38714.
   
   ## Problem
   
   The nightly snapshot workflow started failing consistently after #39594 
merged. Both affected Dataflow jobs reach `SplitWithSizing`, then repeatedly 
lose their Java SDK harness.
   
   #39594 added three abstract methods to the public `CoderTranslatorRegistrar` 
SPI. Development SDK jobs use the pinned `beam-master-20260731` Dataflow worker 
container, whose registrar implementations were compiled before those methods 
existed. Calling a new method on one of those implementations is 
binary-incompatible and throws `AbstractMethodError`, terminating the harness.
   
   Public workflow logs contain the resulting harness disconnects, while worker 
diagnostics require access to the `apache-beam-testing` project. I verified the 
underlying failure directly by compiling a registrar against the parent of 
#39594 and running that unchanged bytecode with current `beam-sdks-java-core`. 
It fails with:
   
   ```text
   java.lang.AbstractMethodError: Receiver class LegacyRegistrar does not 
define or inherit an implementation of the resolved method 'abstract boolean 
isKnownCoder(...)'
   ```
   
   ## Fix
   
   Provide default implementations for the three new lookup methods using the 
two maps already required by the older SPI. Existing registrars remain loadable 
across the SDK/container version boundary. `ModelCoderRegistrar` keeps its 
option-aware overrides, including SchemaCoder update-compatibility behavior.
   
   Regression coverage uses a registrar that implements only the pre-2.77 
methods. The same separately compiled legacy bytecode also runs successfully 
after this change.
   
   ## Validation
   
   ```text
   ./gradlew :sdks:java:core:spotlessCheck
   ./gradlew :sdks:java:core:test
   ./gradlew :runners:google-cloud-dataflow-java:test --tests 
'org.apache.beam.runners.dataflow.DataflowPipelineTranslatorTest'
   ./gradlew :sdks:java:harness:test --tests 
'org.apache.beam.fn.harness.state.StateBackedIterableTest'
   ```
   
   All passed locally.
   
   ------------------------
   
   - [x] Mention the appropriate issue in the description.
   - [x] Update `CHANGES.md` with the binary-compatibility fix.
   - [x] This contribution is small and does not require an ICLA update.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to