Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem importing data from Immich #270

Open
daggr8 opened this issue Sep 22, 2024 · 26 comments
Open

Problem importing data from Immich #270

daggr8 opened this issue Sep 22, 2024 · 26 comments

Comments

@daggr8
Copy link

daggr8 commented Sep 22, 2024

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'

@palitu
Copy link

palitu commented Oct 5, 2024

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?

@Millio345
Copy link

Same issue here with the NoMethodError; Immich version 1.117

@guicattani
Copy link

guicattani commented Oct 22, 2024

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

@Freika
Copy link
Owner

Freika commented Oct 22, 2024

@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.

@ilijamt
Copy link

ilijamt commented Oct 22, 2024

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'

@Freika
Copy link
Owner

Freika commented Oct 29, 2024

@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.

@daggr8
Copy link
Author

daggr8 commented Oct 29, 2024

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'

@chrisl8
Copy link
Contributor

chrisl8 commented Nov 4, 2024

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 -0600_christen@lofland.net.json):

@chrisl8
Copy link
Contributor

chrisl8 commented Nov 4, 2024

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.

@daggr8
Copy link
Author

daggr8 commented Nov 5, 2024

I followed the tip above and i get a json containing this. I tried it multiple times with the same result.

[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]

@Freika
Copy link
Owner

Freika commented Nov 7, 2024

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

@Freika
Copy link
Owner

Freika commented Nov 7, 2024

It appears that the Sidekiq container needs to have a /var/app/tmp/imports folder.

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

@Freika
Copy link
Owner

Freika commented Nov 8, 2024

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!

@daggr8
Copy link
Author

daggr8 commented Nov 8, 2024

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

  [],
  [],
  [],

@Freika
Copy link
Owner

Freika commented Nov 8, 2024

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?

@Freika
Copy link
Owner

Freika commented Nov 8, 2024

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 :)

@daggr8
Copy link
Author

daggr8 commented Nov 8, 2024

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 :)

@Freika
Copy link
Owner

Freika commented Nov 8, 2024

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

@tbelway
Copy link

tbelway commented Nov 8, 2024

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.

@daggr8
Copy link
Author

daggr8 commented Nov 8, 2024

Using baseurl/api/timeline returns
[]%

Using baseurl/timeline returns a page
<!doctype html>

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.

@Freika
Copy link
Owner

Freika commented Nov 8, 2024

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 :(

@tbelway
Copy link

tbelway commented Nov 11, 2024

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:
immich-app/immich#14084

@jrasm91
Copy link

jrasm91 commented Nov 14, 2024

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

@Freika
Copy link
Owner

Freika commented Nov 18, 2024

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

@daggr8
Copy link
Author

daggr8 commented Nov 21, 2024

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.

@tbelway
Copy link

tbelway commented Nov 22, 2024

this seems to be working! Thank you :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants