Ver código fonte

Serialize snap/destroy

Jakob Borg 12 anos atrás
pai
commit
a9a53a3d6e
2 arquivos alterados com 19 adições e 7 exclusões
  1. 9 5
      lib/snapshotset.js
  2. 10 2
      zsnapper

+ 9 - 5
lib/snapshotset.js

@@ -47,11 +47,15 @@ SnapshotSet.prototype.prune = function (num, cb) {
             return cb(err);
         }
 
-        var toDestroy = snaps.slice(0, snaps.length - num);
-        async.eachSeries(toDestroy, function (snap, cb) {
-            util.log('destroy ' + snap)
-            zfs(['destroy', '-r', snap], cb);
-        }, cb);
+        if (snaps.length > num) {
+            var toDestroy = snaps.slice(0, snaps.length - num);
+            async.eachSeries(toDestroy, function (snap, cb) {
+                util.log('destroy ' + snap)
+                zfs(['destroy', '-r', snap], cb);
+            }, cb);
+        } else {
+            cb(null);
+        }
     });
 };
 

+ 10 - 2
zsnapper

@@ -31,8 +31,16 @@ function snap(job) {
         var merged = [];
         merged = merged.concat.apply(merged, datasets);
 
-        async.forEachSeries(merged, function (ds, cb) {
-            applySnap(job, ds, cb);
+        var snapSets = merged.map(function (ds) {
+            return new SnapshotSet(ds, job.tag);
+        });
+
+        async.forEachSeries(snapSets, function (snapSet, cb) {
+            snapSet.snapshot(cb);
+        }, function () {
+            async.forEachSeries(snapSets, function (snapSet, cb) {
+                snapSet.prune(job.keep, cb);
+            });
         });
     });
 }