Older project exports failing with "Name regex can't be blank" in container_expiration_policy
@glen_miller provided a test project exported with GitLab v13.12 to validate !74031 (merged). We noticed that the project imported fine, but we did see this exception raised (https://sentry.gitlab.net/gitlab/gitlab-geo-internal-develop-is/issues/2971161/?query=is%3Aunresolved):
ActiveRecord::RecordInvalid: Validation failed: Name regex can't be blank
from activerecord (6.1.4.1) lib/active_record/validations.rb:80:in `raise_validation_error'
from activerecord (6.1.4.1) lib/active_record/validations.rb:53:in `save!'
from activerecord (6.1.4.1) lib/active_record/transactions.rb:302:in `block in save!'
from activerecord (6.1.4.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
from activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
from activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
from activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
from activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
from activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
from activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
from activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
from activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
from activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
from gitlab/database/load_balancing/connection_proxy.rb:119:in `block in write_using_load_balancer'
from gitlab/database/load_balancing/load_balancer.rb:112:in `block in read_write'
from gitlab/database/load_balancing/load_balancer.rb:172:in `retry_with_backoff'
from gitlab/database/load_balancing/load_balancer.rb:110:in `read_write'
from gitlab/database/load_balancing/connection_proxy.rb:118:in `write_using_load_balancer'
from gitlab/database/load_balancing/connection_proxy.rb:70:in `transaction'
from activerecord (6.1.4.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
from activerecord (6.1.4.1) lib/active_record/transactions.rb:302:in `save!'
from activerecord (6.1.4.1) lib/active_record/suppressor.rb:48:in `save!'
from gitlab/import_export/group/relation_tree_restorer.rb:83:in `block in process_relation_item!'
from gitlab/import_export/import_failure_service.rb:26:in `block in with_retry'
from retriable (3.1.2) lib/retriable.rb:61:in `block in retriable'
from retriable (3.1.2) lib/retriable.rb:56:in `times'
from retriable (3.1.2) lib/retriable.rb:56:in `retriable'
from retriable (3.1.2) lib/retriable.rb:22:in `with_context'
from gitlab/import_export/import_failure_service.rb:25:in `with_retry'
from gitlab/import_export/group/relation_tree_restorer.rb:82:in `process_relation_item!'
from gitlab/import_export/group/relation_tree_restorer.rb:71:in `block in process_relation!'
from gitlab/import_export/json/ndjson_reader.rb:42:in `<<'
from gitlab/import_export/json/ndjson_reader.rb:42:in `block (2 levels) in consume_relation'
from gitlab/import_export/json/ndjson_reader.rb:41:in `foreach'
from gitlab/import_export/json/ndjson_reader.rb:41:in `with_index'
from gitlab/import_export/json/ndjson_reader.rb:41:in `block in consume_relation'
from gitlab/import_export/group/relation_tree_restorer.rb:70:in `each'
from gitlab/import_export/group/relation_tree_restorer.rb:70:in `each'
from gitlab/import_export/group/relation_tree_restorer.rb:70:in `process_relation!'
from gitlab/import_export/group/relation_tree_restorer.rb:65:in `block in create_relations!'
from gitlab/import_export/group/relation_tree_restorer.rb:64:in `each'
from gitlab/import_export/group/relation_tree_restorer.rb:64:in `create_relations!'
from gitlab/import_export/group/relation_tree_restorer.rb:38:in `block (3 levels) in restore'
from bulk_insertable_associations.rb:54:in `with_bulk_insert'
from gitlab/import_export/group/relation_tree_restorer.rb:36:in `block (2 levels) in restore'
@10io I see this validation was added in bfa9fd74. We seem to create a policy by default:
after_create -> { create_or_load_association(:container_expiration_policy) }
Do we need to:
- Set a default in the import case?
- Disable this policy by default?
Edited by Stan Hu