Stefan O'Rear wrote:
On Thu, May 31, 2007 at 02:54:13PM +0100, Simon Marlow wrote:
Neil Mitchell wrote:
Hi

The disadvantage is that you need quite a bit of disk space, and that
if a buildbot is dead for a long time the "works" tree may get quite
old.
I wondered about this too, but I was worrying about ensuring atomicity during the push, especially since we have multiple repos. Maybe it's not a serious
problem.
The push from active to works? My thought was that each buildbot would
have its own pair of repos, so you don't run into this problem.
The "works" repo has to be public (otherwise nobody can use it), and hence the push has to be atomic with respect to pulls. I was thinking in terms of having the "works" repos on darcs.haskell.org, but of course they could be local to the builder if you have a way of exporting them.

mv ~/public/works ~/public/works.locked
(cd build/repo1; darcs push ~/public/works.locked/repo1)
(cd build/repo2; darcs push ~/public/works.locked/repo2)
(cd build/repo3; darcs push ~/public/works.locked/repo3)
mv ~/public/works.locked ~/public/works

Directory renames are atomic on *NIX.

Not quite - you made it atomic with respect to pushing, but not with respect to users running 'darcs-all pull'. The failure case is this:

  - user starts "darcs-all pull", pulls from ghc
  - buildbot pushes to all repos, atomically
  - user pulls from packages/base

I realise it's likely that the darcs-all will fail due to the repos disappearing, rather than succeed with inconsistent repos, but there's no guarantee that it will fail.

Cheers,
        Simon

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to