You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The PostCommit Java ValidatesRunner ULR job is flaky #33859
Does the ULR special case "javasdk" coders and now that it is a different URN that is unknown to the ULR it is presuming it is a known coder? That's a ULR bug. It should be resilient to unknown coders that have URNs.
But also can we just wipe out the Python ULR? this is a test that the Python local runner can run a Java pipeline. What we want is that the basic python runner is used for simple pipelines and the moment a pipeline is not so simple it goes to Prism.
Does the ULR special case "javasdk" coders and now that it is a different URN that is unknown to the ULR it is presuming it is a known coder? That's a ULR bug. It should be resilient to unknown coders that have URNs.
The code path is generic, happens when translating a coder from proto
File "/runner/_work/beam/beam/sdks/python/apache_beam/runners/portability/fn_api_runner/execution.py", line 783, in _enqueue_stage_initial_inputs
coder = self.pipeline_context.coders[self.safe_coders.get(
File "/runner/_work/beam/beam/sdks/python/apache_beam/runners/pipeline_context.py", line 155, in __getitem__
return self.get_by_id(id)
File "/runner/_work/beam/beam/sdks/python/apache_beam/runners/pipeline_context.py", line 103, in get_by_id
self._id_to_obj[id] = self._obj_type.from_runner_api(
File "/runner/_work/beam/beam/sdks/python/apache_beam/coders/coders.py", line 364, in from_runner_api
[context.coders.get_by_id(c) for c in coder_proto.component_coder_ids],
File "/runner/_work/beam/beam/sdks/python/apache_beam/coders/coders.py", line 364, in <listcomp>
[context.coders.get_by_id(c) for c in coder_proto.component_coder_ids],
File "/runner/_work/beam/beam/sdks/python/apache_beam/runners/pipeline_context.py", line 103, in get_by_id
self._id_to_obj[id] = self._obj_type.from_runner_api(
File "/runner/_work/beam/beam/sdks/python/apache_beam/coders/coders.py", line 364, in from_runner_api
[context.coders.get_by_id(c) for c in coder_proto.component_coder_ids],
File "/runner/_work/beam/beam/sdks/python/apache_beam/coders/coders.py", line 364, in <listcomp>
[context.coders.get_by_id(c) for c in coder_proto.component_coder_ids],
File "/runner/_work/beam/beam/sdks/python/apache_beam/runners/pipeline_context.py", line 103, in get_by_id
self._id_to_obj[id] = self._obj_type.from_runner_api(
File "/runner/_work/beam/beam/sdks/python/apache_beam/coders/coders.py", line 364, in from_runner_api
[context.coders.get_by_id(c) for c in coder_proto.component_coder_ids],
File "/runner/_work/beam/beam/sdks/python/apache_beam/coders/coders.py", line 364, in <listcomp>
[context.coders.get_by_id(c) for c in coder_proto.component_coder_ids],
File "/runner/_work/beam/beam/sdks/python/apache_beam/runners/pipeline_context.py", line 103, in get_by_id
self._id_to_obj[id] = self._obj_type.from_runner_api(
File "/runner/_work/beam/beam/sdks/python/apache_beam/coders/coders.py", line 361, in from_runner_api
parameter_type, constructor = cls._known_urns[coder_proto.spec.urn]
KeyError: 'beam:coder:schema:v1'
Technically any runners that have Java side ended up with a schema coder then get consumed in python side could trigger the same issue?
These tests happen to expose this issue. The same test was explicitly excluded from other runners (Flink/Spark/twister2 has all excluded "UsesPerKeyOrderedDelivery"), while Python validate runner test do not have corresponding tests, persumably could also break if it does
agree with @Abacn as this isnt a ULR specific javasdk special case but it’s the generic Python proto coder path failing on beam:coder:schema:v1 because Python doesn’t register that URN yet, after Java started emitting it via ModelCoderRegistrar (#37631).
#38497 (excluding the two PerKeyOrderingTest methods in ULR) unblocks CI, but any portable Java pipeline that puts SchemaCoder in the proto and runs on the Python job service can hit the same KeyError
Activity
Amar3tto commentedon Feb 5, 2025
The culprit: #33385
Amar3tto commentedon Feb 5, 2025
@rohitsinha54 ptal
github-actions commentedon Dec 6, 2025
Reopening since the workflow is still flaky
Amar3tto commentedon Dec 8, 2025
Stabilized
16 remaining items
Abacn commentedon May 15, 2026
Reopened: #38497 (comment)
kennknowles commentedon May 15, 2026
Does the ULR special case "javasdk" coders and now that it is a different URN that is unknown to the ULR it is presuming it is a known coder? That's a ULR bug. It should be resilient to unknown coders that have URNs.
kennknowles commentedon May 15, 2026
But also can we just wipe out the Python ULR? this is a test that the Python local runner can run a Java pipeline. What we want is that the basic python runner is used for simple pipelines and the moment a pipeline is not so simple it goes to Prism.
Abacn commentedon May 15, 2026
The code path is generic, happens when translating a coder from proto
Technically any runners that have Java side ended up with a schema coder then get consumed in python side could trigger the same issue?
These tests happen to expose this issue. The same test was explicitly excluded from other runners (Flink/Spark/twister2 has all excluded "UsesPerKeyOrderedDelivery"), while Python validate runner test do not have corresponding tests, persumably could also break if it does
aIbrahiim commentedon May 15, 2026
agree with @Abacn as this isnt a ULR specific javasdk special case but it’s the generic Python proto coder path failing on beam:coder:schema:v1 because Python doesn’t register that URN yet, after Java started emitting it via ModelCoderRegistrar (#37631).
#38497 (excluding the two PerKeyOrderingTest methods in ULR) unblocks CI, but any portable Java pipeline that puts SchemaCoder in the proto and runs on the Python job service can hit the same KeyError
Abacn commentedon May 18, 2026
Fixed by #38514 in release branch
github-actions commentedon May 25, 2026
Reopening since the workflow is still flaky
kennknowles commentedon Aug 17, 2026
For a coder that Python doesn't understand, is there a standard way that the data is just carried along as bytes?
acrites commentedon Aug 21, 2026
I added some comments to #39594, but the gist is, I think I found out how to get Python to not try to create the Schema coder.