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

[dak/master] generate_releases: separate hashfile table update from hardlink creation



This way we only touch the filesystem after the db is updated.

Signed-off-by: Julien Cristau <jcristau@debian.org>
---
 dak/generate_releases.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/dak/generate_releases.py b/dak/generate_releases.py
index d947def..34103f7 100755
--- a/dak/generate_releases.py
+++ b/dak/generate_releases.py
@@ -390,7 +390,16 @@ class ReleaseWriter(object):
                             INSERT INTO hashfile (path, suite_id)
                             VALUES (:p, :id)''',
                             {'p': hashfile, 'id': suite.suite_id})
+            session.commit()
 
+            for filename in fileinfo:
+                if not os.path.exists(filename):
+                    # probably an uncompressed index we didn't generate
+                    continue
+
+                for h in hashes:
+                    field = h.release_field
+                    hashfile = os.path.join(os.path.dirname(filename), 'by-hash', field, fileinfo[filename][field])
                     try:
                         os.makedirs(os.path.dirname(hashfile))
                     except OSError as exc:
@@ -402,7 +411,6 @@ class ReleaseWriter(object):
                         if exc.errno != errno.EEXIST:
                             raise
 
-                session.commit()
 
         sign_release_dir(suite, os.path.dirname(outfile))
 
-- 
2.1.4



Reply to: