beam icon indicating copy to clipboard operation
beam copied to clipboard

[Bug]: pytest retry configuration is not effective

Open shunping opened this issue 3 weeks ago • 0 comments

What happened?

Looking at workflow file: https://github.com/apache/beam/blob/e927f2d02c0fef783914708fbd3333cd3dda30bc/.github/workflows/beam_PreCommit_Python.yml#L114

It seems that we enabled a retry setting for pytest. However, when looking at the log (e.g. https://github.com/apache/beam/actions/runs/20010300018/job/57378762026), I don't see the option is effective. Particularly, the retry setting needs pytest plugin pytest-rerunfailures, but I could not see that in our plugin list below.

py310-cloud: commands[1]> bash /runner/_work/beam/beam/sdks/python/test-suites/tox/py310/build/srcs/sdks/python/scripts/run_pytest.sh py310-cloud ''"'"'--ignore=apache_beam/dataframe/ --ignore=apache_beam/ml/ --ignore=apache_beam/examples/ --ignore=apache_beam/runners/ --ignore=apache_beam/transforms/'"'"''
pytest_args: 
posargs: --ignore=apache_beam/dataframe/ --ignore=apache_beam/ml/ --ignore=apache_beam/examples/ --ignore=apache_beam/runners/ --ignore=apache_beam/transforms/
Running parallel tests with: pytest -m "not no_xdist"  --ignore=apache_beam/dataframe/ --ignore=apache_beam/ml/ --ignore=apache_beam/examples/ --ignore=apache_beam/runners/ --ignore=apache_beam/transforms/ 

--- Applying global testcontainers timeout configuration ---
Successfully set waiting utils config
============================= test session starts ==============================
platform linux -- Python 3.10.17, pytest-8.4.2, pluggy-1.6.0 -- /runner/_work/beam/beam/sdks/python/test-suites/tox/py310/build/srcs/sdks/python/target/.tox-py310-cloud/py310-cloud/bin/python
cachedir: target/.tox-py310-cloud/py310-cloud/.pytest_cache
hypothesis profile 'ci' -> database=None, deadline=None, print_blob=True, derandomize=True, suppress_health_check=(HealthCheck.too_slow,)
rootdir: /runner/_work/beam/beam/sdks/python/test-suites/tox/py310/build/srcs/sdks/python
configfile: pytest.ini
plugins: requests-mock-1.12.1, hypothesis-6.148.3, anyio-4.12.0, xdist-3.8.0, timeout-2.4.0       <-------- no "retryfailures" plugin
timeout: 600.0s
timeout method: signal
timeout func_only: False
created: 6/6 workers
6 workers [4105 items]

In addition, I can confirm that the environment variable PYTEST_ADDOPTS has no effect in the execution, because if it had, pytest should have reported an error of parsing --reruns parameter in the absence of rerunfailures plugin.

Issue Priority

Priority: 2 (default / most bugs should be filed as P2)

Issue Components

  • [ ] Component: Python SDK
  • [ ] Component: Java SDK
  • [ ] Component: Go SDK
  • [ ] Component: Typescript SDK
  • [ ] Component: IO connector
  • [ ] Component: Beam YAML
  • [ ] Component: Beam examples
  • [ ] Component: Beam playground
  • [ ] Component: Beam katas
  • [ ] Component: Website
  • [ ] Component: Infrastructure
  • [ ] Component: Spark Runner
  • [ ] Component: Flink Runner
  • [ ] Component: Samza Runner
  • [ ] Component: Twister2 Runner
  • [ ] Component: Hazelcast Jet Runner
  • [ ] Component: Google Cloud Dataflow Runner

shunping avatar Dec 08 '25 04:12 shunping