From: Zac Medico Date: Sun, 8 May 2011 03:05:21 +0000 (-0700) Subject: vardbapi: acquire lock during counter_tick_core X-Git-Tag: v2.1.9.49~15 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=32c4d1d7f05b8ab10a97a5ef965be14a8dd7e10b;p=portage.git vardbapi: acquire lock during counter_tick_core --- diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 1b13e1371..1302556fc 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -776,17 +776,25 @@ class vardbapi(dbapi): to the global file. Returns new counter value. @param myroot: ignored, self._eroot is used instead + @param mycpv: ignored """ myroot = None - counter = self.get_counter_tick_core(mycpv=mycpv) - 1 - if incrementing: - #increment counter - counter += 1 - # use same permissions as config._init_dirs() - ensure_dirs(os.path.dirname(self._counter_path), - gid=portage_gid, mode=0o2750, mask=0o2) - # update new global counter file - write_atomic(self._counter_path, str(counter)) + mycpv = None + + self.lock() + try: + counter = self.get_counter_tick_core() - 1 + if incrementing: + #increment counter + counter += 1 + # use same permissions as config._init_dirs() + ensure_dirs(os.path.dirname(self._counter_path), + gid=portage_gid, mode=0o2750, mask=0o2) + # update new global counter file + write_atomic(self._counter_path, str(counter)) + finally: + self.unlock() + return counter def _dblink(self, cpv):