Skip to content

The PostCommit Java ValidatesRunner ULR job is flaky #33859

Description

@github-actions

Activity

  1. Amar3tto commented on Feb 5, 2025

    @Amar3tto
    Collaborator

    The culprit: #33385

  2. Amar3tto commented on Feb 5, 2025

    @Amar3tto
    Collaborator
  3. self-assigned this
    on Feb 6, 2025
  4. added this to the 2.64.0 Release milestone on Feb 6, 2025
  5. github-actions commented on Dec 6, 2025

    @github-actions
    ContributorAuthor

    Reopening since the workflow is still flaky

  6. Amar3tto commented on Dec 8, 2025

    @Amar3tto
    Collaborator

    Stabilized

  7. 16 remaining items

  8. added this to the 2.74.0 Release milestone on May 15, 2026
  9. Abacn commented on May 15, 2026

    @Abacn
    Contributor
  10. kennknowles commented on May 15, 2026

    @kennknowles
    Member

    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.

  11. kennknowles commented on May 15, 2026

    @kennknowles
    Member

    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.

  12. Abacn commented on May 15, 2026

    @Abacn
    Contributor

    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

  13. aIbrahiim commented on May 15, 2026

    @aIbrahiim
    Contributor

    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

  14. Abacn commented on May 18, 2026

    @Abacn
    Contributor

    Fixed by #38514 in release branch

  15. github-actions commented on May 25, 2026

    @github-actions
    ContributorAuthor

    Reopening since the workflow is still flaky

  16. kennknowles commented on Aug 17, 2026

    @kennknowles
    Member

    For a coder that Python doesn't understand, is there a standard way that the data is just carried along as bytes?

  17. acrites commented on Aug 21, 2026

    @acrites
    Contributor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions