diff --git a/src/acct/watch_client.rb b/src/acct/watch_client.rb
index 8dfd5f3ab7..6cc295a6b1 100644
--- a/src/acct/watch_client.rb
+++ b/src/acct/watch_client.rb
@@ -94,7 +94,7 @@ module OneWatchClient
             end
 
             a = Array.new
-            resources.group_and_count(:timestamp).collect { |row|
+            resources.group_and_count(:timestamp).all.each { |row|
                 a << [row[:timestamp], row[:count].to_i]
             }
 
diff --git a/src/acct/watch_helper.rb b/src/acct/watch_helper.rb
index 4d0c37a446..dca1b56070 100644
--- a/src/acct/watch_helper.rb
+++ b/src/acct/watch_helper.rb
@@ -341,12 +341,14 @@ module WatchHelper
         end
 
         def self.flush
-            VmDelta.multi_insert(@@deltas_cache)
-            VmSample.multi_insert(@@samples_cache)
+            DB.transaction do
+                VmDelta.multi_insert(@@deltas_cache)
+                VmSample.multi_insert(@@samples_cache)
+            end
 
             Vm.each { |vm|
                 if vm.samples.count > @@vm_window_size
-                    vm.samples.last.delete
+                    vm.samples.first.destroy
                 end
             }
 
@@ -395,11 +397,13 @@ module WatchHelper
         end
 
         def self.flush
-            HostSample.multi_insert(@@samples_cache)
+            DB.transaction do
+                HostSample.multi_insert(@@samples_cache)
+            end
 
             Host.all.each { |host|
                 if host.samples.count > @@host_window_size
-                    host.samples.first.delete
+                    host.samples.first.destroy
                 end
             }