tracebacks when a platform exists in a blob but has no locales

RESOLVED FIXED

Status

Release Engineering
Balrog: Backend
RESOLVED FIXED
3 years ago
a year ago

People

(Reporter: bhearsum, Assigned: vjoshi, Mentored)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

3 years ago
I noticed this in Sentry today:


KeyError: 'locales'

Stacktrace (most recent call last):

  File "flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "flask/views.py", line 149, in dispatch_request
    return meth(*args, **kwargs)
  File "auslib/web/views/client.py", line 35, in get
    release, update_type = AUS.evaluateRules(query)
  File "auslib/AUS.py", line 86, in evaluateRules
    if not blob.shouldServeUpdate(updateQuery):
  File "auslib/blobs/apprelease.py", line 151, in shouldServeUpdate
    if updateQuery['buildID'] >= self.getBuildID(updateQuery['buildTarget'], updateQuery['locale']):
  File "auslib/blobs/apprelease.py", line 63, in getBuildID
    if locale not in self['platforms'][platform]['locales']:




All of which come from URLs like:
https://aus4.mozilla.org/update/4/Fennec/35.0/20141211142105/Android_x86-gcc3/en-US/beta/4.4.2/default/default/35.0/update.xml

Which gets a blob with a section like:
    "Android_x86-gcc3": {
      "OS_FTP": "android-x86",
      "OS_BOUNCER": "android-x86"
    }

Setting aside whether or not Android_x86-gcc3 should be getting updates, I'm not 100% sure whether we need to deal with this in Balrog, or in the submitter tools. It feels like a bit of an invalid state to have a platform with absolutely no data in it.
(Reporter)

Comment 1

3 years ago
Diving into this a bit more I see that all of the URLs currently triggering this Traceback are Android_x86-gcc3, en-US. This is because the release creator iterates on enUSPlatforms (https://github.com/mozilla/build-tools/blob/master/lib/python/balrog/submitter/cli.py#L67), which contains android-x86 for Fennec (https://github.com/mozilla/build-buildbot-configs/blob/master/mozilla/release-fennec-mozilla-beta.py.template#L70). We can't adjust that because it's used for things like creating en-US release build factories (https://github.com/mozilla/build-buildbotcustom/blob/63911e42bb49817f05eee964a66c1bc13c1b3457/process/release.py#L590) so the simplest solution might be to have balrog cope better in some way. Might be as simple as .get(platform, {}) ?
The en-US build may not be submitting info for some reason, and locales are also planned, so this should go away when those are resolved. Still, modifying
  https://github.com/mozilla/balrog/blob/master/auslib/blobs/apprelease.py#L47
to add the get you suggest is a good idea.
Or actually https://github.com/mozilla/balrog/blob/master/auslib/blobs/apprelease.py#L63
(Reporter)

Updated

a year ago
Mentor: bhearsum@mozilla.com
(Assignee)

Comment 4

a year ago
Created attachment 8724795 [details] [diff] [review]
Changes dict access to use the get method

This should get rid of the KeyError. I added a get method access for both platform and 'locales'.
(Reporter)

Updated

a year ago
Assignee: nobody → varunj.1011
(Assignee)

Updated

a year ago
Attachment #8724795 - Flags: review?(bhearsum)
(Reporter)

Comment 5

a year ago
Comment on attachment 8724795 [details] [diff] [review]
Changes dict access to use the get method

Reviewed in the PR. In the future, you can post a link to the PR as a review request!
Attachment #8724795 - Flags: review?(bhearsum)

Comment 6

a year ago
Commits pushed to master at https://github.com/mozilla/balrog

https://github.com/mozilla/balrog/commit/655901440b6ed7d146a2813e23739c1e7439006a
Bug 1113111 - tracebacks when a platform exists in a blob but has no locales.r=bhearsum

https://github.com/mozilla/balrog/commit/ce2b4476a30dcf2e4ded0bb269308a12e79c473b
Merge pull request #54 from nurav/master

Bug 1113111 - tracebacks when a platform exists in a blob but has no locales. r=bhearsum
(Reporter)

Comment 7

a year ago
I won't be doing a push to prod just for this, so this bug will stay open until there's a push for some other reason.
(Reporter)

Comment 8

a year ago
This landed in production today. Thanks for the patch!
Status: NEW → RESOLVED
Last Resolved: a year ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.