New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 712334 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Toggle to turn off git wrapper on CrOs builds

Project Member Reported by nxia@chromium.org, Apr 17 2017

Issue description

Is there a mechanism to turn off the git retry wrapper on CrOs builds? Before the problems we discussed (e.g. no git wrapper in chroot, not clean git clone retry, etc.) are resolved, we plan to turn off the git retry wrapper in the CrOs builds to avoid repeated retries. 
 

Comment 1 by d...@chromium.org, Apr 18 2017

There is currently no such mechanism. However, I am hesitant to go with this option, namely because disabling something indefinitely is the sort of thing that tends to last indefinitely.

I implemented a CL that solved all of the issues that we talked about on Friday - notably on your list, "clone" retries. How difficult would it be to add the wrapper to "chroot" and call that a victory?

Comment 2 by d...@chromium.org, Apr 18 2017

(I CC'd you on the CL, but just in case: https://chromium-review.googlesource.com/c/479459/ )
Cc: vapier@chromium.org
Chroot solutions:

1) Decide it's okay to not have the wrapper inside the chroot.

Easiest, if we can show we don't use git from inside the chroot, and prove that going forward. Might be as easy as adding an assert to repository.py and git.py.

2) Copy binary into chroot via cros_sdk script.

Somewhat hacky, since builder configuration specific stuff makes it into the chroot generation code. Similar issue to how we are handling goma, which involved touching many layers of code.

Some generic cipd inside the chroot solution would be good here, but branching makes it tricky.

3) Use ebuild to install binary into chroot.

How we normally manage things. It's probably not super hard because the source is already on the chromium GoB, though there are pinning/branching questions to decide. It would mean we have independent versions of the wrapper inside and outside the chroot, and environmental variables would be tricky to handle, going forward.

Comment 4 by d...@chromium.org, Apr 18 2017

Does "chroot" use system Git or bundle its own? I think the latter, so (3) would make sense here. How about "chromite" - does "chroot" actually have its own "chromite", or does outer "chromite" call "chroot" functions and perform the retry on them?

Comment 5 by vapier@chromium.org, Apr 18 2017

when you say "binary", do you actually mean a precompiled binary ?  we don't like that as a general thing, especially if we have the source.  if it's just building some go project and installing the results, we should be able to write an ebuild to do that.

wrt git usage inside the chroot, i don't know the answer there.  we have in the past (via git eclasses), but we probably do with chromite too (although not a git clone operation which i think is all you care about).

Comment 6 by vapier@chromium.org, Apr 18 2017

the CrOS sdk builds & installs its own version of git from upstream.
https://chromium.googlesource.com/chromiumos/overlays/portage-stable/+/master/dev-vcs/git/

wrt chromite, there is only one source repo active in the build ... the one part of the repo sync (ignoring the weird bootstrap logic we have to integrate with buildbot).

Comment 7 by d...@chromium.org, Apr 18 2017

Is "clone" special here? If "cbuildbot" does all of the network activity, it's possible that "chroot" Git doesn't even do any network operations, so there isn't anything to transiently care about.

Comment 8 by vapier@chromium.org, Apr 18 2017

we've had ebuilds do network based git clones in the past.  it's not something we want though, so when it happened, we fixed the ebuild.

Comment 9 by d...@chromium.org, Apr 18 2017

Ah, makes sense. Then yeah I think having the wrapper in and on PATH seems valuable.

Oh the other hand, if you have ebuilds that cloned in the past, they probably didn't have any transient failure protection, meaning that you're not losing anything by *not* having the wrapper installed.

Comment 10 by nxia@chromium.org, Jun 8 2018

Cc: -nxia@chromium.org
Status: Assigned (was: Untriaged)
This bug has an owner, thus, it's been triaged. Changing status to "assigned".

Sign in to add a comment