Gentoo Archives: gentoo-dev

From: Alex Alexander <wired@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Re: RFC: Making backwards-incompatible tree changes | a solution for GLEP 55's problem
Date: Tue, 20 Sep 2011 06:58:49
Message-Id: 20110920065547.GA81837@ion.local
In Reply to: [gentoo-dev] Re: RFC: Making backwards-incompatible tree changes | a solution for GLEP 55's problem by Duncan <1i5t5.duncan@cox.net>
1 On Mon, Sep 19, 2011 at 10:53:15PM +0000, Duncan wrote:
2 > Alex Alexander posted on Tue, 20 Sep 2011 01:14:38 +0300 as excerpted:
3 >
4 > > At the moment, all systems have a SYNC line similar to this:
5 > >
6 > > SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
7 > >
8 > > My idea is simple. When incompatible changes have to be introduced to
9 > > the tree, push a new version of portage that includes support for all
10 > > the new features we want to provide.
11 > >
12 > > Then, freeze the tree and clone it into a revbumped rsync module, i.e.
13 > >
14 > > SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage-r1"
15 > >
16 > > That way the last update provided by the old tree will be the updated
17 > > portage package, which will be aware of the SYNC change.
18 > >
19 > > After the user installs that update, every subsequent emerge run will
20 > > print a fat red warning telling the user that the tree has been
21 > > revbumped.
22 >
23 > At least an initial read suggests that you just multiplied the mirror
24 > space requirements by however many times you use this trick. I don't
25 > believe infra's going to go for that.
26 >
27 > A workaround may be to eventually store the frozen tree snapshot in only
28 > one location, with a path change for the bump and a transparent redirect
29 > (does rsync handle redirects?) on the others, so those that haven't
30 > updated yet don't get broken. (If rsync doesn't handle redirects,
31 > they'll simply get an rsync error until they investigate, and point at
32 > the single location for that final update before switching.)
33 >
34 > But that's not going to work well for the initial surge, so some sort of
35 > transition plan will need to be implemented. One relatively simplistic
36 > possibility that would at least limit the mirrors space required to 2X,
37 > for a limited time, would be to specify no more than one such upgrade "in
38 > flight" at once on the mirror network, with older ones in the single-
39 > location archive, limiting the "in-flight" time to say two months.
40 > However, while that limits the space requirements to 2X and only requires
41 > that for a limited time, that's still a significant requirement that's
42 > unlikely to go over particularly well, so a rather more complex, or at
43 > least different, proposal seems necessary.
44 >
45 > Please consider this in your proposal, and/or point out where I missed
46 > it, if indeed I did. =:^\
47
48 Yes, space requirements will increase with this solution, but considering that
49 it will solve an important issue we're having, I'd say it is worth the
50 tradeoff.
51
52 Still, if space is a big issue, it could be worked around by trimming down the
53 frozen tree to portage and its dependencies. That can't happen in -r1 though,
54 since portage must be aware of what's happening so it can block any other
55 updates and potential downgrades resulting from the trimmed tree and overlays
56 before the SYNC variable is updated.
57
58 Even if we opt to keep the whole tree, we could deprecate and dump it after a year.
59
60 Usage of this feature should be as rare as possible. Having 5 revisions of the
61 rsync tree in a year means we're doing something wrong, but one revision per
62 year should be affordable (infra-wise) and would solve many problems.
63
64 --
65 Alex Alexander | wired
66 + Gentoo Linux Developer
67 ++ www.linuxized.com