Problem importing data from Immich
Describe the bug When using the "Import Immich Data" nothing is imported.
Version 0.14.3 Immich version 1.115
To Reproduce Go to /imports and click "import Immich Data"
Expected behavior Data imported
Logs
If applicable, add logs from containers `dawarich_app` and `dawarich_sidekiq` to help explain your problem.
Logs from dawarich_app
18:58:27 web.1 | D, [2024-09-22T18:58:27.283999 #86] DEBUG -- : ↳ app/views/shared/_navbar.html.erb:69
18:58:27 web.1 | I, [2024-09-22T18:58:27.285813 #86] INFO -- : {"method":"GET","path":"/settings","format":"html","controller":"SettingsController","action":"index","status":200,"allocations":13395,"duration":68.93,"view":59.22,"db":1.13}
Logs from dawarich_sidekiq
D, [2024-09-22T18:58:39.269194 #81] DEBUG -- : ↳ app/jobs/import_immich_geodata_job.rb:7:in `perform'
E, [2024-09-22T18:58:52.460263 #81] ERROR -- : Error performing ImportImmichGeodataJob (Job ID: 57922463-1189-4e0a-93f2-1352e6381e4b) from Sidekiq(imports) in 30824.76ms: NoMethodError (undefined method `[]' for nil):
/var/app/app/services/immich/import_geodata.rb:85:in `file_name'
/var/app/app/services/immich/import_geodata.rb:18:in `call'
/var/app/app/jobs/import_immich_geodata_job.rb:9:in `perform'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:68:in `block in _perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.6/lib/i18n.rb:353:in `with_locale'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/core_ext/time/zones.rb:65:in `use_zone'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/timezones.rb:9:in `block (2 levels) in <module:Timezones>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:141:in `run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:67:in `_perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:32:in `_perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:51:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:26:in `block in perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.1/lib/active_record/railties/job_runtime.rb:13:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:40:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/notifications.rb:210:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/notifications.rb:210:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:39:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.1/lib/active_record/railties/job_runtime.rb:11:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:26:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/logging.rb:32:in `block in perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/logging.rb:41:in `tag_logger'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/logging.rb:32:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:29:in `block in execute'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/railtie.rb:79:in `block (4 levels) in <class:Railtie>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:77:in `block in wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/execution_wrapper.rb:87:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:74:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/railtie.rb:78:in `block (3 levels) in <class:Railtie>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:141:in `run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:27:in `execute'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/queue_adapters/sidekiq_adapter.rb:70:in `perform'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:220:in `execute_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:180:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/metrics/tracking.rb:26:in `track'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/metrics/tracking.rb:134:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:173:in `invoke'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_retry.rb:118:in `local'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/rails.rb:16:in `block in call'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:77:in `block in wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/execution_wrapper.rb:91:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:74:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/rails.rb:15:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:281:in `stats'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_logger.rb:23:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_retry.rb:85:in `global'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:132:in `block in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_logger.rb:50:in `prepare'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:131:in `dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:182:in `handle_interrupt'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:182:in `block in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:181:in `handle_interrupt'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:181:in `process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:86:in `process_one'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:76:in `run'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/component.rb:10:in `watchdog'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/component.rb:19:in `block in safe_thread'
2024-09-22T18:58:52.463Z pid=81 tid=ilt class=ImportImmichGeodataJob jid=ccbc8efd465953083517131b elapsed=30.849 INFO: fail
2024-09-22T18:58:52.463Z pid=81 tid=ilt WARN: {"context":"Job raised exception","job":{"retry":true,"queue":"imports","wrapped":"ImportImmichGeodataJob","args":[{"job_class":"ImportImmichGeodataJob","job_id":"57922463-1189-4e0a-93f2-1352e6381e4b","provider_job_id":null,"queue_name":"imports","priority":null,"arguments":[1],"executions":0,"exception_executions":{},"locale":"en","timezone":"Europe/Stockholm","enqueued_at":"2024-09-22T18:58:21.613987308Z","scheduled_at":null}],"class":"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper","jid":"ccbc8efd465953083517131b","created_at":1727031501.6141045,"enqueued_at":1727031501.6141832}}
2024-09-22T18:58:52.463Z pid=81 tid=ilt WARN: NoMethodError: undefined method `[]' for nil
2024-09-22T18:58:52.464Z pid=81 tid=ilt WARN: app/services/immich/import_geodata.rb:85:in `file_name'
app/services/immich/import_geodata.rb:18:in `call'
app/jobs/import_immich_geodata_job.rb:9:in `perform'
E, [2024-09-22T18:59:10.418145 #81] ERROR -- : Error performing ImportImmichGeodataJob (Job ID: a75fd068-a18f-4cb1-a609-31ec2276ab90) from Sidekiq(imports) in 31156.93ms: NoMethodError (undefined method `[]' for nil):
/var/app/app/services/immich/import_geodata.rb:85:in `file_name'
/var/app/app/services/immich/import_geodata.rb:18:in `call'
/var/app/app/jobs/import_immich_geodata_job.rb:9:in `perform'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:68:in `block in _perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.6/lib/i18n.rb:353:in `with_locale'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/core_ext/time/zones.rb:65:in `use_zone'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/timezones.rb:9:in `block (2 levels) in <module:Timezones>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:141:in `run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:67:in `_perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:32:in `_perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:51:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:26:in `block in perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.1/lib/active_record/railties/job_runtime.rb:13:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:40:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/notifications.rb:210:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/notifications.rb:210:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:39:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.1/lib/active_record/railties/job_runtime.rb:11:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/instrumentation.rb:26:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/logging.rb:32:in `block in perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/logging.rb:41:in `tag_logger'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/logging.rb:32:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:29:in `block in execute'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/railtie.rb:79:in `block (4 levels) in <class:Railtie>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:77:in `block in wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/execution_wrapper.rb:87:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:74:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/railtie.rb:78:in `block (3 levels) in <class:Railtie>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/callbacks.rb:141:in `run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/execution.rb:27:in `execute'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1/lib/active_job/queue_adapters/sidekiq_adapter.rb:70:in `perform'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:220:in `execute_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:180:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/metrics/tracking.rb:26:in `track'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/metrics/tracking.rb:134:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:173:in `invoke'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_retry.rb:118:in `local'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/rails.rb:16:in `block in call'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:77:in `block in wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/execution_wrapper.rb:91:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/lib/active_support/reloader.rb:74:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/rails.rb:15:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:281:in `stats'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_logger.rb:23:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_retry.rb:85:in `global'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:132:in `block in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_logger.rb:50:in `prepare'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:131:in `dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:182:in `handle_interrupt'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:182:in `block in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:181:in `handle_interrupt'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:181:in `process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:86:in `process_one'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:76:in `run'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/component.rb:10:in `watchdog'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/component.rb:19:in `block in safe_thread'
2024-09-22T18:59:10.421Z pid=81 tid=hjp class=ImportImmichGeodataJob jid=0ff41d27f12370d7f95c606f elapsed=31.177 INFO: fail
2024-09-22T18:59:10.421Z pid=81 tid=hjp WARN: {"context":"Job raised exception","job":{"retry":true,"queue":"imports","wrapped":"ImportImmichGeodataJob","args":[{"job_class":"ImportImmichGeodataJob","job_id":"a75fd068-a18f-4cb1-a609-31ec2276ab90","provider_job_id":null,"queue_name":"imports","priority":null,"arguments":[1],"executions":0,"exception_executions":{},"locale":"en","timezone":"Europe/London","enqueued_at":"2024-09-22T17:30:45.656133959Z","scheduled_at":null}],"class":"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper","jid":"0ff41d27f12370d7f95c606f","created_at":1727026245.6562474,"enqueued_at":1727031519.2434938,"error_message":"undefined method `[]' for nil","error_class":"NoMethodError","failed_at":1727026276.2421787,"retry_count":7,"retried_at":1727029035.7479994}}
2024-09-22T18:59:10.424Z pid=81 tid=hjp WARN: NoMethodError: undefined method `[]' for nil
2024-09-22T18:59:10.425Z pid=81 tid=hjp WARN: app/services/immich/import_geodata.rb:85:in `file_name'
app/services/immich/import_geodata.rb:18:in `call'
app/jobs/import_immich_geodata_job.rb:9:in `perform'
2024-09-22T18:59:18.489Z pid=81 tid=j61 class=ImportImmichGeodataJob jid=ccbc8efd465953083517131b INFO: start
I, [2024-09-22T18:59:18.503214 #81] INFO -- : Performing ImportImmichGeodataJob (Job ID: 57922463-1189-4e0a-93f2-1352e6381e4b) from Sidekiq(imports) enqueued at 2024-09-22T18:58:21.613987308Z with arguments: 1
D, [2024-09-22T18:59:18.509731 #81] DEBUG -- : User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
D, [2024-09-22T18:59:18.510722 #81] DEBUG -- : ↳ app/jobs/import_immich_geodata_job.rb:7:in `perform'
Mine worked... I think. though it seems low on the number of data points, and there is not status updates.
i am expecting much more than 26k datapoints. How do i check that it has worked?
Same issue here with the NoMethodError; Immich version 1.117
Mine are imported but the reverse_geocoding doesn't work. I'm using Immich v1.118.2
I get Sidekiq(reverse_geocoding) in 10.41ms: NoMethodError (undefined method 'geodata' for nil)
2024-10-22T06:13:59.787114586Z E, [2024-10-22T06:13:59.786763 #115] ERROR -- : Error performing ReverseGeocodingJob (Job ID: 9c1b033c-0605-4b2f-a987-0b706510262a) from Sidekiq(reverse_geocoding) in 10.41ms: NoMethodError (undefined method `geodata' for nil):
2024-10-22T06:13:59.787137542Z /var/app/app/services/reverse_geocoding/points/fetch_data.rb:24:in `reverse_geocoded?'
2024-10-22T06:13:59.787150136Z /var/app/app/services/reverse_geocoding/points/fetch_data.rb:13:in `call'
2024-10-22T06:13:59.787162029Z /var/app/app/jobs/reverse_geocoding_job.rb:9:in `perform'
It would be quite helpful if we could get the payload that is causing these errors but for this we need to manually trigger the job and use a breakpoint.
There's a section on the docs that might be helpful: https://dawarich.app/docs/FAQ
@guicattani
Sidekiq(reverse_geocoding) in 10.41ms: NoMethodError (undefined method 'geodata' for nil)
this means that the point, that was attempted to be reverse geocoded, was not found in the database. In this case, there would be nothing to log because there is no point in the first place.
I have the same problem with an import from Immich v1.118.2
E, [2024-10-22T19:55:26.665714 #104] ERROR -- : Error performing Import::ImmichGeodataJob (Job ID: 2b075166-2d61-4ffb-8551-92fbc6a79c65) from Sidekiq(imports) in 34864.38ms: NoMethodError (undefined method `[]' for nil):
/var/app/app/services/immich/import_geodata.rb:85:in `file_name'
/var/app/app/services/immich/import_geodata.rb:18:in `call'
/var/app/app/jobs/import/immich_geodata_job.rb:10:in `perform'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/execution.rb:68:in `block in _perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.6/lib/i18n.rb:353:in `with_locale'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/core_ext/time/zones.rb:65:in `use_zone'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/timezones.rb:9:in `block (2 levels) in <module:Timezones>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:141:in `run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/execution.rb:67:in `_perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/instrumentation.rb:32:in `_perform_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/execution.rb:51:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/instrumentation.rb:26:in `block in perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.1.1/lib/active_record/railties/job_runtime.rb:13:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/instrumentation.rb:40:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/notifications.rb:210:in `block in instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/notifications.rb:210:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/instrumentation.rb:39:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.1.1/lib/active_record/railties/job_runtime.rb:11:in `instrument'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/instrumentation.rb:26:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/logging.rb:32:in `block in perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/logging.rb:41:in `tag_logger'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/logging.rb:32:in `perform_now'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/execution.rb:29:in `block in execute'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/railtie.rb:79:in `block (4 levels) in <class:Railtie>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/reloader.rb:77:in `block in wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/execution_wrapper.rb:87:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/reloader.rb:74:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/railtie.rb:78:in `block (3 levels) in <class:Railtie>'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:130:in `instance_exec'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:130:in `block in run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/callbacks.rb:141:in `run_callbacks'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/execution.rb:27:in `execute'
/var/app/vendor/bundle/ruby/3.3.0/gems/activejob-7.2.1.1/lib/active_job/queue_adapters/sidekiq_adapter.rb:70:in `perform'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:220:in `execute_job'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:180:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/metrics/tracking.rb:26:in `track'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/metrics/tracking.rb:134:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/middleware/chain.rb:173:in `invoke'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_retry.rb:118:in `local'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/rails.rb:16:in `block in call'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/reloader.rb:77:in `block in wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/execution_wrapper.rb:91:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1.1/lib/active_support/reloader.rb:74:in `wrap'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/rails.rb:15:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:281:in `stats'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_logger.rb:23:in `call'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_retry.rb:85:in `global'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:132:in `block in dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/job_logger.rb:50:in `prepare'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:131:in `dispatch'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:182:in `handle_interrupt'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:182:in `block in process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:181:in `handle_interrupt'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:181:in `process'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:86:in `process_one'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/processor.rb:76:in `run'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/component.rb:10:in `watchdog'
/var/app/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.2/lib/sidekiq/component.rb:19:in `block in safe_thread'
2024-10-22T19:55:26.666Z pid=104 tid=hl4 class=Import::ImmichGeodataJob jid=8f9a13a6ba4e2b9597cb4a66 elapsed=34.873 INFO: fail
2024-10-22T19:55:26.666Z pid=104 tid=hl4 WARN: {"context":"Job raised exception","job":{"retry":false,"queue":"imports","wrapped":"Import::ImmichGeodataJob","args":[{"job_class":"Import::ImmichGeodataJob","job_id":"2b075166-2d61-4ffb-8551-92fbc6a79c65","provider_job_id":null,"queue_name":"imports","priority":null,"arguments":[1],"executions":0,"exception_executions":{},"locale":"en","timezone":"Europe/Amsterdam","enqueued_at":"2024-10-22T19:54:51.792773869Z","scheduled_at":null}],"class":"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper","jid":"8f9a13a6ba4e2b9597cb4a66","created_at":1729626891.7928104,"enqueued_at":1729626891.792841}}
2024-10-22T19:55:26.666Z pid=104 tid=hl4 WARN: NoMethodError: undefined method `[]' for nil
2024-10-22T19:55:26.666Z pid=104 tid=hl4 WARN: app/services/immich/import_geodata.rb:85:in `file_name'
@daggr8 @ilijamt @Millio345 in the 0.15.11 I introduced writing the response received from Immich to the tmp/imports/immich_raw_data_CURRENT_TIME_USER_EMAIL.json file, which you can then send me to debug your issue.
⚠️⚠️⚠️ The file contains structured EXIF info on the images from Immich, which might include sensitive data, such as username or file name (along with obviously necessary coordinates and timestamps). I'm only interested in the data structure, so feel free to anonymize the values. Although I can't advise on how exactly you can anonymize the data, you need to know what you might expose.
Example of JSON for a single image produced by Immich:
{"id"=>"b3f77c49-5335-4ad2-9032-afe04b8843f2",
"deviceAssetId"=>"D04881DA-F413-494D-80CB-8B4CBC8BD37D.jpg-131770",
"ownerId"=>"f579f328-c355-438c-a82c-fe3390bd5f08",
"deviceId"=>"CLI",
"libraryId"=>nil,
"type"=>"IMAGE",
"originalPath"=>"upload/library/admin/2001/2001-01-01/D04881DA-F413-494D-80CB-8B4CBC8BD37D.jpg",
"originalFileName"=>"D04881DA-F413-494D-80CB-8B4CBC8BD37D.jpg",
"originalMimeType"=>"image/jpeg",
"thumbhash"=>"JPgVHAR394iniHeHZ3h4iOD4Bg==",
"fileCreatedAt"=>"2000-12-31T23:00:00.000Z",
"fileModifiedAt"=>"2001-01-01T00:00:00.000Z",
"localDateTime"=>"2001-01-01T00:00:00.000Z",
"updatedAt"=>"2024-05-21T14:39:22.205Z",
"isFavorite"=>false,
"isArchived"=>false,
"isTrashed"=>false,
"duration"=>"0:00:00.00000",
"exifInfo"=>
{"make"=>nil,
"model"=>nil,
"exifImageWidth"=>1024,
"exifImageHeight"=>1820,
"fileSizeInByte"=>131770,
"orientation"=>"1",
"dateTimeOriginal"=>"2000-12-31T23:00:00.000Z",
"modifyDate"=>"2000-12-31T23:00:00.000Z",
"timeZone"=>"Europe/Berlin",
"lensModel"=>nil,
"fNumber"=>nil,
"focalLength"=>nil,
"iso"=>nil,
"exposureTime"=>nil,
"latitude"=>11.111,
"longitude"=>22.222,
"city"=>"Hohenschwangau",
"state"=>"Swabia, Bavaria",
"country"=>"Germany",
"description"=>"",
"projectionType"=>nil,
"rating"=>nil},
"livePhotoVideoId"=>nil,
"people"=>[],
"checksum"=>"7PGkxQcyGjRNy82gV9vOKcWZy94=",
"stack"=>nil,
"isOffline"=>false,
"hasMetadata"=>true,
"duplicateId"=>nil,
"resized"=>true}
If you could send me your file(s) in Discord, I could work on the fix. My importing process works without any errors, so I need an example of a payload that causes errors to be raised.
Hi,
For me the .json file doesn't exist.
2024-10-29T12:00:53.842Z pid=88 tid=hlg class=Import::ImmichGeodataJob jid=414c894469ad708f0b2ea3b0 elapsed=33.981 INFO: fail
2024-10-29T12:00:53.843Z pid=88 tid=hlg WARN: {"context":"Job raised exception","job":{"retry":false,"queue":"imports","wrapped":"Import::ImmichGeodataJob","args":[{"job_class":"Import::ImmichGeodataJob","job_id":"e0601d58-4daf-47be-a8b7-2c60bd6f7d59","provider_job_id":null,"queue_name":"imports","priority":null,"arguments":[1],"executions":0,"exception_executions":{},"locale":"en","timezone":"Europe/Zone","enqueued_at":"2024-10-29T12:00:19.860914115Z","scheduled_at":null}],"class":"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper","jid":"414c894469ad708f0b2ea3b0","created_at":1730203219.86115,"enqueued_at":1730203219.8612497}}
2024-10-29T12:00:53.843Z pid=88 tid=hlg WARN: Errno::ENOENT: No such file or directory @ rb_sysopen - tmp/imports/immich_raw_data_2024-10-29 10:00:53 +0000_myemail.json
2024-10-29T12:00:53.844Z pid=88 tid=hlg WARN: app/services/immich/import_geodata.rb:81:in `initialize'
Immich import is also failing for me. Immich import has worked in the past from the same Immich server, so either I have a new bad photo or something changed in Immich or Dawarich recently.
I notice the OP had this error, as did a subsequent poster:
E, [2024-09-22T18:58:52.460263 #81] ERROR -- : Error performing ImportImmichGeodataJob (Job ID: 57922463-1189-4e0a-93f2-1352e6381e4b) from Sidekiq(imports) in 30824.76ms: NoMethodError (undefined method []' for nil):`
But now others and myself are seeing this instead:
E, [2024-11-04T16:18:36.195705 #116] ERROR -- : Error performing Import::ImmichGeodataJob (Job ID: 1ef8c659-3cdd-41c4-a92c-081f750764d0) from Sidekiq(imports) in 41241.91ms: Errno::ENOENT (No such file or directory @ rb_sysopen - tmp/imports/immich_raw_data_2024-11-04 10:18:36 [email protected]):
It appears that the Sidekiq container needs to have a /var/app/tmp/imports folder.
I fixed the issue by doing this:
docker exec -it dawarich_sidekiq sh
mkdir -p /var/app/tmp/imports
exit
And then run the import again.
This fix will only last until you restart the container(s), but it should get the import to work.
I'm not sure why we are missing that folder, perhaps because we didn't set up a "watch" folder and so it doesn't get auto-created?
Seems like the process should create the import folder if/when it needs it, but it does not.
I followed the tip above and i get a json containing this. I tried it multiple times with the same result.
[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
I followed the tip above and i get a json containing this. I tried it multiple times with the same result.
This one is really interesting, it means Dawarich receives a list of empty arrays so there are no points to get data from. I think I'll change approach to writing the debugging file and will log whole response from Immich, so we could investigate it further
It appears that the Sidekiq container needs to have a
/var/app/tmp/importsfolder.
In the default docker-compose.yml there are these lines:
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_app
volumes:
- gem_cache:/usr/local/bundle/gems_app
- public:/var/app/public
- watched:/var/app/tmp/imports/watched
last one assumes your instance should have this directory, but I guess if you didn't use watched functionality, Dawarich should create it on its own. I'll look into it too
Here is a script for you guys to see what data is being returned by your Immich instance:
#!/bin/bash
# Set your API key and base URL here
IMMICH_API_KEY="YOUR_API_KEY"
IMMICH_API_BASE_URL="http://immich.instance.com/api"
# Output file
OUTPUT_FILE="immich_data.json"
# Temporary file for storing intermediate responses
TEMP_FILE="immich_data_temp.json"
echo "[]" > $TEMP_FILE # Initialize as an empty JSON array
# Calculate total requests for progress tracking
START_YEAR=1970
END_YEAR=$(date +"%Y")
TOTAL_REQUESTS=$(( (END_YEAR - START_YEAR + 1) * 12 ))
# Initialize counters
current_request=0
# Loop through each year and month, retrieve data, and append to TEMP_FILE
for year in $(seq $START_YEAR $END_YEAR); do
for month in $(seq -w 1 12); do
# Construct the URL
url="${IMMICH_API_BASE_URL}/timeline/bucket?size=MONTH&timeBucket=${year}-${month}-01"
# Send the request and get the response
response=$(curl -s -H "x-api-key: $IMMICH_API_KEY" -H "accept: application/json" "$url")
# Check if the response is valid JSON and append it to TEMP_FILE
if echo "$response" | jq empty 2>/dev/null; then
# Add the response to TEMP_FILE JSON array
jq ". += [$response]" $TEMP_FILE > tmp.json && mv tmp.json $TEMP_FILE
else
echo "Failed to retrieve data for ${year}-${month}"
fi
# Increment the counter and update progress bar
current_request=$((current_request + 1))
progress=$((current_request * 100 / TOTAL_REQUESTS))
printf "\rProgress: [%-50s] %d%%" $(printf '#%.0s' $(seq 1 $((progress / 2)))) $progress
done
done
# Move the final JSON array from TEMP_FILE to OUTPUT_FILE
mv $TEMP_FILE $OUTPUT_FILE
# Complete the progress bar and show final message
echo -e "\nData collection complete. Output written to $OUTPUT_FILE."
Save it as immich_geodata.sh, chown +x immich_geodata.sh it and then run it: ./immich_geodata.sh
The result will be written into immich_data.json file.
Then feel free to send me the results via DM in discord and I'll be able to debug it. Hope this helps!
I don't use Discord unfortunately. I hope it's okay to send it here. The immich_data.json file doesn't contain any data, just hundreds of rows of
[],
[],
[],
I don't use Discord unfortunately. I hope it's okay to send it here.
The immich_data.json file doesn't contain any data, just hundreds of rows of
[], [], [],
In the immich interface, do your photos have info on geodata? Are they shown on immich map?
Also, the resulting file might contain a lot of empty arrays in the beginning and then the actual data is way below them, so scrolling might help :)
I don't use Discord unfortunately. I hope it's okay to send it here. The immich_data.json file doesn't contain any data, just hundreds of rows of
[], [], [],In the immich interface, do your photos have info on geodata? Are they shown on immich map?
Yepp they do.
And the file is empty, no data besides hundreds of rows of [],. I've double checked :)
Hmm so curl -s -H "x-api-key: your_api_key_here" -H "accept: application/json" "https://your_base_url_here/api/timeline/bucket?size=MONTH&timeBucket=2024-10-01" -o immich_data.json will return you an empty result? Replace year and month to ones you know for sure have pictures
curl -s -H "x-api-key: your_api_key_here" -H "accept: application/json" "https://your_base_url_here/api/timeline/bucket?size=MONTH&timeBucket=2024-10-01" -o immich_data.json
Same problem and yes, empty result, even though there is geodata in the photos for the day specified.
Using baseurl/api/timeline returns []%
Using baseurl/timeline returns a page
I've tried multiple dates.
I can add that it takes a minute or two for the script to run and while it does the CPU on my Immich server is spiking, so it definitely talks to the API. I also just upgraded to Immich 1.120.1 and ran it again. Same result.
Then I'm afraid it's something with Immich, because if there is data in your instance, it should be returned, but it's not :(
Then I'm afraid it's something with Immich, because if there is data in your instance, it should be returned, but it's not :(
I'm not confident that's the only problem, i think there are two:
WARN: Socket::ResolutionError: Failed to open TCP connection to ${REDACTED_URL}:443 (getaddrinfo: Try again)
If i add a hosts entry in the sidekiq container and use the local IP and port then it's able to connect and then subsequently, but it fails over https. I think your code may not be able to handle https?
The subsequent error is the one predominantly experienced in this issues ticket:
WARN: NoMethodError: undefined method []' for nil`
I created an issue within the immich github for this: https://github.com/immich-app/immich/issues/14084
This tool should not use the timeline endpoints to extract/download gps data from immich. The timeline endpoints are optimized for specific use cases, like hiding archived photos, showing only trashed photos, etc., and are subject to change. Please use the "search metadata" endpoint for bulk operations like this.
https://immich.app/docs/api/search-metadata
In 0.16.5 I reworked the integration to use POST /api/search/metadata to get geodata, if you're experiencing problems with immich integration, update and try to import the data again
At first run i got an error that /var/app/tmp/imports didn't exist. I manually created it and ran the job again.
So far so good, there's a 50MB .json file and the log is going crazy.
However the "Jobs in queue" is at 0.
I'll update when it's finished.
this seems to be working! Thank you :)
Seems to work for me as well. Thank you :)