summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2009-07-23 02:41:12 +0000
committerNarayan Desai <desai@mcs.anl.gov>2009-07-23 02:41:12 +0000
commit0f3296f6f876bf2aeccaa7de4683d968dc33bb7e (patch)
tree65ac5577a77f42b8e60cced41ed197da8f5fdcaf /src
parentdf71d563a9b82e08807e1e3603ae15fbd4ae1bae (diff)
downloadbcfg2-0f3296f6f876bf2aeccaa7de4683d968dc33bb7e.tar.gz
bcfg2-0f3296f6f876bf2aeccaa7de4683d968dc33bb7e.tar.bz2
bcfg2-0f3296f6f876bf2aeccaa7de4683d968dc33bb7e.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/lib/Server/Plugins/Snapshots.py12
1 files changed, 11 insertions, 1 deletions
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)