diff options
author | Chris Laplante <chris.laplante@agilent.com> | 2020-01-16 11:28:05 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-02-11 23:02:13 +0000 |
commit | 64d62e5d48014af963967e4b5b24553853cb6df3 (patch) | |
tree | 46e661c5c5a247e0c7d728c068cfa659cb3083b3 /bitbake/lib | |
parent | ee1dd9f1e2630d100776c436badc97902d224082 (diff) | |
download | poky-64d62e5d48014af963967e4b5b24553853cb6df3.tar.gz |
bitbake: persist_data.py: Immediately get exclusive lock in __setitem__
To avoid races, SQLTable::__setitem__ needs an exclusive lock for the
entire transaction, not just the INSERT/UPDATE part.
(Bitbake rev: 2ba2f224b50956313f5c2ba01942143b4d6098f2)
Signed-off-by: Chris Laplante <chris.laplante@agilent.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit feb43e7c30f5bfab75d718896c45df621810d06f)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/persist_data.py | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/bitbake/lib/bb/persist_data.py b/bitbake/lib/bb/persist_data.py index de8f87a8bf..7357ab2d44 100644 --- a/bitbake/lib/bb/persist_data.py +++ b/bitbake/lib/bb/persist_data.py | |||
@@ -179,6 +179,9 @@ class SQLTable(collections.MutableMapping): | |||
179 | elif not isinstance(value, str): | 179 | elif not isinstance(value, str): |
180 | raise TypeError('Only string values are supported') | 180 | raise TypeError('Only string values are supported') |
181 | 181 | ||
182 | # Ensure the entire transaction (including SELECT) executes under write lock | ||
183 | cursor.execute("BEGIN EXCLUSIVE") | ||
184 | |||
182 | cursor.execute("SELECT * from %s where key=?;" % self.table, [key]) | 185 | cursor.execute("SELECT * from %s where key=?;" % self.table, [key]) |
183 | row = cursor.fetchone() | 186 | row = cursor.fetchone() |
184 | if row is not None: | 187 | if row is not None: |