summaryrefslogtreecommitdiff
path: root/scripts/parallel_emerge.py
diff options
context:
space:
mode:
authorBertrand SIMONNET <bsimonnet@chromium.org>2014-12-10 17:02:55 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-12-11 19:05:43 +0000
commitc03c8ee70e4cb86b2f45181000262f891d6f72b5 (patch)
tree70a852ecbc581cf5ba69414a8ae691776217d8c0 /scripts/parallel_emerge.py
parentd9db6006cd883ccd826c4708d55f692db1fa0cba (diff)
downloadchromite-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.py6
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)