pulibrary / bibdata

Local API for retrieving bibliographic and other useful data from Alma (Ruby 3.2.0, Rails 7.1.3.4)
BSD 2-Clause "Simplified" License
16 stars 7 forks source link

Sidekiq is trying to index a dump file with event id nil #2434

Closed christinach closed 1 month ago

christinach commented 1 month ago

Expected behavior

Sidekiq should not start a job for a duplicate dump

Actual behavior

Sidekiq starts a job for a dump that has an event_id: nil

Impact of this bug

The number of errors in honeybadger will keep increasing

Honeybadger link and code snippet, if applicable

https://app.honeybadger.io/projects/54497/faults/109861273

/app/jobs/alma_dump_transfer_job.rb:26:in `find_dump_file_type'

NoMethodError: undefined method `downcase' for nil:NilClass
job_config["dump_file_type"].downcase.to_sym

Sidekiq retries error

From sidekiq:

Retries
Filter 
Any job content
    Next Retry  Retry Count Queue   Job Arguments   Error
    in 1 hour   8   default AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8625", "job_id"=>"38959318770006421"}
NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
    in 1 hour   9   default AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8622", "job_id"=>"38958987700006421"}
NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
    in 1 hour   11  default AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8616", "job_id"=>"38957711820006421"}
NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
    in 2 hours  10  default AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8620", "job_id"=>"38958671080006421"}
NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
    in 3 hours  12  default AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8612", "job_id"=>"38957282280006421"}
NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
    in 3 hours  11  default AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8618", "job_id"=>"38958156250006421"}
NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
    in 5 hours  12  default AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8614", "job_id"=>"38957607790006421"}

in 6 minutes | 5 | default | AlmaDumpTransferJob | {"dump"=>"gid://marc-liberation/Dump/8629", "job_id"=>"38960252730006421"} | NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
-- | -- | -- | -- | -- | --
  | in 11 minutes | 8 | default | AlmaDumpTransferJob | {"dump"=>"gid://marc-liberation/Dump/8627", "job_id"=>"38959419350006421"}

[in 6 minutes](https://bibdata.princeton.edu/sidekiq/retries/1722439563.4473438-57542cf752120c0dc90d89d7)   5   [default](https://bibdata.princeton.edu/sidekiq/queues/default) AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8629", "job_id"=>"38960252730006421"}
NoMethodError: undefined method `downcase' for nil:NilClass job_config["dump_file_type"].downcase.to_sym ^^^^^^^^^
    [in 11 minutes](https://bibdata.princeton.edu/sidekiq/retries/1722439866.5287309-36aaf3d4687232c78732d474)  8   [default](https://bibdata.princeton.edu/sidekiq/queues/default) AlmaDumpTransferJob 
{"dump"=>"gid://marc-liberation/Dump/8627", "job_id"=>"38959419350006421"}

n 17 minutes | 7 | default | AlmaDumpTransferJob | {"dump"=>"gid://marc-liberation/Dump/8631", "job_id"=>"38962122050006421"}

Implementation notes, if any

From the rails console in production for Dump.find(8631)

#<Dump:0x00007f1a658b5020
 id: 8631,
 event_id: nil,
 delete_ids: nil,
 created_at: Wed, 31 Jul 2024 17:05:56.190273000 UTC +00:00,
 updated_at: Wed, 31 Jul 2024 17:05:56.190273000 UTC +00:00,
 update_ids: nil,
 create_ids: nil,
 index_status: nil,
 generated_date: Wed, 31 Jul 2024 16:00:45.671000000 UTC +00:00,
 dump_type: "changed_records",
 recap_barcodes: nil>

Dump objects with an event_id: nil. These 10 objects were created on July 30th and July 31st.

irb(main):004> Dump.where(event_id: nil).count
=> 10

This error started after https://github.com/pulibrary/bibdata/commit/72b0536e29098356a80f5d25d5b47d71005a4fc4

christinach commented 1 month ago

Before deploying to production we deleted all the Dump.where(event_id: nil)