Go to file
Mike Frysinger 13f323b2c2 event_log: turn id generation from a generator to a func call
Running lots of sync processes in parallel can hit the failure:
Fetching projects:  23% (124/523)Exception in thread Thread-201:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/src/repo/subcmds/sync.py", line 278, in _FetchProjectList
    success = self._FetchHelper(opt, project, *args, **kwargs)
  File "/usr/local/src/repo/subcmds/sync.py", line 357, in _FetchHelper
    start, finish, success)
  File "/usr/local/src/repo/event_log.py", line 104, in AddSync
    event = self.Add(project.relpath, task_name, start, finish, success)
  File "/usr/local/src/repo/event_log.py", line 74, in Add
    'id': (kind, next(self._next_id)),
ValueError: generator already executing

It looks like, while we lock the multiprocessing value correctly, the
generator that wraps the value isn't parallel safe.  Since we don't
have a way of doing that (as it's part of the language), turn it into
a plain function call instead.

Bug: https://crbug.com/gerrit/10293
Change-Id: I0db03601986ca0370a1699bab32adb03e7b2910a
2019-01-14 16:11:08 -05:00
docs update markdown/help header format 2018-10-10 01:28:43 -04:00
hooks hooks/pre-auto-gc-battery: allow gc to run on non-laptops 2018-07-11 13:45:58 -07:00
subcmds init: Remove -c short option for --current-branch 2018-12-20 19:55:02 +00:00
tests Fix gitc-init behavior 2015-10-07 15:43:22 -07:00
.flake8 Replace pylint with pyflakes/flake8 2016-09-14 09:49:02 +02:00
.gitattributes Adds additional crlf clobber avoidance. 2016-06-22 08:36:45 +00:00
.gitignore Add repoc to the .gitignore file 2013-03-08 01:18:08 +00:00
.mailmap Update .mailmap 2017-05-26 21:44:57 +09:00
.project Set correct name in PyDev and Eclipse project config 2013-04-19 09:35:43 +09:00
.pydevproject Leverage the next keyword from python 2.7 2018-12-19 11:06:35 -08:00
color.py Pylint and PEP8 fixes for color.py 2015-03-28 21:12:27 +00:00
command.py Remove unused pylint suppressions 2018-07-24 22:20:08 +08:00
COPYING Initial Contribution 2008-10-21 07:00:00 -07:00
editor.py Allow quotes in editor command on Windows 2017-08-31 13:49:49 -07:00
error.py error: fix typos 2015-06-04 00:21:16 +00:00
event_log.py event_log: turn id generation from a generator to a func call 2019-01-14 16:11:08 -05:00
git_command.py Set GIT_SSH_VARIANT when setting GIT_SSH 2017-10-19 14:39:26 -07:00
git_config.py Add support for long paths 2018-10-22 08:16:35 -07:00
git_refs.py Add support for long paths 2018-10-22 08:16:35 -07:00
git_ssh Don't allow git fetch to start ControlMaster 2010-10-29 08:15:14 -07:00
gitc_utils.py gitc: Lower concurrent ls-projects requests 2016-08-23 14:19:00 -07:00
main.py Remove unused pylint suppressions 2018-07-24 22:20:08 +08:00
manifest_xml.py Add support for long paths 2018-10-22 08:16:35 -07:00
pager.py Support pager on Windows 2017-08-31 13:49:26 -07:00
platform_utils_win32.py Windows: Add support for creating symlinks as an unprivileged user 2018-10-03 09:41:09 -07:00
platform_utils.py platform_utils: Fix exception handling in _walk_windows_impl 2018-11-06 09:25:35 +09:00
progress.py Always print percentage when syncing quietly 2017-07-15 16:44:55 +00:00
project.py Allow clobbering of existing tags from remote. 2018-12-10 11:33:16 -08:00
pyversion.py Move Python version checking to a separate module 2013-05-23 07:28:53 +00:00
README.md README: link in new bug tracker 2018-12-20 02:11:46 -05:00
repo init: Remove -c short option for --current-branch 2018-12-20 19:55:02 +00:00
SUBMITTING_PATCHES.md Replace pylint with pyflakes/flake8 2016-09-14 09:49:02 +02:00
trace.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
wrapper.py Add wrapper module 2014-01-30 15:17:09 -08:00

repo

Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git. The repo command is an executable Python script that you can put anywhere in your path.