mozilla-releng / mozilla-releng/scriptworker-scripts

beetmover doesn't skip GCS uploads when it claims to

Open
#676 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

beetmoverscript
Dominant language
Python
Stars
16
Forks
38
Avg merge
1d 7h
Merged PRs (30d)
14

Description

set_gcs_client has a number of error conditions that result in an early return, and context.gcs_client being unset. The messages given claim that GCS uploads will be skipped, but instead it continues on and ends up failing. For example:

2023-02-23 01:22:56,468 - beetmoverscript.gcloud - WARNING - GCS bucket <Bucket: mozilla-releng-dep-partner> doesn't exist. Skipping GCS uploads.
2023-02-23 01:22:56,470 - beetmoverscript.task - DEBUG - Loading release_props from task's payload: {'appName': 'Firefox', 'appVersion': '112.0', 'branch': 'try', 'buildid': '20230222192533', 'hashType': 'sha512', 'platform': 'linux'}
2023-02-23 01:22:56,470 - beetmoverscript.task - INFO - Action types: ['push-to-partner']
<snip>
2023-02-23 01:22:56,716 - beetmoverscript.task - DEBUG - Loading release_props from task's payload: {'appName': 'Firefox', 'appVersion': '112.0', 'branch': 'try', 'buildid': '20230222192533', 'hashType': 'sha512', 'platform': 'linux'}
2023-02-23 01:22:59,227 - beetmoverscript.script - INFO - put /app/workdir/cot/XMhpfS5_T4aYb2qrypIxyQ/releng/partner/test/test-002/win32/he/target.installer.exe: 200
2023-02-23 01:22:59,228 - charset_normalizer - DEBUG - Encoding detection on empty bytes, assuming utf_8 intention.
2023-02-23 01:22:59,413 - beetmoverscript.script - INFO - put /app/workdir/cot/XMhpfS5_T4aYb2qrypIxyQ/releng/partner/test/test-002/win64/en-CA/target.installer.exe: 200
2023-02-23 01:22:59,413 - charset_normalizer - DEBUG - Encoding detection on empty bytes, assuming utf_8 intention.
2023-02-23 01:22:59,432 - beetmoverscript.script - INFO - put /app/workdir/cot/XMhpfS5_T4aYb2qrypIxyQ/releng/partner/test/test-002/win64/he/target.installer.exe: 200
2023-02-23 01:22:59,432 - charset_normalizer - DEBUG - Encoding detection on empty bytes, assuming utf_8 intention.
2023-02-23 01:22:59,466 - beetmoverscript.script - INFO - put /app/workdir/cot/XMhpfS5_T4aYb2qrypIxyQ/releng/partner/test/test-002/win32/en-CA/target.installer.exe: 200
2023-02-23 01:22:59,466 - charset_normalizer - DEBUG - Encoding detection on empty bytes, assuming utf_8 intention.
Traceback (most recent call last):
  File "/app/bin/beetmoverscript", line 8, in <module>
    sys.exit(main())
  File "/app/lib/python3.9/site-packages/beetmoverscript/script.py", line 683, in main
    client.sync_main(async_main, config_path=config_path, default_config=default_config, should_validate_task=False)
  File "/app/lib/python3.9/site-packages/scriptworker/client.py", line 166, in sync_main
    loop.run_until_complete(_handle_asyncio_loop(async_main, context))
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/app/lib/python3.9/site-packages/scriptworker/client.py", line 205, in _handle_asyncio_loop
    await async_main(context)
  File "/app/lib/python3.9/site-packages/beetmoverscript/script.py", line 335, in async_main
    await action_map[context.action](context)
  File "/app/lib/python3.9/site-packages/beetmoverscript/script.py", line 168, in push_to_partner
    await move_partner_beets(context, mapping_manifest)
  File "/app/lib/python3.9/site-packages/beetmoverscript/script.py", line 485, in move_partner_beets
    await await_and_raise_uploads(cloud_uploads, context.config["clouds"], context.bucket)
  File "/app/lib/python3.9/site-packages/beetmoverscript/utils.py", line 333, in await_and_raise_uploads
    await raise_future_exceptions(cloud_uploads[cloud])
  File "/app/lib/python3.9/site-packages/scriptworker/utils.py", line 409, in raise_future_exceptions
    succeeded_results, _ = await _process_future_exceptions(tasks, raise_at_first_error=True)
  File "/app/lib/python3.9/site-packages/scriptworker/utils.py", line 443, in _process_future_exceptions
    raise exc
  File "/app/lib/python3.9/site-packages/beetmoverscript/gcloud.py", line 92, in upload_to_gcs
    bucket = Bucket(context.gcs_client, name=bucket_name)
AttributeError: 'Context' object has no attribute 'gcs_client'

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in beetmoverscript/gcloud.py at set_gcs_client and upload_to_gcs, then follow their callers in beetmoverscript/script.py and beetmoverscript/utils.py. Reproduce or trace the missing-client path and verify that each early-return condition skips GCS uploads without triggering an AttributeError.

Written by the indexing model from the issue text.

Assessment

Tech stack
google-cloud, python
Domain
cloud
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.