Error suggesting visits, since 22 June

Hi there

Ever since 22 June (Melbourne Australia time), I’m getting “Error suggesting visits” errors in the log. For several weeks before that, I wasn’t getting alternate suggestions (reported here → Visits: how to get alternative suggestions?). That hasn’t resolved itself with 1.8.0, the old visits are still not giving alternatives. But now, as the subject suggests, I’m getting errors - text is below.

Thanks!

Error suggesting visits: missing attribute 'visit_id' for Point /app/vendor/bundle/ruby/3.4.0/gems/activemodel-8.1.3/lib/active_model/attribute.rb:259:in 'ActiveModel::Attribute::Uninitialized#value' /app/vendor/bundle/ruby/3.4.0/gems/activemodel-8.1.3/lib/active_model/attribute_set/builder.rb:55:in 'block in ActiveModel::LazyAttributeSet#fetch_value' /app/vendor/bundle/ruby/3.4.0/gems/activemodel-8.1.3/lib/active_model/attribute_set/builder.rb:46:in 'Hash#fetch' /app/vendor/bundle/ruby/3.4.0/gems/activemodel-8.1.3/lib/active_model/attribute_set/builder.rb:46:in 'ActiveModel::LazyAttributeSet#fetch_value' /app/vendor/bundle/ruby/3.4.0/gems/activerecord-8.1.3/lib/active_record/attribute_methods/read.rb:39:in 'ActiveRecord::AttributeMethods::Read#_read_attribute' /app/vendor/bundle/ruby/3.4.0/gems/activemodel-8.1.3/lib/active_model/attribute_methods.rb:273:in 'Point::GeneratedAttributeMethods#visit_id' /app/app/services/visits/creator.rb:107:in 'Array#each' /app/app/services/visits/creator.rb:107:in 'Enumerable#filter_map' /app/app/services/visits/creator.rb:107:in 'Visits::Creator#confirmed_visit_owning_points' /app/app/services/visits/creator.rb:75:in 'Visits::Creator#find_existing_visit' /app/app/services/visits/creator.rb:15:in 'block in Visits::Creator#create_visits' /app/app/services/visits/creator.rb:14:in 'Array#map' /app/app/services/visits/creator.rb:14:in 'Visits::Creator#create_visits' /app/app/services/visits/smart_detect.rb:73:in 'block in Visits::SmartDetect#run' /app/app/services/visits/smart_detect.rb:60:in 'Array#each' /app/app/services/visits/smart_detect.rb:60:in 'Visits::SmartDetect#run' /app/app/services/visits/smart_detect.rb:22:in 'block in Visits::SmartDetect#call' /app/app/services/visits/smart_detect.rb:49:in 'Visits::SmartDetect#with_user_lock' /app/app/services/visits/smart_detect.rb:22:in 'Visits::SmartDetect#call' /app/app/services/visits/suggest.rb:13:in 'Visits::Suggest#call' /app/app/jobs/visit_suggesting_job.rb:23:in 'block in VisitSuggestingJob#perform' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/core_ext/time/zones.rb:65:in 'Time.use_zone' /app/app/jobs/concerns/user_timezone.rb:10:in 'UserTimezone#with_user_timezone' /app/app/jobs/visit_suggesting_job.rb:15:in 'VisitSuggestingJob#perform' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution.rb:68:in 'block in ActiveJob::Execution#_perform_job' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:101:in 'ActiveSupport::Callbacks#run_callbacks' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution.rb:67:in 'ActiveJob::Execution#_perform_job' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:44:in 'ActiveJob::Instrumentation#_perform_job' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution.rb:51:in 'ActiveJob::Execution#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:26:in 'block in ActiveJob::Instrumentation#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/activerecord-8.1.3/lib/active_record/railties/job_runtime.rb:12:in 'block in ActiveRecord::Railties::JobRuntime#instrument' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:34:in 'block in ActiveJob::Instrumentation#instrument' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument' /app/vendor/bundle/ruby/3.4.0/gems/sentry-rails-6.6.2/lib/sentry/rails/tracing.rb:56:in 'Sentry::Rails::Tracing::SentryNotificationExtension#instrument' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:33:in 'ActiveJob::Instrumentation#instrument' /app/vendor/bundle/ruby/3.4.0/gems/activerecord-8.1.3/lib/active_record/railties/job_runtime.rb:10:in 'ActiveRecord::Railties::JobRuntime#instrument' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:26:in 'ActiveJob::Instrumentation#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/logging.rb:32:in 'block in ActiveJob::Logging#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/logging.rb:41:in 'ActiveJob::Logging#tag_logger' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/logging.rb:32:in 'ActiveJob::Logging#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:7:in 'block (2 levels) in ActiveJob::ExecutionState#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/core_ext/time/zones.rb:65:in 'Time.use_zone' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:7:in 'block in ActiveJob::ExecutionState#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/i18n-1.14.8/lib/i18n.rb:354:in 'I18n::Base#with_locale' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:6:in 'ActiveJob::ExecutionState#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/sentry-rails-6.6.2/lib/sentry/rails/active_job.rb:13:in 'block in Sentry::Rails::ActiveJobExtensions#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/sentry-rails-6.6.2/lib/sentry/rails/active_job.rb:45:in 'block in Sentry::Rails::ActiveJobExtensions::SentryReporter.record' /app/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-6.6.2/lib/sentry/hub.rb:95:in 'Sentry::Hub#with_scope' /app/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-6.6.2/lib/sentry-ruby.rb:400:in 'Sentry.with_scope' /app/vendor/bundle/ruby/3.4.0/gems/sentry-rails-6.6.2/lib/sentry/rails/active_job.rb:32:in 'Sentry::Rails::ActiveJobExtensions::SentryReporter.record' /app/vendor/bundle/ruby/3.4.0/gems/sentry-rails-6.6.2/lib/sentry/rails/active_job.rb:12:in 'Sentry::Rails::ActiveJobExtensions#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/posthog-rails-3.11.0/lib/posthog/rails/active_job.rb:40:in 'PostHog::Rails::ActiveJobExtensions#perform_now' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution.rb:29:in 'block in ActiveJob::Execution::ClassMethods#execute' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/railtie.rb:86:in 'block (4 levels) in ' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/execution_wrapper.rb:87:in 'ActiveSupport::ExecutionWrapper.wrap' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/railtie.rb:85:in 'block (3 levels) in ' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks' /app/vendor/bundle/ruby/3.4.0/gems/activejob-8.1.3/lib/active_job/execution.rb:27:in 'ActiveJob::Execution::ClassMethods#execute' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/active_job/queue_adapters/sidekiq_adapter.rb:14:in 'Sidekiq::ActiveJob::Wrapper#perform' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:227:in 'Sidekiq::Processor#execute_job' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:192:in 'block (4 levels) in Sidekiq::Processor#process' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:180:in 'Sidekiq::Middleware::Chain#traverse' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' /app/vendor/bundle/ruby/3.4.0/gems/yabeda-sidekiq-0.12.0/lib/yabeda/sidekiq/server_middleware.rb:20:in 'block in Yabeda::Sidekiq::ServerMiddleware#call' /app/vendor/bundle/ruby/3.4.0/gems/yabeda-0.16.0/lib/yabeda/dsl/class_methods.rb:84:in 'Yabeda::DSL::ClassMethods#with_tags' /app/vendor/bundle/ruby/3.4.0/gems/yabeda-sidekiq-0.12.0/lib/yabeda/sidekiq/server_middleware.rb:19:in 'Yabeda::Sidekiq::ServerMiddleware#call' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/job/interrupt_handler.rb:9:in 'Sidekiq::Job::InterruptHandler#call' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/metrics/tracking.rb:26:in 'Sidekiq::Metrics::ExecutionTracker#track' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/metrics/tracking.rb:136:in 'Sidekiq::Metrics::Middleware#call' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/middleware/chain.rb:173:in 'Sidekiq::Middleware::Chain#invoke' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:191:in 'block (3 levels) in Sidekiq::Processor#process' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:151:in 'block (7 levels) in Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/job_retry.rb:118:in 'Sidekiq::JobRetry#local' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:150:in 'block (6 levels) in Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/rails.rb:19:in 'block in Sidekiq::Rails::Reloader#call' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/execution_wrapper.rb:91:in 'ActiveSupport::ExecutionWrapper.wrap' /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/rails.rb:18:in 'Sidekiq::Rails::Reloader#call' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:145:in 'block (5 levels) in Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:123:in 'Sidekiq::Processor#profile' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:140:in 'block (4 levels) in Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:288:in 'Sidekiq::Processor#stats' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:139:in 'block (3 levels) in Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/job_logger.rb:15:in 'Sidekiq::JobLogger#call' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:138:in 'block (2 levels) in Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/job_retry.rb:85:in 'Sidekiq::JobRetry#global' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:137:in 'block in Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/job_logger.rb:42:in 'Sidekiq::JobLogger#prepare' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:136:in 'Sidekiq::Processor#dispatch' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:190:in 'block (2 levels) in Sidekiq::Processor#process' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:189:in 'Thread.handle_interrupt' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:189:in 'block in Sidekiq::Processor#process' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:188:in 'Thread.handle_interrupt' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:188:in 'Sidekiq::Processor#process' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:87:in 'Sidekiq::Processor#process_one' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/processor.rb:77:in 'Sidekiq::Processor#run' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/component.rb:38:in 'Sidekiq::Component#watchdog' /app/vendor/bundle/ruby/3.4.0/gems/sidekiq-8.1.6/lib/sidekiq/component.rb:47:in 'block in Sidekiq::Component#safe_thread'

This is a known bug that is fixed with 1.9.2.

1 Like