Skip to content

Update BulkImports::Failure to display subrelation that failed to import

What does this MR do and why?

Direct Transfer API (and UI) shows failures for the things that we could not import. If a subrelation of a top level relation failed to import (e.g. MR diff note) - we still show top level relation as the one that failed to import. In reality, the top level relation is imported, but a subrelation did not. Which is confusing.

Update relation to include the failed to import subrelation, so it's more obvious what exactly failed to import.

Changelog: added

Migration Output

Click to expand
main: == [advisory_lock_connection] object_id: 117600, pg_backend_pid: 75580
main: == 20240126095808 AddSubrelationColumnToBulkImportFailures: migrating =========
main: -- add_column(:bulk_import_failures, :subrelation, :text)
main:    -> 0.0029s
main: == 20240126095808 AddSubrelationColumnToBulkImportFailures: migrated (0.0068s) 

main: == [advisory_lock_connection] object_id: 117600, pg_backend_pid: 75580
ci: == [advisory_lock_connection] object_id: 117860, pg_backend_pid: 75585
ci: == 20240126095808 AddSubrelationColumnToBulkImportFailures: migrating =========
ci: -- add_column(:bulk_import_failures, :subrelation, :text)
ci:    -> 0.0019s
ci: == 20240126095808 AddSubrelationColumnToBulkImportFailures: migrated (0.0105s) 

ci: == [advisory_lock_connection] object_id: 117860, pg_backend_pid: 75585
main: == [advisory_lock_connection] object_id: 118020, pg_backend_pid: 75589
main: == 20240126100509 AddTextLimitToBulkImportFailuresSubrelationColumn: migrating 
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("ALTER TABLE bulk_import_failures\nADD CONSTRAINT check_f99665a440\nCHECK ( char_length(subrelation) <= 255 )\nNOT VALID;\n")
main:    -> 0.0019s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0002s
main: -- execute("ALTER TABLE bulk_import_failures VALIDATE CONSTRAINT check_f99665a440;")
main:    -> 0.0008s
main: -- execute("RESET statement_timeout")
main:    -> 0.0002s
main: == 20240126100509 AddTextLimitToBulkImportFailuresSubrelationColumn: migrated (0.0289s) 

main: == [advisory_lock_connection] object_id: 118020, pg_backend_pid: 75589
ci: == [advisory_lock_connection] object_id: 118160, pg_backend_pid: 75591
ci: == 20240126100509 AddTextLimitToBulkImportFailuresSubrelationColumn: migrating 
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE bulk_import_failures\nADD CONSTRAINT check_f99665a440\nCHECK ( char_length(subrelation) <= 255 )\nNOT VALID;\n")
ci:    -> 0.0013s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0004s
ci: -- execute("ALTER TABLE bulk_import_failures VALIDATE CONSTRAINT check_f99665a440;")
ci:    -> 0.0008s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0003s
ci: == 20240126100509 AddTextLimitToBulkImportFailuresSubrelationColumn: migrated (0.0144s) 

ci: == [advisory_lock_connection] object_id: 118160, pg_backend_pid: 75591

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

Before After

How to set up and validate locally

Edited by George Koltsov

Merge request reports