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 |