[dak/master 1/4] import known_changes with correct name. catch keybord exception
Signed-off-by: Mike O'Connor <stew@vireo.org>
---
dak/import_known_changes.py | 32 ++++++++++++++++++++++++++++++--
daklib/changes.py | 2 +-
2 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/dak/import_known_changes.py b/dak/import_known_changes.py
index dcd3a33..0391d97 100755
--- a/dak/import_known_changes.py
+++ b/dak/import_known_changes.py
@@ -168,6 +168,10 @@ class ChangesGenerator(threading.Thread):
threading.Thread.__init__(self)
self.queue = queue
self.session = DBConn().session()
+ self.die = False
+
+ def plsDie(self):
+ self.die = True
def run(self):
cnf = Config()
@@ -181,6 +185,9 @@ class ChangesGenerator(threading.Thread):
if not filenames:
# Empty directory (or only subdirectories), next
continue
+ if self.die:
+ return
+
for changesfile in filenames:
if not changesfile.endswith(".changes"):
# Only interested in changes files.
@@ -199,10 +206,16 @@ class ImportThread(threading.Thread):
threading.Thread.__init__(self)
self.queue = queue
self.session = DBConn().session()
+ self.die = False
+
+ def plsDie(self):
+ self.die = True
def run(self):
while True:
try:
+ if self.die:
+ return
to_import = self.queue.dequeue()
if not to_import:
return
@@ -268,10 +281,25 @@ def main():
queue = OneAtATime()
- ChangesGenerator(queue).start()
+ threads = [ ChangesGenerator(queue) ]
for i in range(num_threads):
- ImportThread(queue).start()
+ threads.append( ImportThread(queue) )
+
+ try:
+ for thread in threads:
+ thread.start()
+
+ for thread in thrads:
+ thread.join()
+
+ except KeyboardInterrupt:
+ utils.warn("Caught C-c; terminating.")
+ for thread in threads:
+ thread.plsDie()
+
+ for thread in threads:
+ thread.join()
if __name__ == '__main__':
diff --git a/daklib/changes.py b/daklib/changes.py
index 2413bf4..90ce231 100755
--- a/daklib/changes.py
+++ b/daklib/changes.py
@@ -215,7 +215,7 @@ class Changes(object):
distribution, urgency, maintainer, fingerprint, changedby, date)
VALUES (:changesfile,:filetime,:source,:binary, :architecture,
:version,:distribution,:urgency,:maintainer,:fingerprint,:changedby,:date)""",
- { 'changesfile':changesfile,
+ { 'changesfile':self.changes_file,
'filetime':filetime,
'source':self.changes["source"],
'binary':self.changes["binary"],
--
1.6.3.3
Reply to: