Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2017-11-17 17:21:36 +0300
committerDouwe Maan <douwe@gitlab.com>2017-11-17 17:21:36 +0300
commit5c0ba938aa55009d891da25abc66b0fb3bd7d43b (patch)
treefa931efa6072dab8c0e58b19b302d0ccf0f8bec8 /db/post_migrate
parent6d36c3b5de7772415b1176b8247c34053b826a74 (diff)
parent8f84369ae105c59a0c5cd947edb352fd616c4335 (diff)
Merge branch 'bvl-delete-empty-fork-networks' into 'master'
Delete empty fork networks See merge request gitlab-org/gitlab-ce!15373
Diffstat (limited to 'db/post_migrate')
-rw-r--r--db/post_migrate/20171114104051_remove_empty_fork_networks.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/db/post_migrate/20171114104051_remove_empty_fork_networks.rb b/db/post_migrate/20171114104051_remove_empty_fork_networks.rb
new file mode 100644
index 00000000000..2fe99a1b9c1
--- /dev/null
+++ b/db/post_migrate/20171114104051_remove_empty_fork_networks.rb
@@ -0,0 +1,36 @@
+class RemoveEmptyForkNetworks < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ BATCH_SIZE = 10_000
+
+ class MigrationForkNetwork < ActiveRecord::Base
+ include EachBatch
+
+ self.table_name = 'fork_networks'
+ end
+
+ class MigrationForkNetworkMembers < ActiveRecord::Base
+ self.table_name = 'fork_network_members'
+ end
+
+ disable_ddl_transaction!
+
+ def up
+ say 'Deleting empty ForkNetworks in batches'
+
+ has_members = MigrationForkNetworkMembers
+ .where('fork_network_members.fork_network_id = fork_networks.id')
+ .select(1)
+ MigrationForkNetwork.where('NOT EXISTS (?)', has_members)
+ .each_batch(of: BATCH_SIZE) do |networks|
+ deleted = networks.delete_all
+
+ say "Deleted #{deleted} rows in batch"
+ end
+ end
+
+ def down
+ # nothing
+ end
+end