]> git.donarmstrong.com Git - debbugs.git/commitdiff
delete associations in a transaction by 1000
authorDon Armstrong <don@donarmstrong.com>
Mon, 7 Aug 2017 20:10:45 +0000 (13:10 -0700)
committerDon Armstrong <don@donarmstrong.com>
Mon, 7 Aug 2017 20:10:45 +0000 (13:10 -0700)
Debbugs/DB/Load.pm

index 6f300f96f6690c07beb4764cb4c311141f181607..a85a4ec28eaaa97a3876c1c9258aebbe8d070a27 100644 (file)
@@ -571,8 +571,15 @@ sub load_packages {
     }
     # remove associations for packages not in this suite
     if (@sa_to_del) {
-       $schema->resultset('SrcAssociation')->
-           search_rs({id => \@sa_to_del})->delete();
+        $it = natatime 1000, @sa_to_del;
+        while (my @v = $it->()) {
+            $schema->
+                txn_do(sub {
+                           $schema->resultset('SrcAssociation')->
+                               search_rs({id => \@v})->
+                               delete();
+                       });
+        }
     }
     # update packages in this suite to have a modification time of now
     $schema->resultset('SrcAssociation')->
@@ -635,8 +642,15 @@ sub load_packages {
                   scalar @v) if defined $p;
     }
     if (@bin_to_del) {
-       $schema->resultset('BinAssociation')->
-           search_rs({id => \@bin_to_del})->delete();
+        $it = natatime 1000, @bin_to_del;
+        while (my @v = $it->()) {
+            $schema->
+                txn_do(sub {
+                           $schema->resultset('BinAssociation')->
+                               search_rs({id => \@v})->
+                               delete();
+                       });
+        }
     }
     $schema->resultset('BinAssociation')->
        search_rs({suite => $suite_id})->
@@ -683,3 +697,7 @@ sub load_suite {
 
 
 __END__
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End: