diff options
author | Bertrand SIMONNET <bsimonnet@chromium.org> | 2014-12-10 17:02:55 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-12-11 19:05:43 +0000 |
commit | c03c8ee70e4cb86b2f45181000262f891d6f72b5 (patch) | |
tree | 70a852ecbc581cf5ba69414a8ae691776217d8c0 /scripts/parallel_emerge.py | |
parent | d9db6006cd883ccd826c4708d55f692db1fa0cba (diff) | |
download | chromite-c03c8ee70e4cb86b2f45181000262f891d6f72b5.tar.gz |
parallel_emerge: preload portage.data.userpriv_groups
We are seeing bad file descriptor errors during the evaluation of
portage.data.userpriv_groups.
As it is lazily evaluated and we fork before each emerge step, it is
executed hundreds of times. Load it before we start forking so that it is
evaluated only once.
BUG=chromium:433482
TEST=Modify portage to fail if the userpriv_groups is evaluated after we fork.
build_packages fails when we comment the evaluation in parallel_emerge.
TEST=trybot run on gizmo, beaglebone, daisy, link, chromiumos-sdk,
lumpy-incremental.
Change-Id: I945092da7b6ee04baee284e3480457ae87943ff8
Reviewed-on: https://chromium-review.googlesource.com/234572
Reviewed-by: David James <davidjames@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
Diffstat (limited to 'scripts/parallel_emerge.py')
-rw-r--r-- | scripts/parallel_emerge.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/scripts/parallel_emerge.py b/scripts/parallel_emerge.py index 4eee7bb3b..fc61351af 100644 --- a/scripts/parallel_emerge.py +++ b/scripts/parallel_emerge.py @@ -1896,6 +1896,12 @@ def real_main(argv): # Now upgrade the rest. os.execvp(args[0], args) + # Attempt to solve crbug.com/433482 + # The file descriptor error appears only when getting userpriv_groups + # (lazily generated). Loading userpriv_groups here will reduce the number of + # calls from few hundreds to one. + portage.data._get_global('userpriv_groups') + # Run the queued emerges. scheduler = EmergeQueue(deps_graph, emerge, deps.package_db, deps.show_output, deps.unpack_only) |