summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorChris Laplante <chris.laplante@agilent.com>2020-01-16 11:28:05 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-02-11 23:02:13 +0000
commit64d62e5d48014af963967e4b5b24553853cb6df3 (patch)
tree46e661c5c5a247e0c7d728c068cfa659cb3083b3 /bitbake/lib
parentee1dd9f1e2630d100776c436badc97902d224082 (diff)
downloadpoky-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.py3
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: