lp:~cjwatson/launchpad/multiple-override-race

Created by Colin Watson on 2019-05-28 and last modified on 2019-05-28
Get this branch:
bzr branch lp:~cjwatson/launchpad/multiple-override-race
Only Colin Watson can upload to this branch. If you are Colin Watson please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Colin Watson
Project:
Launchpad itself
Status:
Development

Recent revisions

18969. By Colin Watson on 2019-05-28

Fix multiple-override race for architecture-independent binaries.

If an architecture-independent binary had multiple identical overrides
created in the same publisher run (for example by multiple archive
administrators racing to fulfil the same request, or by the
phased-updates script), then BinaryPackagePublishingHistory.supersede
would supersede them all without ensuring that the newest publication
remained live.

The architecture-independent sibling publications don't have a formal
relation to each other in the data model, which is why this has always
been hard to fix. However, the dominator sorts publications with equal
versions by their creation dates, so it will always consider the most
recent override to be live. We can therefore fix this by deferring the
superseding of architecture-independent siblings until we've positively
confirmed which publications are live using the dominator's normal
logic, and taking care not to supersede the confirmed-live publications.

An additional complication is that the dominator processes one
architecture at a time, so in general it won't have confirmed the full
set of live publications until it has processed all architectures. To
cope with this, I've lifted the handling of architecture-independent
siblings out of BinaryPackagePublishingHistory.supersede into a new
BinaryPackagePublishingHistory.supersedeAssociated method. The
supersede method calls supersedeAssociated by default to minimise chaos
in the test suite, but the dominator passes a flag to disable that and
calls supersedeAssociated separately.

18968. By Launchpad PQM Bot on 2019-05-22

[r=wgrant][bug=1639975][incr] Issue an appropriate macaroon when
 dispatching a snap build that uses a private Git repository.

18967. By Launchpad PQM Bot on 2019-05-22

[r=adam-collard][bug=1791265] Allow selecting source snap channels
 when requesting manual snap builds.

18966. By Launchpad PQM Bot on 2019-05-21

[r=twom][no-qa] Prepare some doctests for change to launchpad.test
 domain.

18965. By Launchpad PQM Bot on 2019-05-16

[r=twom][no-qa] Fix "bzr status" handling in find-changed-files.sh to
 cope with "set -e".

18964. By Launchpad PQM Bot on 2019-05-10

[r=wgrant][no-qa] Make GitAPI accept snap-build macaroons again.

18963. By Launchpad PQM Bot on 2019-05-10

[r=wgrant][no-qa] Improve code import authorisation a bit more.

18962. By Launchpad PQM Bot on 2019-05-08

[r=cjwatson][no-qa] Preventing users to set 'unclean' usernames.

18961. By Launchpad PQM Bot on 2019-05-08

[r=wgrant][no-qa] Refactor code import authorisation to be clearer
 and safer.

18960. By Launchpad PQM Bot on 2019-05-08

[r=wgrant][bug=1828062] Index ProductJob(job) and
 SnapBuild(build_request),
 as otherwise we incur full table scans when deleting Job rows.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:launchpad
This branch contains Public information 
Everyone can see this information.

Subscribers