[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[dak/master] Acquire a lock in the main process when writing Contents



This should prevent changes to the {src,bin}_contents tables and result
in all helper processes seeing the same data.
---
 daklib/contents.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/daklib/contents.py b/daklib/contents.py
index 08b09cb..75fb5e5 100644
--- a/daklib/contents.py
+++ b/daklib/contents.py
@@ -299,6 +299,11 @@ class ContentsWriter(object):
         deb_id = get_override_type('deb', session).overridetype_id
         udeb_id = get_override_type('udeb', session).overridetype_id
         pool = Pool()
+
+        # Lock tables so that nobody can change things underneath us
+        session.execute("LOCK TABLE bin_contents IN SHARE MODE")
+        session.execute("LOCK TABLE src_contents IN SHARE MODE")
+
         for suite in suite_query:
             suite_id = suite.suite_id
             for component in component_query:
-- 
2.1.4


Reply to: