From 0f3296f6f876bf2aeccaa7de4683d968dc33bb7e Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Thu, 23 Jul 2009 02:41:12 +0000 Subject: Snapshots: make importer async, and serialize db loads git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5380 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/Snapshots.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib/Server/Plugins/Snapshots.py b/src/lib/Server/Plugins/Snapshots.py index c8d4e31c3..315dc34c0 100644 --- a/src/lib/Server/Plugins/Snapshots.py +++ b/src/lib/Server/Plugins/Snapshots.py @@ -6,7 +6,9 @@ import difflib import Bcfg2.Server.Plugin import Bcfg2.Server.Snapshots from Bcfg2.Server.Snapshots.model import Snapshot +import Queue import time +import threading ftypes = ['ConfigFile', 'SymLink', 'Directory'] datafields = {'Package': ['version'], @@ -52,9 +54,17 @@ class Snapshots(Bcfg2.Server.Plugin.Statistics, Bcfg2.Server.Plugin.Plugin.__init__(self, core, datastore) Bcfg2.Server.Plugin.Statistics.__init__(self) self.session = Bcfg2.Server.Snapshots.setup_session() + self.work_queue = Queue.Queue() + self.loader = threading.Thread(target=self.load_snapshot) + self.loader.start() + + def load_snapshot(self): + while True: + (metadata, data) = self.work_queue.get(block=True) + self.statistics_from_old_stats(metadata, data) def process_statistics(self, metadata, data): - return self.statistics_from_old_stats(metadata, data) + return self.work_queue.put((metadata, data)) def statistics_from_old_stats(self, metadata, xdata): # entries are name -> (modified, correct, start, desired, end) -- cgit v1.2.3-1-g7c22