summaryrefslogtreecommitdiff
path: root/db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2018-06-03 15:04:47 +0900
committerShinya Maeda <shinya@gitlab.com>2018-06-04 14:14:20 +0900
commitbcd664f53a4009bc752fbc47e1c4d6f76c0b8cc2 (patch)
treebf5371ebe3e97e68cb0a8b84680bf32657cbfc12 /db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb
parent0d00d02e842a0c4b22d213e00143a08d97597000 (diff)
downloadgitlab-ce-bcd664f53a4009bc752fbc47e1c4d6f76c0b8cc2.tar.gz
Fix specs. Rename migration file name which was conflicted with background migration's.
Diffstat (limited to 'db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb')
-rw-r--r--db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb b/db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb
new file mode 100644
index 00000000000..ea782e1596b
--- /dev/null
+++ b/db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb
@@ -0,0 +1,33 @@
+class ScheduleToArchiveLegacyTraces < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ BATCH_SIZE = 5000
+ BACKGROUND_MIGRATION_CLASS = 'ArchiveLegacyTraces'
+
+ disable_ddl_transaction!
+
+ class Build < ActiveRecord::Base
+ include EachBatch
+ self.table_name = 'ci_builds'
+ self.inheritance_column = :_type_disabled # Disable STI
+
+ scope :finished, -> { where(status: [:success, :failed, :canceled]) }
+
+ scope :without_archived_trace, -> do
+ where('NOT EXISTS (SELECT 1 FROM ci_job_artifacts WHERE ci_builds.id = ci_job_artifacts.job_id AND ci_job_artifacts.file_type = 3)')
+ end
+ end
+
+ def up
+ queue_background_migration_jobs_by_range_at_intervals(
+ ::ScheduleToArchiveLegacyTraces::Build.finished.without_archived_trace,
+ BACKGROUND_MIGRATION_CLASS,
+ 5.minutes,
+ batch_size: BATCH_SIZE)
+ end
+
+ def down
+ # noop
+ end
+end