openstreetmap / openstreetmap-website

The Rails application that powers OpenStreetMap
https://www.openstreetmap.org/
GNU General Public License v2.0
2.08k stars 906 forks source link

GPX Import failure: PG::ForeignKeyViolation #4177

Open Zaczero opened 10 months ago

Zaczero commented 10 months ago

URL

No response

How to reproduce the issue?

  1. Initiate the upload of a GPX trace.
  2. Delete the trace before its processing is complete.
  3. Monitor the mailbox.

Screenshot(s) or anything else?

PG::ForeignKeyViolation: ERROR: insert or update on table "gps_points" violates foreign key constraint "gps_points_gpx_id_fkey" DETAIL: Key (gpx_id)=(9496524) is not present in table "gpx_files". /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `exec_params' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/abstract_adapter.rb:752:in `block in log' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/notifications/instrumenter.rb:24:in `instrument' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/abstract_adapter.rb:743:in `log' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/postgresql_adapter.rb:766:in `exec_no_cache' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/postgresql_adapter.rb:745:in `execute_and_clear' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/postgresql/database_statements.rb:54:in `exec_query' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/abstract/database_statements.rb:132:in `exec_insert' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `exec_insert' /var/lib/gems/3.0.0/gems/composite_primary_keys-14.0.6/lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb:6:in `insert' /var/lib/gems/3.0.0/gems/activerecord-7.0.7/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/adapters/postgresql_adapter.rb:25:in `insert_many' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:826:in `block in import_without_validations_or_callbacks' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:822:in `each' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:822:in `each_slice' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:822:in `import_without_validations_or_callbacks' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:763:in `import_with_validations' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:698:in `import_helper' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:532:in `bulk_import' /var/lib/gems/3.0.0/gems/activerecord-import-1.4.1/lib/activerecord-import/import.rb:547:in `bulk_import!' /srv/www.openstreetmap.org/rails/app/models/trace.rb:241:in `block (2 levels) in import' /srv/www.openstreetmap.org/rails/lib/gpx.rb:30:in `parse_file' /srv/www.openstreetmap.org/rails/lib/gpx.rb:48:in `block in points' /var/lib/gems/3.0.0/gems/ffi-libarchive-1.1.3/lib/ffi-libarchive/reader.rb:154:in `each_entry_with_data' /srv/www.openstreetmap.org/rails/lib/gpx.rb:47:in `points' /srv/www.openstreetmap.org/rails/app/models/trace.rb:214:in `each' /srv/www.openstreetmap.org/rails/app/models/trace.rb:214:in `each_slice' /srv/www.openstreetmap.org/rails/app/models/trace.rb:214:in `block in import' /var/lib/gems/3.0.0/gems/activestorage-7.0.7/lib/active_storage/downloader.rb:15:in `block in open' /var/lib/gems/3.0.0/gems/activestorage-7.0.7/lib/active_storage/downloader.rb:24:in `open_tempfile' /var/lib/gems/3.0.0/gems/activestorage-7.0.7/lib/active_storage/downloader.rb:12:in `open' /var/lib/gems/3.0.0/gems/activestorage-7.0.7/lib/active_storage/service.rb:90:in `open' /var/lib/gems/3.0.0/gems/activestorage-7.0.7/app/models/active_storage/blob.rb:301:in `open' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/core_ext/module/delegation.rb:304:in `public_send' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/core_ext/module/delegation.rb:304:in `method_missing' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/core_ext/module/delegation.rb:304:in `public_send' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/core_ext/module/delegation.rb:304:in `method_missing' /srv/www.openstreetmap.org/rails/app/models/trace.rb:204:in `import' /srv/www.openstreetmap.org/rails/app/jobs/trace_importer_job.rb:5:in `perform' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/execution.rb:65:in `block in _perform_job' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:118:in `block in run_callbacks' /var/lib/gems/3.0.0/gems/i18n-1.14.1/lib/i18n.rb:322:in `with_locale' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `instance_exec' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `block in run_callbacks' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/core_ext/time/zones.rb:65:in `use_zone' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/timezones.rb:9:in `block (2 levels) in <module:Timezones>' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `instance_exec' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `block in run_callbacks' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:138:in `run_callbacks' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/execution.rb:64:in `_perform_job' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/instrumentation.rb:20:in `_perform_job' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/execution.rb:52:in `perform_now' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/instrumentation.rb:14:in `block in perform_now' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/instrumentation.rb:25:in `block in instrument' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/notifications.rb:206:in `block in instrument' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/notifications/instrumenter.rb:24:in `instrument' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/notifications.rb:206:in `instrument' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/instrumentation.rb:35:in `instrument' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/instrumentation.rb:14:in `perform_now' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/logging.rb:18:in `block in perform_now' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/tagged_logging.rb:99:in `block in tagged' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/tagged_logging.rb:37:in `tagged' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/tagged_logging.rb:99:in `tagged' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/logging.rb:25:in `tag_logger' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/logging.rb:18:in `perform_now' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/execution.rb:30:in `block in execute' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:118:in `block in run_callbacks' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/railtie.rb:54:in `block (4 levels) in <class:Railtie>' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/execution_wrapper.rb:92:in `wrap' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/reloader.rb:72:in `block in wrap' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/execution_wrapper.rb:92:in `wrap' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/reloader.rb:71:in `wrap' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/railtie.rb:53:in `block (3 levels) in <class:Railtie>' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `instance_exec' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `block in run_callbacks' /var/lib/gems/3.0.0/gems/activesupport-7.0.7/lib/active_support/callbacks.rb:138:in `run_callbacks' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/execution.rb:28:in `execute' /var/lib/gems/3.0.0/gems/activejob-7.0.7/lib/active_job/queue_adapters/delayed_job_adapter.rb:47:in `perform' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/backend/base.rb:81:in `block in invoke_job' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:61:in `block in initialize' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:66:in `execute' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:40:in `run_callbacks' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/backend/base.rb:78:in `invoke_job' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:231:in `block (2 levels) in run' /var/lib/gems/3.0.0/gems/timeout-0.4.0/lib/timeout.rb:186:in `block in timeout' /var/lib/gems/3.0.0/gems/timeout-0.4.0/lib/timeout.rb:193:in `timeout' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:231:in `block in run' /usr/lib/ruby/3.0.0/benchmark.rb:308:in `realtime' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:230:in `run' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:313:in `block in reserve_and_run_one_job' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:61:in `block in initialize' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:66:in `execute' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:40:in `run_callbacks' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:313:in `reserve_and_run_one_job' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:214:in `block in work_off' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:213:in `times' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:213:in `work_off' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:176:in `block (4 levels) in start' /usr/lib/ruby/3.0.0/benchmark.rb:308:in `realtime' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:175:in `block (3 levels) in start' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:61:in `block in initialize' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:66:in `execute' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:40:in `run_callbacks' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:174:in `block (2 levels) in start' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:173:in `loop' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:173:in `block in start' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/plugins/clear_locks.rb:7:in `block (2 levels) in <class:ClearLocks>' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:79:in `block (2 levels) in add' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:61:in `block in initialize' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:79:in `block in add' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:66:in `execute' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/lifecycle.rb:40:in `run_callbacks' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/worker.rb:172:in `start' /var/lib/gems/3.0.0/gems/delayed_job-4.1.11/lib/delayed/tasks.rb:9:in `block (2 levels) in <main>' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `each' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:116:in `each' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level' /var/lib/gems/3.0.0/gems/railties-7.0.7/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling' /var/lib/gems/3.0.0/gems/railties-7.0.7/lib/rails/commands/rake/rake_command.rb:24:in `block in perform' /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/rake_module.rb:59:in `with_application' /var/lib/gems/3.0.0/gems/railties-7.0.7/lib/rails/commands/rake/rake_command.rb:18:in `perform' /var/lib/gems/3.0.0/gems/railties-7.0.7/lib/rails/command.rb:51:in `invoke' /var/lib/gems/3.0.0/gems/railties-7.0.7/lib/rails/commands.rb:18:in `<main>' /var/lib/gems/3.0.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require' /var/lib/gems/3.0.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require' bin/rails:4:in `<main>' 
tomhughes commented 10 months ago

That's from an import failure notification email I assume?

Zaczero commented 10 months ago

Yup, just reporting this because there is a huge wall of logs.