X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d5745d536d013a6731e0e6a872abe34d71f0995e..b1daec9a928eefbc71d8b7368b148fa7b04bf32d:/services/api/app/models/collection.rb diff --git a/services/api/app/models/collection.rb b/services/api/app/models/collection.rb index c2c60ec70e..1bbe8cc661 100644 --- a/services/api/app/models/collection.rb +++ b/services/api/app/models/collection.rb @@ -17,7 +17,7 @@ class Collection < ArvadosModel # Posgresql JSONB columns should NOT be declared as serialized, Rails 5 # already know how to properly treat them. attribute :properties, :jsonbHash, default: {} - attribute :storage_classes_desired, :jsonbArray, default: ["default"] + attribute :storage_classes_desired, :jsonbArray, default: lambda { Rails.configuration.DefaultStorageClasses } attribute :storage_classes_confirmed, :jsonbArray, default: [] before_validation :default_empty_manifest @@ -37,8 +37,6 @@ class Collection < ArvadosModel validate :protected_managed_properties_updates, on: :update after_validation :set_file_count_and_total_size before_save :set_file_names - before_update :preserve_version_exclusive_updates_leave_modified_at_alone, - if: Proc.new { |col| col.changes.keys.sort == ['modified_at', 'updated_at', 'preserve_version'].sort } around_update :manage_versioning, unless: :is_past_version? api_accessible :user, extend: :common do |t| @@ -152,7 +150,9 @@ class Collection < ArvadosModel def strip_signatures_and_update_replication_confirmed if self.manifest_text_changed? in_old_manifest = {} - if not self.replication_confirmed.nil? + # manifest_text_was could be nil when dealing with a freshly created snapshot, + # so we skip this case because there was no real manifest change. (Bug #18005) + if (not self.replication_confirmed.nil?) and (not self.manifest_text_was.nil?) self.class.each_manifest_locator(manifest_text_was) do |match| in_old_manifest[match[1]] = true end @@ -308,8 +308,10 @@ class Collection < ArvadosModel end end - def preserve_version_exclusive_updates_leave_modified_at_alone - self.modified_at = self.modified_at_was + def maybe_update_modified_by_fields + if !(self.changes.keys - ['updated_at', 'preserve_version']).empty? + super + end end def syncable_updates @@ -630,7 +632,7 @@ class Collection < ArvadosModel # validation on empty desired storage classes return an error. def default_storage_classes if self.storage_classes_desired.nil? || self.storage_classes_desired.empty? - self.storage_classes_desired = ["default"] + self.storage_classes_desired = Rails.configuration.DefaultStorageClasses end self.storage_classes_confirmed ||= [] end