[webkit-dev] svn.webkit.org
Mark Rowe
mrowe at apple.com
Thu Mar 1 04:07:01 PST 2012
On 2012-03-01, at 03:37, Osztrogonac Csaba <oszi at inf.u-szeged.hu> wrote:
> Hi All,
>
> To avoid overloading svn.webkit.org again and again with zillion svn
> checkout after "rm -rf"-ed working copies on the bots, I stopped all
> of our clobbered buildbot.
>
> After unbanning our network, I'll copy a locally tar-ed WebKit-svn
> copy to all bots and then restart them one by one not to overload
> svn.webkit.org.
You can get a relatively up to date working copy from <http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2>.
> And I'm thinking about how can we make buildbots more robust in the future.
> My first idea is that we should setup git mirrors for all WebKit port, and
> then make buildbots use these mirrors instead of svn.webkit.org. To do it,
> we need to modify the master.cfg a little bit.
There are two different options that we're investigating to address this "thundering herd" problem that tends to kill SVN after buildbot downtime:
1) Teach build slaves to fetch and unpack <http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2> rather than using "svn checkout".
2) Add additional hardware and load-balance svn.webkit.org across several machines so that the spike in load is distributed.
I have a rough version of the former working locally on a test master I set up. I should be able to get it cleaned up enough to be usable later this week. The latter is obviously a more involved solution but would also generally improve SVN performance. I expect that we'll continue to pursue that solution regardless.
> ---------------------------------------------------------------------------------------------------------
> class Factory(factory.BuildFactory):
> def __init__(self, platform, configuration, architectures, buildOnly, features=None, **kwargs):
> factory.BuildFactory.__init__(self)
> self.addStep(ConfigureBuild, platform=platform, configuration=configuration, architecture=" ".join(architectures), buildOnly=buildOnly, features=features)
> self.addStep(CheckOutSource)
> self.addStep(KillOldProcesses)
> ...
> ---------------------------------------------------------------------------------------------------------
>
> To migrate the bots simple from svn to git isn't a good solution, because in this case
> we'll loose the svn revision number on the waterfall. My idea is that replace the
> "self.addStep(CheckOutSource)" to calling a shell/perl/python script which updates
> the local copy from the Qt/GTK/Apple/Chromium/... git mirror with the following way:
> - git fetch
> - git reset --hard `git svn find-rev r<svn-revision-number-got-from-the-master>`
>
> I'm going to implement this initial git updater script this week and try to migrate our
> bots on build.webkit.sed.hu to use it. If we manage to make it stable, we can make
> build.webkit.org slaves to use it too. How does it sound? Any better idea?
Pulling from git instead of SVN is certainly worth considering, but I wouldn't be surprised if this simply shifted the performance issue from svn.webkit.org to git.webkit.org.
- Mark
More information about the webkit-dev
mailing list