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

[dak/master] Always write out indices in by-hash directories



The byhash boolean now controls:
- whether Release lives in zzz-dists (should we change this too?)
- whether Acquire-by-hash is advertised in Release

This should help speed up the second stage of mirroring.

Signed-off-by: Julien Cristau <jcristau@debian.org>
---
 dak/generate_releases.py | 64 +++++++++++++++++++++++-------------------------
 1 file changed, 31 insertions(+), 33 deletions(-)

diff --git a/dak/generate_releases.py b/dak/generate_releases.py
index fed3fed..232c29a 100755
--- a/dak/generate_releases.py
+++ b/dak/generate_releases.py
@@ -202,37 +202,36 @@ class ReleaseWriter(object):
             WHERE suite_id = :id AND unreferenced IS NULL"""
         session.execute(query, {'id': self.suite.suite_id})
 
-        if self.suite.byhash:
-            query = "SELECT path FROM hashfile WHERE suite_id = :id"
-            q = session.execute(query, {'id': self.suite.suite_id})
-            known_hashfiles = set(row[0] for row in q)
-            updated = set()
-            new = set()
-
-            # Update the hashfile table with new or updated files
-            for filename in fileinfo:
-                if not os.path.exists(filename):
-                    # probably an uncompressed index we didn't generate
-                    continue
-                byhashdir = os.path.join(os.path.dirname(filename), 'by-hash')
-                for h in hashes:
-                    field = h.release_field
-                    hashfile = os.path.join(byhashdir, field, fileinfo[filename][field])
-                    if hashfile in known_hashfiles:
-                        updated.add(hashfile)
-                    else:
-                        new.add(hashfile)
-
-            if updated:
-                session.execute("""
-                    UPDATE hashfile SET unreferenced = NULL
-                    WHERE path = ANY(:p) AND suite_id = :id""",
-                    {'p': list(updated), 'id': self.suite.suite_id})
-            if new:
-                session.execute("""
-                    INSERT INTO hashfile (path, suite_id)
-                    VALUES (:p, :id)""",
-                    [{'p': hashfile, 'id': self.suite.suite_id} for hashfile in new])
+        query = "SELECT path FROM hashfile WHERE suite_id = :id"
+        q = session.execute(query, {'id': self.suite.suite_id})
+        known_hashfiles = set(row[0] for row in q)
+        updated = set()
+        new = set()
+
+        # Update the hashfile table with new or updated files
+        for filename in fileinfo:
+            if not os.path.exists(filename):
+                # probably an uncompressed index we didn't generate
+                continue
+            byhashdir = os.path.join(os.path.dirname(filename), 'by-hash')
+            for h in hashes:
+                field = h.release_field
+                hashfile = os.path.join(byhashdir, field, fileinfo[filename][field])
+                if hashfile in known_hashfiles:
+                    updated.add(hashfile)
+                else:
+                    new.add(hashfile)
+
+        if updated:
+            session.execute("""
+                UPDATE hashfile SET unreferenced = NULL
+                WHERE path = ANY(:p) AND suite_id = :id""",
+                {'p': list(updated), 'id': self.suite.suite_id})
+        if new:
+            session.execute("""
+                INSERT INTO hashfile (path, suite_id)
+                VALUES (:p, :id)""",
+                [{'p': hashfile, 'id': self.suite.suite_id} for hashfile in new])
 
         session.commit()
 
@@ -426,8 +425,7 @@ class ReleaseWriter(object):
         os.rename(outfile + '.new', outfile)
 
         self._update_hashfile_table(session, fileinfo, hashes)
-        if suite.byhash:
-            self._make_byhash_links(fileinfo, hashes)
+        self._make_byhash_links(fileinfo, hashes)
 
         sign_release_dir(suite, os.path.dirname(outfile))
 
-- 
2.1.4



Reply to: