NoteDiffFileCreation Error for some diff notes during Direct Transfer
As mentioned in https://gitlab.com/gitlab-org/gitlab/-/issues/431770 (confidential) a project Direct Transfer has a few failing to import Diff note comments
The note itself is present, however the diff associated with the note is not readable, since it failed to be created. The error message is NoteDiffFileCreationError: Failed to find diff line for ...
.
Investigate why this can be happening and if there are ways of making sure the diff file creation succeeds. It's a tricky one because there is no reliable way of reproducing it, without working with a customer's project export (which is not available and is confidential).
Error
Failed to find diff line for: path/to/file.go, old_line: , new_line: 533
. Is the missing old_line
param a problem here?
Backtrace
[app/models/diff_note.rb:48:in `create_diff_file',
config/initializers/forbid_sidekiq_in_transactions.rb:106:in `block in committed!',
config/initializers/forbid_sidekiq_in_transactions.rb:10:in `skipping_transaction_check',
config/initializers/forbid_sidekiq_in_transactions.rb:106:in `committed!',
lib/gitlab/database/load_balancing/connection_proxy.rb:127:in `public_send',
lib/gitlab/database/load_balancing/connection_proxy.rb:127:in `block in write_using_load_balancer',
lib/gitlab/database/load_balancing/load_balancer.rb:141:in `block in read_write',
lib/gitlab/database/load_balancing/load_balancer.rb:235:in `retry_with_backoff',
lib/gitlab/database/load_balancing/load_balancer.rb:130:in `read_write',
lib/gitlab/database/load_balancing/connection_proxy.rb:126:in `write_using_load_balancer',
lib/gitlab/database/load_balancing/connection_proxy.rb:78:in `transaction',
lib/gitlab/database.rb:359:in `block in transaction',
lib/gitlab/database.rb:358:in `transaction',
app/models/concerns/cross_database_modification.rb:83:in `transaction',
lib/gitlab/import_export/base/relation_object_saver.rb:59:in `block (2 levels) in save_subrelations',
lib/gitlab/import_export/base/relation_object_saver.rb:56:in `each',
lib/gitlab/import_export/base/relation_object_saver.rb:56:in `each_slice',
lib/gitlab/import_export/base/relation_object_saver.rb:56:in `block in save_subrelations',
lib/gitlab/import_export/base/relation_object_saver.rb:55:in `each_pair',
lib/gitlab/import_export/base/relation_object_saver.rb:55:in `save_subrelations',
lib/gitlab/import_export/base/relation_object_saver.rb:46:in `execute',
lib/bulk_imports/ndjson_pipeline.rb:48:in `load',
lib/bulk_imports/pipeline/runner.rb:31:in `block (2 levels) in run',
lib/bulk_imports/pipeline/runner.rb:69:in `run_pipeline_step',
lib/bulk_imports/pipeline/runner.rb:30:in `block in run',
lib/gitlab/import_export/json/ndjson_reader.rb:42:in `<<',
lib/gitlab/import_export/json/ndjson_reader.rb:42:in `block (2 levels) in consume_relation',
lib/gitlab/import_export/json/ndjson_reader.rb:41:in `foreach',
lib/gitlab/import_export/json/ndjson_reader.rb:41:in `with_index',
lib/gitlab/import_export/json/ndjson_reader.rb:41:in `block in consume_relation',
lib/bulk_imports/pipeline/extracted_data.rb:8:in `each',
lib/bulk_imports/pipeline/extracted_data.rb:8:in `each_with_index',
lib/bulk_imports/pipeline/extracted_data.rb:8:in `each_with_index',
lib/bulk_imports/pipeline/runner.rb:18:in `run',
app/workers/bulk_imports/pipeline_batch_worker.rb:77:in `run',
app/workers/bulk_imports/pipeline_batch_worker.rb:52:in `block in perform',
app/services/concerns/exclusive_lease_guard.rb:29:in `try_obtain_lease',
app/workers/bulk_imports/pipeline_batch_worker.rb:52:in `perform',
lib/gitlab/sidekiq_middleware/skip_jobs.rb:49:in `call',
lib/gitlab/database/load_balancing/sidekiq_server_middleware.rb:29:in `call',
lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing.rb:16:in `perform',
lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb:44:in `perform',
lib/gitlab/sidekiq_middleware/duplicate_jobs/server.rb:8:in `call',
lib/click_house/migration_support/sidekiq_middleware.rb:7:in `call',
lib/gitlab/sidekiq_middleware/pause_control/strategies/base.rb:31:in `perform',
lib/gitlab/sidekiq_middleware/pause_control/strategy_handler.rb:22:in `perform',
lib/gitlab/sidekiq_middleware/pause_control/server.rb:8:in `call',
lib/gitlab/sidekiq_middleware/worker_context.rb:9:in `wrap_in_optional_context',
lib/gitlab/sidekiq_middleware/worker_context/server.rb:19:in `block in call',
lib/gitlab/application_context.rb:130:in `block in use',
lib/gitlab/application_context.rb:130:in `use',
lib/gitlab/application_context.rb:64:in `with_context',
lib/gitlab/sidekiq_middleware/worker_context/server.rb:17:in `call',
lib/gitlab/sidekiq_status/server_middleware.rb:7:in `call',
lib/gitlab/sidekiq_versioning/middleware.rb:9:in `call',
lib/gitlab/sidekiq_middleware/query_analyzer.rb:7:in `block in call',
lib/gitlab/database/query_analyzer.rb:37:in `within',
lib/gitlab/sidekiq_middleware/query_analyzer.rb:7:in `call',
lib/gitlab/sidekiq_middleware/admin_mode/server.rb:14:in `call',
lib/gitlab/sidekiq_middleware/instrumentation_logger.rb:9:in `call',
lib/gitlab/sidekiq_middleware/batch_loader.rb:7:in `call',
lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb:7:in `call',
lib/gitlab/sidekiq_middleware/request_store_middleware.rb:8:in `block in call',
lib/gitlab/sidekiq_middleware/request_store_middleware.rb:7:in `call',
lib/gitlab/sidekiq_middleware/server_metrics.rb:105:in `block in call',
lib/gitlab/sidekiq_middleware/server_metrics.rb:133:in `block in instrument',
lib/gitlab/metrics/background_transaction.rb:33:in `run',
lib/gitlab/sidekiq_middleware/server_metrics.rb:133:in `instrument',
lib/gitlab/sidekiq_middleware/server_metrics.rb:104:in `call',
lib/gitlab/sidekiq_middleware/monitor.rb:10:in `block in call',
lib/gitlab/sidekiq_daemon/monitor.rb:46:in `within_job',
lib/gitlab/sidekiq_middleware/monitor.rb:9:in `call',
lib/gitlab/sidekiq_middleware/size_limiter/server.rb:13:in `call',
lib/gitlab/sidekiq_logging/structured_logger.rb:21:in `call']