Merge branch '19362-all-webdav-via-sitefs'
[arvados.git] / services / api / db / migrate / 20190322174136_add_file_info_to_collection.rb
old mode 100755 (executable)
new mode 100644 (file)
index e12e508..c0cd40d
@@ -2,48 +2,16 @@
 #
 # SPDX-License-Identifier: AGPL-3.0
 
-class AddFileInfoToCollection < ActiveRecord::Migration
-  def do_batch(pdhs)
-    pdhs_str = ''
-    pdhs.each do |pdh|
-      pdhs_str << "'" << pdh << "'" << ','
-    end
-
-    collections = ActiveRecord::Base.connection.exec_query(
-      'SELECT DISTINCT portable_data_hash, manifest_text FROM collections '\
-      "WHERE portable_data_hash IN (#{pdhs_str[0..-2]}) "
-    )
-
-    collections.rows.each do |row|
-      file_count = 0
-      file_size_total = 0
-      row[1].scan(/\S+/) do |token|
-        is_file = token.match(/^[[:digit:]]+:[[:digit:]]+:/)
-        if is_file
-          _, filesize, filename = token.split(':', 3)
-
-          # Avoid counting empty dir placeholders
-          break if filename == '.' && filesize.zero?
-
-          file_count += 1
-          file_size_total += filesize.to_i
-        end
-      end
-      ActiveRecord::Base.connection.exec_query('BEGIN')
-      ActiveRecord::Base.connection.exec_query("UPDATE collections SET file_count=#{file_count}, "\
-                                               "file_size_total=#{file_size_total} "\
-                                               "WHERE portable_data_hash='#{row[0]}'")
-      ActiveRecord::Base.connection.exec_query('COMMIT')
-    end
-  end
-
+class AddFileInfoToCollection < ActiveRecord::Migration[4.2]
   def up
     add_column :collections, :file_count, :integer, default: 0, null: false
-    add_column :collections, :file_size_total, :integer, default: 0, null: false
+    add_column :collections, :file_size_total, :integer, limit: 8, default: 0, null: false
 
-    Container.group_pdhs_for_multiple_transactions('AddFileInfoToCollection') do |pdhs|
-      do_batch(pdhs)
-    end
+    puts "Collections now have two new columns, file_count and file_size_total."
+    puts "They were initialized with a zero value. If you are upgrading an Arvados"
+    puts "installation, please run the populate-file-info-columns-in-collections.rb"
+    puts "script to populate the columns. If this is a new installation, that is not"
+    puts "necessary."
   end
 
   def down