Skip to content

Sentry errors out with - undefined method `[]' for nil:NilClass #932

@kapso

Description

@kapso

Environment -

  • gem 'sentry-raven', '2.12.0'
  • ruby '2.6.5'
  • gem 'rails', '6.0.0'
  • Heroku App

Sentry Config -

Raven.configure do |config|
  config.dsn = "xxxx"
  config.environments = %w[staging production]
  config.excluded_exceptions += [SignalException.name]
  config.async = ->(event) { SentryWorker.perform_async(event) }
  config.should_capture = ->(e) do
    return false if e.is_a?(ActiveRecord::StatementInvalid) && e.message =~ /PG::InFailedSqlTransaction/i
    true
  end
end

Error Message - "undefined method `[]' for nil:NilClass"

Error Stack -

/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb:83:in `get_message_from_exception'
/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb:89:in `get_log_message'
/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb:115:in `failed_send'
/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb:34:in `send_event'
/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/instance.rb:81:in `send_event'
/app/vendor/ruby-2.6.5/lib/ruby/2.6.0/forwardable.rb:230:in `send_event'
/app/app/workers/sentry_worker.rb:7:in `perform'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:196:in `execute_job'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-unique-jobs-6.0.15/lib/sidekiq_unique_jobs/server/middleware.rb:29:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/integrations/sidekiq.rb:9:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb:143:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:163:in `block in process'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb:111:in `local'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb:43:in `block in call'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb:88:in `wrap'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb:72:in `block in wrap'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb:88:in `wrap'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb:71:in `wrap'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb:42:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:257:in `stats'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb:13:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb:78:in `global'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:124:in `block in dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/logger.rb:10:in `with'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb:33:in `prepare'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:123:in `dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:162:in `process'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:78:in `process_one'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb:68:in `run'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb:15:in `watchdog'
/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb:24:in `block in safe_thread'

Sidekiq Arguments -

{"environment"=>"staging", "event_id"=>"46bf38ce521c44a28135dd76619f6eb8", "extra"=>{"server"=>{"os"=>{"name"=>"Linux", "version"=>"#52-Ubuntu SMP Wed Jun 26 08:47:35 UTC 2019", "build"=>"4.4.0-1048-aws", "kernel_version"=>"Linux b199ccec-2d08-4d2e-9613-1d2ef6d103fb 4.4.0-1048-aws #52-Ubuntu SMP Wed Jun 26 08:47:35 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux"}, "runtime"=>{"name"=>"ruby", "version"=>"ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]"}}, "sidekiq"=>{"context"=>"Job raised exception", "job"=>{"class"=>"SentryWorker", "args"=>[{"environment"=>"staging", "event_id"=>"878a3a904a284de583643a6aca4d2a03", "extra"=>{"server"=>{"os"=>{"name"=>"Linux", "version"=>"#52-Ubuntu SMP Wed Jun 26 08:47:35 UTC 2019", "build"=>"4.4.0-1048-aws", "kernel_version"=>"Linux f46ec913-0282-4a5b-991c-c73183847da8 4.4.0-1048-aws #52-Ubuntu SMP Wed Jun 26 08:47:35 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux"}, "runtime"=>{"name"=>"ruby", "version"=>"ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]"}}, "sidekiq"=>{"context"=>"Job raised exception", "job"=>{"class"=>"PatentIngestWorker", "args"=>["seed", "4ad8d32f77", "<exchange-document country=\"AU\" doc-number=\"2003206825\" kind=\"B8\" doc-id=\"382940022\" date-publ=\"20080221\" family-id=\"27675599\" is-representative=\"NO\" date-of-last-exchange=\"20190131\" date-added-docdb=\"20080407\" originating-office=\"EP\">\n <bibliographic-data>\n <publication-reference data-format=\"docdb\">\n <document-id>\n <country>AU</country>\n <doc-number>2003206825</doc-number>\n <kind>B8</kind>\n <date>20080221</date>\n </document-id>\n </publication-reference>\n <publication-reference data-format=\"epodoc\">\n <document-id>\n <doc-number>AU2003206825B</doc-number>\n </document-id>\n </publication-reference>\n <classifications-ipcr>\n <classification-ipcr sequence=\"1\">\n <text>C07D 213/57 20060101AFI20060310BMJP </text>\n </classification-ipcr>\n <classification-ipcr sequence=\"2\">\n <text>A61K 8/00 20060101ALI20060310BMJP </text>\n </classification-ipcr>\n <classification-ipcr sequence=\"3\">\n <text>A61K 8/49 20060101ALI20051008BMEP </text>\n </classification-ipcr>\n <classification-ipcr sequence=\"4\">\n <text>A61Q 5/02 20060101ALI20060310BMJP </text>\n </classification-ipcr>\n <classification-ipcr sequence=\"5\">\n <text>A61Q 5/12 20060101ALI20060310BMJP </text>\n </classification-ipcr>\n <classification-ipcr sequence=\"6\">\n <text>A61Q 17/04 20060101ALI20051008BMEP </text>\n </classification-ipcr>\n <classification-ipcr sequence=\"7\">\n <text>C07D 309/34 20060101ALI20060310BMJP </text>\n </classification-ipcr>\n <classification-ipcr sequence=\"8\">\n <text>C09K 3/00 20060101ALI20060310BMJP </text>\n </classification-ipcr>\n </classifications-ipcr>\n <patent-classifications>\n <patent-classification sequence=\"1\">\n <classification-scheme office=\"EP\" scheme=\"CPC\">\n <date>20130101</date>\n </classification-scheme>\n <classification-symbol>A61Q 17/04 </classification-symbol>\n <symbol-position>F</symbol-position>\n <classification-value>I</classification-value>\n <classification-status>B</classification-status>\n <classification-data-source>H</classification-data-source>\n <action-date>\n <date>20130101</date>\n </action-date>\n </patent-classification>\n <patent-classification sequence=\"2\">\n <classification-scheme office=\"EP\" scheme=\"CPC\">\n <date>20130101</date>\n </classification-scheme>\n <classification-symbol>A61K 8/4926 </classification-symbol>\n <symbol-position>L</symbol-position>\n <classification-value>I</classification-value>\n <classification-status>B</classification-status>\n <classification-data-source>H</classification-data-source>\n <action-date>\n <date>20130101</date>\n </action-date>\n </patent-classification>\n <patent-classification sequence=\"3\">\n <classification-scheme office=\"EP\" scheme=\"CPC\">\n <date>20130101</date>\n </classification-scheme>\n <classification-symbol>A61K 8/498 </classification-symbol>\n <symbol-position>L</symbol-position>\n <classification-value>I</classification-value>\n <classification-status>B</classification-status>\n <classification-data-source>H</classification-data-source>\n <action-date>\n <date>20130101</date>\n </action-date>\n </patent-classification>\n </patent-classifications>\n <application-reference is-representative=\"NO\" doc-id=\"2578143\" data-format=\"docdb\">\n <document-id>\n <country>AU</country>\n <doc-number>2003206825</doc-number>\n <kind>A</kind>\n <date>20030204</date>\n </document-id>\n </application-reference>\n <application-reference data-format=\"epodoc\">\n <document-id>\n <doc-number>AU20030206825</doc-number>\n </document-id>\n </application-reference>\n <application-reference data-format=\"original\">\n <document-id>\n <doc-number>2003206825</doc-number>\n </document-id>\n </application-reference>\n <priority-claims>\n <priority-claim sequence=\"1\" data-format=\"docdb\">\n <document-id doc-id=\"267967684\">\n <country>EP</country>\n <doc-number>02002093</doc-number>\n <kind>A</kind>\n <date>20020212</date>\n </document-id>\n <priority-active-indicator>Y</priority-active-indicator>\n </priority-claim>\n <priority-claim sequence=\"1\" data-format=\"epodoc\">\n <document-id>\n <doc-number>EP20020002093</doc-number>\n </document-id>\n </priority-claim>\n <priority-claim sequence=\"2\" data-format=\"docdb\">\n <document-id doc-id=\"15634271\">\n <country>EP</country>\n <doc-number>0301049</doc-number>\n <kind>W</kind>\n <date>20030204</date>\n </document-id>\n <priority-linkage-type>W</priority-linkage-type>\n <priority-active-indicator>N</priority-active-indicator>\n </priority-claim>\n <priority-claim sequence=\"2\" data-format=\"epodoc\">\n <document-id>\n <doc-number>WO2003EP01049</doc-number>\n </document-id>\n </priority-claim>\n <priority-claim sequence=\"1\" data-format=\"original\">\n <document-id>\n <doc-number>02002093.9</doc-number>\n </document-id>\n </priority-claim>\n <priority-claim sequence=\"2\" data-format=\"original\">\n <document-id>\n <doc-number>WO03/068183</doc-number>\n </document-id>\n </priority-claim>\n </priority-claims>\n <parties>\n <applicants>\n <applicant sequence=\"1\" data-format=\"docdb\">\n <applicant-name>\n <name>DSM IP ASSETS BV</name>\n </applicant-name>\n </applicant>\n <applicant sequence=\"1\" data-format=\"docdba\">\n <applicant-name>\n <name>DSM IP ASSETS B.V.</name>\n </applicant-name>\n </applicant>\n </applicants>\n <inventors>\n <inventor sequence=\"1\" data-format=\"docdb\">\n <inventor-name>\n <name>BERG-SCHULTZ KATJA</name>\n </inventor-name>\n </inventor>\n <inventor sequence=\"1\" data-format=\"docdba\">\n <inventor-name>\n <name>KATJA BERG-SCHULTZ</name>\n </inventor-name>\n </inventor>\n </inventors>\n </parties>\n <invention-title lang=\"en\" data-format=\"docdba\">Sunscreen compositions as well as dihydropyridines and dihydropyranes</invention-title>\n <dates-of-public-availability>\n <printed-with-grant>\n <document-id>\n <date>20080221</date>\n </document-id>\n </printed-with-grant>\n </dates-of-public-availability>\n </bibliographic-data>\n</exchange-document>"], "retry"=>true, "queue"=>"patent_ingest", "backtrace"=>true, "jid"=>"22c9ec664bdb65eb811e8e19", "created_at"=>1570072201.99408, "enqueued_at"=>1571449722.707494, "error_message"=>"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"index_patents_on_publication_number\"\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\n", "error_class"=>"ActiveRecord::RecordNotUnique", "failed_at"=>1570731698.815898, "retry_count"=>6, "error_backtrace"=>"eJzVWtty4ygQ/ZVsXiZbtYksydf5laktFknEZiKBAshe79dvc7GClHF8kXAy\nD66yQXBON4emG/nHfYTrOtoSVnARZQ0rShKJJttHydP8aRKtSSUjnCu6JYLk\nXBSP0ArtJc1cM7LtUc4ZI9DCGcIFrhURMqq5VGtB5Gt5aHsS2ff5fPmdsrt/\nsNyzHJF/SY5qLHAlv93/9Yl0spLnL3cPyV1JtqSUf95BoyHHOMpxviEX0ZNN\nXXOh3vNzHVFBapiGsJwSGVEGZDS+JjT1+cC3moiKKgQW5Y0QhClUclxc5q2T\ndNrZ830kN1gQdKATLxeGz56SskCmb2TsD1xhocfwwIh6WXTX53qRXMEJZ1IJ\neMxntJgsjiq45Os+Jc3lUXOZGUyPWsUZVdzMmaQzMyc0Ib1PNwL6/vsk8+Zd\nh//CpmECZFzRZ5pjzUUrEDg0FWEOP5ka+Lfmz3DCfGXX+FLbR5S9XYWbqv0I\nlemqpdIogjArUF4SLG5HJyqwwhmWoCGFFdGqkJraynPSa0PE/lZaOUYodvvY\nMAIJExFcvqe9FKeTW5M66ad5ctjlt2RjNGL3kgk1oUjACSqpVHDGGpx0YVXh\nnO+eCgi4SlMLmAsCbg8AmPNGB+w3X8bz0JD6PKJsHfFa0QqMpbk9rgLDYqUE\nzXTgq4ja8EJGBRVqb/QTx6HdjMsyw/mL2TRpmnRP5gG4pzNUH/kQ1kTDUNsR\nEG+Z2OMXGUBr5HW41/g33HKCcAkEwqo2Tg2unn5UcJmdw+MCNTXE53HTio5D\nk15tNQj5N5KsxNubCNb5N+SCdiWbrIID9kQ7m9hzRbv0jzFxtrikha1BDE4g\nGEg8mMR5i5PGq+6eCI/oso8WcUfVBnlPwUDVCAZnq8nSmuCV/qnsMHGMPY4h\nHZTEyS3hUlfa3XQZjslwdPXp4AjViLT3Gu5yrYuiP+beyfGBH2uIMVENGgAF\nRDa6mNIz9cON7b9mnriXOLlS9vhMRpRei8k0u3MEUst1++ULcPMwDafl5H3U\noQwxskMf0PsdbsvembpYthv6tIWfJY4vEEwv2GZnDT++32P/xuoic306j+nT\n4in2jfY6zR0+EUADMj6Gs9Ig91UPfSGT3Ek8MMkdaK7T1qVWDkRdLQ+olx1d\nA2Fjd6vSwdWfiheklG+DrCCR++1kephlNmmXjLKf0HH9VPHc3V+t+9PsuHgx\nl4N2uH0C2VZzsL575/XMRfXLKcwefRsZW/o7gWv00bBjyLPDK6bOyI9XT9KC\nvNBXsykSs2SuJaoFz9tkI/aug/V9zU+ejQwwnx598+MeHAxY0QIG7LAgUb7B\nlFnh9epoyrb85dy4dsBqGH1tyCN4RRrceOYDI9utnQZDiIDA73Exkd3VfhBn\nwlg5nQyxEtQm9o8CMk0GCUScuPBpGsyxsRbujZMjYSLJlzbpQqzURYNRIHrC\nT3sBYyS1d1FSPyw9zP3tVVAJESXfDEYEfetCS+z9KzgAxMMV0DPGr7ofZkGM\nEZiWJhGY9tbnAkWfmXfYoKozTx36axvMl8v2MBgXTRD9lwP3QrpXvI2P9om2\nxZeCnCOGZLyo1tN07Gt6GkTTHcRkZhNMXdKMHW2STrRJg0Wbkq/XLndKQy1M\nMjuamISJnK7kXZc8Gz1yJtPuhh/NAm8lJm3FPvIauxqhFqSG43lsz9jJw+y1\nwzv5IGe704trQ5yN7Jp5WxIOnhdOgtL4w+6pnfZ0cfb/gE7P25e3xM8EqY0g\nuPh2//f/50PJzg==\n", "retried_at"=>1571437462.206649}, "jobstr"=>"{\"class\":\"PatentIngestWorker\",\"args\":[\"seed\",\"4ad8d32f77\",\"<exchange-document country=\\\"AU\\\" doc-number=\\\"2003206825\\\" kind=\\\"B8\\\" doc-id=\\\"382940022\\\" date-publ=\\\"20080221\\\" family-id=\\\"27675599\\\" is-representative=\\\"NO\\\" date-of-last-exchange=\\\"20190131\\\" date-added-docdb=\\\"20080407\\\" originating-office=\\\"EP\\\">\\n <bibliographic-data>\\n <publication-reference data-format=\\\"docdb\\\">\\n <document-id>\\n <country>AU</country>\\n <doc-number>2003206825</doc-number>\\n <kind>B8</kind>\\n <date>20080221</date>\\n </document-id>\\n </publication-reference>\\n <publication-reference data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>AU2003206825B</doc-number>\\n </document-id>\\n </publication-reference>\\n <classifications-ipcr>\\n <classification-ipcr sequence=\\\"1\\\">\\n <text>C07D 213/57 20060101AFI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"2\\\">\\n <text>A61K 8/00 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"3\\\">\\n <text>A61K 8/49 20060101ALI20051008BMEP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"4\\\">\\n <text>A61Q 5/02 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"5\\\">\\n <text>A61Q 5/12 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"6\\\">\\n <text>A61Q 17/04 20060101ALI20051008BMEP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"7\\\">\\n <text>C07D 309/34 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"8\\\">\\n <text>C09K 3/00 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n </classifications-ipcr>\\n <patent-classifications>\\n <patent-classification sequence=\\\"1\\\">\\n <classification-scheme office=\\\"EP\\\" scheme=\\\"CPC\\\">\\n <date>20130101</date>\\n </classification-scheme>\\n <classification-symbol>A61Q 17/04 </classification-symbol>\\n <symbol-position>F</symbol-position>\\n <classification-value>I</classification-value>\\n <classification-status>B</classification-status>\\n <classification-data-source>H</classification-data-source>\\n <action-date>\\n <date>20130101</date>\\n </action-date>\\n </patent-classification>\\n <patent-classification sequence=\\\"2\\\">\\n <classification-scheme office=\\\"EP\\\" scheme=\\\"CPC\\\">\\n <date>20130101</date>\\n </classification-scheme>\\n <classification-symbol>A61K 8/4926 </classification-symbol>\\n <symbol-position>L</symbol-position>\\n <classification-value>I</classification-value>\\n <classification-status>B</classification-status>\\n <classification-data-source>H</classification-data-source>\\n <action-date>\\n <date>20130101</date>\\n </action-date>\\n </patent-classification>\\n <patent-classification sequence=\\\"3\\\">\\n <classification-scheme office=\\\"EP\\\" scheme=\\\"CPC\\\">\\n <date>20130101</date>\\n </classification-scheme>\\n <classification-symbol>A61K 8/498 </classification-symbol>\\n <symbol-position>L</symbol-position>\\n <classification-value>I</classification-value>\\n <classification-status>B</classification-status>\\n <classification-data-source>H</classification-data-source>\\n <action-date>\\n <date>20130101</date>\\n </action-date>\\n </patent-classification>\\n </patent-classifications>\\n <application-reference is-representative=\\\"NO\\\" doc-id=\\\"2578143\\\" data-format=\\\"docdb\\\">\\n <document-id>\\n <country>AU</country>\\n <doc-number>2003206825</doc-number>\\n <kind>A</kind>\\n <date>20030204</date>\\n </document-id>\\n </application-reference>\\n <application-reference data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>AU20030206825</doc-number>\\n </document-id>\\n </application-reference>\\n <application-reference data-format=\\\"original\\\">\\n <document-id>\\n <doc-number>2003206825</doc-number>\\n </document-id>\\n </application-reference>\\n <priority-claims>\\n <priority-claim sequence=\\\"1\\\" data-format=\\\"docdb\\\">\\n <document-id doc-id=\\\"267967684\\\">\\n <country>EP</country>\\n <doc-number>02002093</doc-number>\\n <kind>A</kind>\\n <date>20020212</date>\\n </document-id>\\n <priority-active-indicator>Y</priority-active-indicator>\\n </priority-claim>\\n <priority-claim sequence=\\\"1\\\" data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>EP20020002093</doc-number>\\n </document-id>\\n </priority-claim>\\n <priority-claim sequence=\\\"2\\\" data-format=\\\"docdb\\\">\\n <document-id doc-id=\\\"15634271\\\">\\n <country>EP</country>\\n <doc-number>0301049</doc-number>\\n <kind>W</kind>\\n <date>20030204</date>\\n </document-id>\\n <priority-linkage-type>W</priority-linkage-type>\\n <priority-active-indicator>N</priority-active-indicator>\\n </priority-claim>\\n <priority-claim sequence=\\\"2\\\" data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>WO2003EP01049</doc-number>\\n </document-id>\\n </priority-claim>\\n <priority-claim sequence=\\\"1\\\" data-format=\\\"original\\\">\\n <document-id>\\n <doc-number>02002093.9</doc-number>\\n </document-id>\\n </priority-claim>\\n <priority-claim sequence=\\\"2\\\" data-format=\\\"original\\\">\\n <document-id>\\n <doc-number>WO03/068183</doc-number>\\n </document-id>\\n </priority-claim>\\n </priority-claims>\\n <parties>\\n <applicants>\\n <applicant sequence=\\\"1\\\" data-format=\\\"docdb\\\">\\n <applicant-name>\\n <name>DSM IP ASSETS BV</name>\\n </applicant-name>\\n </applicant>\\n <applicant sequence=\\\"1\\\" data-format=\\\"docdba\\\">\\n <applicant-name>\\n <name>DSM IP ASSETS B.V.</name>\\n </applicant-name>\\n </applicant>\\n </applicants>\\n <inventors>\\n <inventor sequence=\\\"1\\\" data-format=\\\"docdb\\\">\\n <inventor-name>\\n <name>BERG-SCHULTZ KATJA</name>\\n </inventor-name>\\n </inventor>\\n <inventor sequence=\\\"1\\\" data-format=\\\"docdba\\\">\\n <inventor-name>\\n <name>KATJA BERG-SCHULTZ</name>\\n </inventor-name>\\n </inventor>\\n </inventors>\\n </parties>\\n <invention-title lang=\\\"en\\\" data-format=\\\"docdba\\\">Sunscreen compositions as well as dihydropyridines and dihydropyranes</invention-title>\\n <dates-of-public-availability>\\n <printed-with-grant>\\n <document-id>\\n <date>20080221</date>\\n </document-id>\\n </printed-with-grant>\\n </dates-of-public-availability>\\n </bibliographic-data>\\n</exchange-document>\"],\"retry\":true,\"queue\":\"patent_ingest\",\"backtrace\":true,\"jid\":\"22c9ec664bdb65eb811e8e19\",\"created_at\":1570072201.99408,\"enqueued_at\":1571449722.707494,\"error_message\":\"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \\\"index_patents_on_publication_number\\\"\\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\\n\",\"error_class\":\"ActiveRecord::RecordNotUnique\",\"failed_at\":1570731698.815898,\"retry_count\":6,\"error_backtrace\":\"eJzVWtty4ygQ/ZVsXiZbtYksydf5laktFknEZiKBAshe79dvc7GClHF8kXAy\\nD66yQXBON4emG/nHfYTrOtoSVnARZQ0rShKJJttHydP8aRKtSSUjnCu6JYLk\\nXBSP0ArtJc1cM7LtUc4ZI9DCGcIFrhURMqq5VGtB5Gt5aHsS2ff5fPmdsrt/\\nsNyzHJF/SY5qLHAlv93/9Yl0spLnL3cPyV1JtqSUf95BoyHHOMpxviEX0ZNN\\nXXOh3vNzHVFBapiGsJwSGVEGZDS+JjT1+cC3moiKKgQW5Y0QhClUclxc5q2T\\ndNrZ830kN1gQdKATLxeGz56SskCmb2TsD1xhocfwwIh6WXTX53qRXMEJZ1IJ\\neMxntJgsjiq45Os+Jc3lUXOZGUyPWsUZVdzMmaQzMyc0Ib1PNwL6/vsk8+Zd\\nh//CpmECZFzRZ5pjzUUrEDg0FWEOP5ka+Lfmz3DCfGXX+FLbR5S9XYWbqv0I\\nlemqpdIogjArUF4SLG5HJyqwwhmWoCGFFdGqkJraynPSa0PE/lZaOUYodvvY\\nMAIJExFcvqe9FKeTW5M66ad5ctjlt2RjNGL3kgk1oUjACSqpVHDGGpx0YVXh\\nnO+eCgi4SlMLmAsCbg8AmPNGB+w3X8bz0JD6PKJsHfFa0QqMpbk9rgLDYqUE\\nzXTgq4ja8EJGBRVqb/QTx6HdjMsyw/mL2TRpmnRP5gG4pzNUH/kQ1kTDUNsR\\nEG+Z2OMXGUBr5HW41/g33HKCcAkEwqo2Tg2unn5UcJmdw+MCNTXE53HTio5D\\nk15tNQj5N5KsxNubCNb5N+SCdiWbrIID9kQ7m9hzRbv0jzFxtrikha1BDE4g\\nGEg8mMR5i5PGq+6eCI/oso8WcUfVBnlPwUDVCAZnq8nSmuCV/qnsMHGMPY4h\\nHZTEyS3hUlfa3XQZjslwdPXp4AjViLT3Gu5yrYuiP+beyfGBH2uIMVENGgAF\\nRDa6mNIz9cON7b9mnriXOLlS9vhMRpRei8k0u3MEUst1++ULcPMwDafl5H3U\\noQwxskMf0PsdbsvembpYthv6tIWfJY4vEEwv2GZnDT++32P/xuoic306j+nT\\n4in2jfY6zR0+EUADMj6Gs9Ig91UPfSGT3Ek8MMkdaK7T1qVWDkRdLQ+olx1d\\nA2Fjd6vSwdWfiheklG+DrCCR++1kephlNmmXjLKf0HH9VPHc3V+t+9PsuHgx\\nl4N2uH0C2VZzsL575/XMRfXLKcwefRsZW/o7gWv00bBjyLPDK6bOyI9XT9KC\\nvNBXsykSs2SuJaoFz9tkI/aug/V9zU+ejQwwnx598+MeHAxY0QIG7LAgUb7B\\nlFnh9epoyrb85dy4dsBqGH1tyCN4RRrceOYDI9utnQZDiIDA73Exkd3VfhBn\\nwlg5nQyxEtQm9o8CMk0GCUScuPBpGsyxsRbujZMjYSLJlzbpQqzURYNRIHrC\\nT3sBYyS1d1FSPyw9zP3tVVAJESXfDEYEfetCS+z9KzgAxMMV0DPGr7ofZkGM\\nEZiWJhGY9tbnAkWfmXfYoKozTx36axvMl8v2MBgXTRD9lwP3QrpXvI2P9om2\\nxZeCnCOGZLyo1tN07Gt6GkTTHcRkZhNMXdKMHW2STrRJg0Wbkq/XLndKQy1M\\nMjuamISJnK7kXZc8Gz1yJtPuhh/NAm8lJm3FPvIauxqhFqSG43lsz9jJw+y1\\nwzv5IGe704trQ5yN7Jp5WxIOnhdOgtL4w+6pnfZ0cfb/gE7P25e3xM8EqY0g\\nuPh2//f/50PJzg==\\n\",\"retried_at\":1571437462.206649}"}}, "level"=>"error", "logger"=>"ruby", "message"=>"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"index_patents_on_publication_number\"\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\n", "modules"=>{"rake"=>"12.3.3", "concurrent-ruby"=>"1.1.5", "i18n"=>"1.7.0", "minitest"=>"5.12.2", "thread_safe"=>"0.3.6", "tzinfo"=>"1.2.5", "zeitwerk"=>"2.2.0", "activesupport"=>"6.0.0", "builder"=>"3.2.3", "erubi"=>"1.9.0", "mini_portile2"=>"2.4.0", "nokogiri"=>"1.10.4", "rails-dom-testing"=>"2.0.3", "crass"=>"1.0.5", "loofah"=>"2.3.0", "rails-html-sanitizer"=>"1.3.0", "actionview"=>"6.0.0", "rack"=>"2.0.7", "rack-test"=>"1.1.0", "actionpack"=>"6.0.0", "nio4r"=>"2.5.2", "websocket-extensions"=>"0.1.4", "websocket-driver"=>"0.7.1", "actioncable"=>"6.0.0", "globalid"=>"0.4.2", "activejob"=>"6.0.0", "activemodel"=>"6.0.0", "activerecord"=>"6.0.0", "mimemagic"=>"0.3.3", "marcel"=>"0.3.3", "activestorage"=>"6.0.0", "mini_mime"=>"1.0.2", "mail"=>"2.7.1", "actionmailbox"=>"6.0.0", "actionmailer"=>"6.0.0", "actiontext"=>"6.0.0", "active_interaction"=>"3.7.1", "public_suffix"=>"4.0.1", "addressable"=>"2.7.0", "adroit-age"=>"2.0.0", "ancestry"=>"3.0.7", "attribute_normalizer"=>"1.2.0", "aws-eventstream"=>"1.0.3", "aws-partitions"=>"1.225.0", "aws-sigv4"=>"1.1.0", "jmespath"=>"1.4.0", "aws-sdk-core"=>"3.69.0", "aws-sdk-kms"=>"1.24.0", "aws-sdk-s3"=>"1.50.0", "bcrypt"=>"3.1.13", "bundler"=>"1.17.3", "method_source"=>"0.9.2", "thor"=>"0.20.3", "railties"=>"6.0.0", "sprockets"=>"4.0.0", "sprockets-rails"=>"3.2.1", "rails"=>"6.0.0", "boolean_timestamps"=>"1.0.2", "msgpack"=>"1.3.1", "bootsnap"=>"1.4.5", "chartkick"=>"3.2.1", "clockwork"=>"2.0.4", "deep_merge"=>"1.2.1", "dry-core"=>"0.4.9", "dry-configurable"=>"0.8.3", "dry-equalizer"=>"0.2.2", "dry-initializer"=>"3.0.1", "dry-logic"=>"1.0.3", "dry-container"=>"0.7.2", "dry-inflector"=>"0.2.0", "dry-types"=>"1.2.0", "dry-schema"=>"1.4.1", "config"=>"2.0.0", "connection_pool"=>"2.2.2", "i18n_data"=>"0.8.0", "sixarm_ruby_unaccent"=>"1.2.0", "unicode_utils"=>"1.4.0", "countries"=>"3.0.0", "default_value_for"=>"3.3.0", "descriptive-statistics"=>"2.2.0", "unf_ext"=>"0.0.7.6", "unf"=>"0.1.4", "domain_name"=>"0.5.20190701", "multi_json"=>"1.14.1", "elasticsearch-api"=>"7.3.0", "multipart-post"=>"2.1.1", "faraday"=>"0.17.0", "elasticsearch-transport"=>"7.3.0", "elasticsearch"=>"7.3.0", "email_prefixer"=>"1.2.0", "email_validator"=>"2.0.1", "enumerize"=>"2.3.1", "errbase"=>"0.1.1", "ffi"=>"1.11.1", "ethon"=>"0.12.0", "faker"=>"2.6.0", "fast_blank"=>"1.0.0", "fast_jsonapi"=>"1.5", "google-cloud-env"=>"1.2.1", "google-cloud-core"=>"1.3.2", "jwt"=>"2.2.1", "memoist"=>"0.16.0", "os"=>"1.0.1", "signet"=>"0.12.0", "googleauth"=>"0.9.0", "google-cloud-translate"=>"1.4.0", "groupdate"=>"4.1.2", "hashie"=>"3.6.0", "http-cookie"=>"1.0.3", "http-form_data"=>"2.1.1", "http_parser.rb"=>"0.6.0", "http"=>"4.1.1", "iso-639"=>"0.2.8", "iso_country_codes"=>"0.7.8", "libsqreen"=>"0.3.0.0.1", "request_store"=>"1.4.1", "lograge"=>"0.11.2", "mime-types-data"=>"3.2019.1009", "mime-types"=>"3.3", "net-http-digest_auth"=>"1.4.1", "net-http-persistent"=>"3.1.0", "ntlm-http"=>"0.1.1", "webrobots"=>"0.1.2", "mechanize"=>"2.7.6", "mobility"=>"0.8.8", "multi_xml"=>"0.6.0", "nokogiri-happymapper"=>"0.8.1", "oauth"=>"0.5.4", "oauth2"=>"1.4.2", "oj"=>"3.9.2", "pagy"=>"3.6.0", "pg"=>"1.1.4", "pg_query"=>"1.1.0", "pghero"=>"2.3.0", "puma"=>"4.2.1", "pundit"=>"2.1.0", "rack-protection"=>"2.0.7", "rack-proxy"=>"0.6.5", "rainbow"=>"3.0.0", "redis"=>"4.1.3", "retriable"=>"3.1.2", "roboto"=>"1.0.1", "rolify"=>"5.2.0", "rubyzip"=>"2.0.0", "safely_block"=>"0.2.2", "sassc"=>"2.2.1", "tilt"=>"2.0.10", "sassc-rails"=>"2.1.2", "sass-rails"=>"6.0.0", "searchjoy"=>"0.4.2", "searchkick"=>"4.1.0", "sentry-raven"=>"2.12.0", "sidekiq"=>"6.0.2", "sidekiq-bulk"=>"0.2.0", "sidekiq-oj"=>"0.2.0", "sidekiq-unique-jobs"=>"6.0.15", "sorcery"=>"0.14.0", "sq_mini_racer"=>"0.2.5.0.1.beta2", "sqreen"=>"1.18.0", "turbolinks-source"=>"5.2.0", "turbolinks"=>"5.2.1", "typhoeus"=>"1.3.1", "voight_kampff"=>"1.1.3", "webpacker"=>"4.0.7"}, "platform"=>"ruby", "release"=>"194f1effbc1f6c7e284325ef97b102b3f6d839b2", "sdk"=>{"name"=>"raven-ruby", "version"=>"2.12.0"}, "server_name"=>"worker_a.1", "tags"=>{}, "timestamp"=>"2019-10-19T01:48:44", "transaction"=>"Sidekiq/PatentIngestWorker", "user"=>{}, "exception"=>{"values"=>[{"type"=>"PG::UniqueViolation", "value"=>"ERROR: duplicate key value violates unique constraint \"index_patents_on_publication_number\"\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\n", "module"=>"PG", "stacktrace"=>{"frames"=>[{"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb", "function"=>"block in safe_thread", "lineno"=>24, "in_app"=>false, "pre_context"=>[" def safe_thread(name, &block)\n", " Thread.new do\n", " Thread.current.name = name\n"], "context_line"=>" watchdog(name, &block)\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/util.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb", "function"=>"watchdog", "lineno"=>15, "in_app"=>false, "pre_context"=>[" include ExceptionHandler\n", "\n", " def watchdog(last_words)\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Exception => ex\n", " handle_exception(ex, {context: last_words})\n", " raise ex\n"], "project_root"=>"/app", "filename"=>"sidekiq/util.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"run", "lineno"=>68, "in_app"=>false, "pre_context"=>[" private unless $TESTING\n", "\n", " def run\n"], "context_line"=>" process_one until @done\n", "post_context"=>[" @mgr.processor_stopped(self)\n", " rescue Sidekiq::Shutdown\n", " @mgr.processor_stopped(self)\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"process_one", "lineno"=>78, "in_app"=>false, "pre_context"=>["\n", " def process_one\n", " @job = fetch\n"], "context_line"=>" process(@job) if @job\n", "post_context"=>[" @job = nil\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"process", "lineno"=>162, "in_app"=>false, "pre_context"=>["\n", " ack = false\n", " begin\n"], "context_line"=>" dispatch(job_hash, queue, jobstr) do |worker|\n", "post_context"=>[" Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\n", " execute_job(worker, job_hash[\"args\"])\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"dispatch", "lineno"=>123, "in_app"=>false, "pre_context"=>[" # we pass original String of JSON to respected methods\n", " # to re-parse it there if we need access to the original, untouched job\n", "\n"], "context_line"=>" @job_logger.prepare(job_hash) do\n", "post_context"=>[" @retrier.global(jobstr, queue) do\n", " @job_logger.call(job_hash, queue) do\n", " stats(jobstr, queue) do\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb", "function"=>"prepare", "lineno"=>33, "in_app"=>false, "pre_context"=>[" Sidekiq::Context.with(job_hash_context(job_hash), &block)\n", " end\n", " else\n"], "context_line"=>" Sidekiq::Context.with(job_hash_context(job_hash), &block)\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_logger.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/logger.rb", "function"=>"with", "lineno"=>10, "in_app"=>false, "pre_context"=>[" module Context\n", " def self.with(hash)\n", " current.merge!(hash)\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " hash.each_key { |key| current.delete(key) }\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/logger.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block in dispatch", "lineno"=>124, "in_app"=>false, "pre_context"=>[" # to re-parse it there if we need access to the original, untouched job\n", "\n", " @job_logger.prepare(job_hash) do\n"], "context_line"=>" @retrier.global(jobstr, queue) do\n", "post_context"=>[" @job_logger.call(job_hash, queue) do\n", " stats(jobstr, queue) do\n", " # Rails 5 requires a Reloader to wrap code execution. In order to\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb", "function"=>"global", "lineno"=>78, "in_app"=>false, "pre_context"=>[" # We want to be able to retry as much as possible so we don't\n", " # require the worker to be instantiated.\n", " def global(jobstr, queue)\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Handled => ex\n", " raise ex\n", " rescue Sidekiq::Shutdown => ey\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_retry.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (2 levels) in dispatch", "lineno"=>125, "in_app"=>false, "pre_context"=>["\n", " @job_logger.prepare(job_hash) do\n", " @retrier.global(jobstr, queue) do\n"], "context_line"=>" @job_logger.call(job_hash, queue) do\n", "post_context"=>[" stats(jobstr, queue) do\n", " # Rails 5 requires a Reloader to wrap code execution. In order to\n", " # constantize the worker and instantiate an instance, we have to call\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb", "function"=>"call", "lineno"=>13, "in_app"=>false, "pre_context"=>[" start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)\n", " @logger.info(\"start\")\n", "\n"], "context_line"=>" yield\n", "post_context"=>["\n", " with_elapsed_time_context(start) do\n", " @logger.info(\"done\")\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_logger.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (3 levels) in dispatch", "lineno"=>126, "in_app"=>false, "pre_context"=>[" @job_logger.prepare(job_hash) do\n", " @retrier.global(jobstr, queue) do\n", " @job_logger.call(job_hash, queue) do\n"], "context_line"=>" stats(jobstr, queue) do\n", "post_context"=>[" # Rails 5 requires a Reloader to wrap code execution. In order to\n", " # constantize the worker and instantiate an instance, we have to call\n", " # the Reloader. It handles code loading, db connection management, etc.\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"stats", "lineno"=>257, "in_app"=>false, "pre_context"=>[" WORKER_STATE.set(tid, {queue: queue, payload: jobstr, run_at: Time.now.to_i})\n", "\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Exception\n", " FAILURE.incr\n", " raise\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (4 levels) in dispatch", "lineno"=>131, "in_app"=>false, "pre_context"=>[" # constantize the worker and instantiate an instance, we have to call\n", " # the Reloader. It handles code loading, db connection management, etc.\n", " # Effectively this block denotes a \"unit of work\" to Rails.\n"], "context_line"=>" @reloader.call do\n", "post_context"=>[" klass = constantize(job_hash[\"class\"])\n", " worker = klass.new\n", " worker.jid = job_hash[\"jid\"]\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb", "function"=>"call", "lineno"=>42, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def call\n"], "context_line"=>" @app.reloader.wrap do\n", "post_context"=>[" yield\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/rails.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb", "function"=>"wrap", "lineno"=>71, "in_app"=>false, "pre_context"=>["\n", " # Run the supplied block as a work unit, reloading code as needed\n", " def self.wrap\n"], "context_line"=>" executor.wrap do\n", "post_context"=>[" super\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"active_support/reloader.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb", "function"=>"wrap", "lineno"=>88, "in_app"=>false, "pre_context"=>["\n", " instance = run!\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " instance.complete!\n", " end\n"], "project_root"=>"/app", "filename"=>"active_support/execution_wrapper.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb", "function"=>"block in wrap", "lineno"=>72, "in_app"=>false, "pre_context"=>[" # Run the supplied block as a work unit, reloading code as needed\n", " def self.wrap\n", " executor.wrap do\n"], "context_line"=>" super\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"active_support/reloader.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb", "function"=>"wrap", "lineno"=>88, "in_app"=>false, "pre_context"=>["\n", " instance = run!\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " instance.complete!\n", " end\n"], "project_root"=>"/app", "filename"=>"active_support/execution_wrapper.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb", "function"=>"block in call", "lineno"=>43, "in_app"=>false, "pre_context"=>["\n", " def call\n", " @app.reloader.wrap do\n"], "context_line"=>" yield\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/rails.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (5 levels) in dispatch", "lineno"=>135, "in_app"=>false, "pre_context"=>[" klass = constantize(job_hash[\"class\"])\n", " worker = klass.new\n", " worker.jid = job_hash[\"jid\"]\n"], "context_line"=>" @retrier.local(worker, jobstr, queue) do\n", "post_context"=>[" yield worker\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb", "function"=>"local", "lineno"=>111, "in_app"=>false, "pre_context"=>[" # Skip exception is unwrapped within Sidekiq::Processor#process before\n", " # calling the handle_exception handlers.\n", " def local(worker, jobstr, queue)\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Handled => ex\n", " raise ex\n", " rescue Sidekiq::Shutdown => ey\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_retry.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (6 levels) in dispatch", "lineno"=>136, "in_app"=>false, "pre_context"=>[" worker = klass.new\n", " worker.jid = job_hash[\"jid\"]\n", " @retrier.local(worker, jobstr, queue) do\n"], "context_line"=>" yield worker\n", "post_context"=>[" end\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block in process", "lineno"=>163, "in_app"=>false, "pre_context"=>[" ack = false\n", " begin\n", " dispatch(job_hash, queue, jobstr) do |worker|\n"], "context_line"=>" Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\n", "post_context"=>[" execute_job(worker, job_hash[\"args\"])\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"invoke", "lineno"=>143, "in_app"=>false, "pre_context"=>[" chain.shift.call(*args, &traverse_chain)\n", " end\n", " end\n"], "context_line"=>" traverse_chain.call\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"block in invoke", "lineno"=>140, "in_app"=>false, "pre_context"=>[" if chain.empty?\n", " yield\n", " else\n"], "context_line"=>" chain.shift.call(*args, &traverse_chain)\n", "post_context"=>[" end\n", " end\n", " traverse_chain.call\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/integrations/sidekiq.rb", "function"=>"call", "lineno"=>9, "in_app"=>false, "pre_context"=>[" def call(_worker, job, queue)\n", " Raven.context.transaction.push \"Sidekiq/\#{job['class']}\"\n", " Raven.extra_context(:sidekiq => job.merge(\"queue\" => queue))\n"], "context_line"=>" yield\n", "post_context"=>[" Context.clear!\n", " BreadcrumbBuffer.clear!\n", " end\n"], "project_root"=>"/app", "filename"=>"raven/integrations/sidekiq.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"block in invoke", "lineno"=>140, "in_app"=>false, "pre_context"=>[" if chain.empty?\n", " yield\n", " else\n"], "context_line"=>" chain.shift.call(*args, &traverse_chain)\n", "post_context"=>[" end\n", " end\n", " traverse_chain.call\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-unique-jobs-6.0.15/lib/sidekiq_unique_jobs/server/middleware.rb", "function"=>"call", "lineno"=>29, "in_app"=>false, "pre_context"=>[" @worker_class = worker_class\n", " @item = item\n", " @queue = queue\n"], "context_line"=>" return yield if unique_disabled?\n", "post_context"=>["\n", " SidekiqUniqueJobs::Job.add_uniqueness(item)\n", " SidekiqUniqueJobs.with_context(logging_context(self.class, item)) do\n"], "project_root"=>"/app", "filename"=>"sidekiq_unique_jobs/server/middleware.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"block in invoke", "lineno"=>138, "in_app"=>false, "pre_context"=>[" chain = retrieve.dup\n", " traverse_chain = lambda do\n", " if chain.empty?\n"], "context_line"=>" yield\n", "post_context"=>[" else\n", " chain.shift.call(*args, &traverse_chain)\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (2 levels) in process", "lineno"=>164, "in_app"=>false, "pre_context"=>[" begin\n", " dispatch(job_hash, queue, jobstr) do |worker|\n", " Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\n"], "context_line"=>" execute_job(worker, job_hash[\"args\"])\n", "post_context"=>[" end\n", " end\n", " ack = true\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"execute_job", "lineno"=>196, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def execute_job(worker, cloned_args)\n"], "context_line"=>" worker.perform(*cloned_args)\n", "post_context"=>[" end\n", "\n", " # Ruby doesn't provide atomic counters out of the box so we'll\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/app/workers/patent_ingest_worker.rb", "function"=>"perform", "lineno"=>5, "in_app"=>true, "pre_context"=>[" sidekiq_options queue: :patent_ingest\n", "\n", " def perform(type, request_id, xml)\n"], "context_line"=>" wrap_perform do\n", "post_context"=>[" Patent.ingest(type, request_id, xml)\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"app/workers/patent_ingest_worker.rb"}, {"abs_path"=>"/app/app/workers/base_worker.rb", "function"=>"wrap_perform", "lineno"=>10, "in_app"=>true, "pre_context"=>["\n", " def wrap_perform(description = nil)\n", " logger.info \"[\#{self.class.name}] Executing worker! \#{description}\".squish\n"], "context_line"=>" yield\n", "post_context"=>[" end\n", "end\n", nil], "project_root"=>"/app", "filename"=>"app/workers/base_worker.rb"}, {"abs_path"=>"/app/app/workers/patent_ingest_worker.rb", "function"=>"block in perform", "lineno"=>6, "in_app"=>true, "pre_context"=>["\n", " def perform(type, request_id, xml)\n", " wrap_perform do\n"], "context_line"=>" Patent.ingest(type, request_id, xml)\n", "post_context"=>[" end\n", " end\n", "end\n"], "project_root"=>"/app", "filename"=>"app/workers/patent_ingest_worker.rb"}, {"abs_path"=>"/app/app/models/concerns/patent_concern/ingestable.rb", "function"=>"ingest", "lineno"=>16, "in_app"=>true, "pre_context"=>[" return\n", " end\n", "\n"], "context_line"=>" run_injest(type, request_id, epo_patent)\n", "post_context"=>[" end\n", "\n", " def parse_epo_xml(xml)\n"], "project_root"=>"/app", "filename"=>"app/models/concerns/patent_concern/ingestable.rb"}, {"abs_path"=>"/app/app/models/concerns/patent_concern/ingestable.rb", "function"=>"run_injest", "lineno"=>50, "in_app"=>true, "pre_context"=>[" if patent\n", " Ingest::Patents::Update.run!(request.merge(patent: patent))\n", " elsif epo_patent.create?\n"], "context_line"=>" Ingest::Patents::Create.run!(request)\n", "post_context"=>[" elsif epo_patent.delete? && patent\n", " Ingest::Patents::Delete.run!(request.merge(patent: patent))\n", " elsif epo_patent.amend? && patent.blank?\n"], "project_root"=>"/app", "filename"=>"app/models/concerns/patent_concern/ingestable.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb", "function"=>"run!", "lineno"=>133, "in_app"=>false, "pre_context"=>[" #\n", " # @raise (see Runnable#run!)\n", " def run!(*args)\n"], "context_line"=>" new(*args).send(:run!)\n", "post_context"=>[" end\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"active_interaction/concerns/runnable.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb", "function"=>"run!", "lineno"=>98, "in_app"=>false, "pre_context"=>[" #\n", " # @raise [InvalidInteractionError] If there are validation errors.\n", " def run!\n"], "context_line"=>" run\n", "post_context"=>["\n", " unless valid?\n", " raise InvalidInteractionError, errors.full_messages.join(', ')\n"], "project_root"=>"/app", "filename"=>"active_interaction/concerns/runnable.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb", "function"=>"run", "lineno"=>77, "in_app"=>false, "pre_context"=>[" def run # rubocop:disable MethodLength\n", " self.result =\n", " if valid?\n"], "context_line"=>" run_callbacks(:execute) do\n", "post_context"=>[" result_or_errors =\n", " begin\n", " execute\n"], "project_root"=>"/app", "filename"=>"active_interaction/concerns/runnable.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb", "function"=>"run_callbacks", "lineno"=>101, "in_app"=>false, "pre_context"=>[" callbacks = __callbacks[kind.to_sym]\n", "\n", " if callbacks.empty?\n"], "context_line"=>" yield if block_given?\n", "post_context"=>[" else\n", " env = Filters::Environment.new(self, false, nil)\n", " next_sequence = callbacks.compile\n"], "project_root"=>"/app", "filename"=>"active_support/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb", "function"=>"block in run", "lineno"=>80, "in_app"=>false, "pre_context"=>[" run_callbacks(:execute) do\n", " result_or_errors =\n", " begin\n"], "context_line"=>" execute\n", "post_context"=>[" rescue Interrupt => interrupt\n", " interrupt.errors\n", " end\n"], "project_root"=>"/app", "filename"=>"active_interaction/concerns/runnable.rb"}, {"abs_path"=>"/app/app/interactions/ingest/patents/create.rb", "function"=>"execute", "lineno"=>11, "in_app"=>true, "pre_context"=>[" logger.info \"[Ingest::Patents::Create] [\#{type}] Inside `execute` for: \#{epo_patent}\"\n", "\n", " begin\n"], "context_line"=>" transaction do\n", "post_context"=>[" create_patent!\n", " create_applicants!\n", " create_inventors!\n"], "project_root"=>"/app", "filename"=>"app/interactions/ingest/patents/create.rb"}, {"abs_path"=>"/app/app/interactions/base_interaction.rb", "function"=>"transaction", "lineno"=>7, "in_app"=>true, "pre_context"=>[" end\n", "\n", " def transaction\n"], "context_line"=>" ActiveRecord::Base.transaction { yield }\n", "post_context"=>[" end\n", "\n", " def transaction_rollback\n"], "project_root"=>"/app", "filename"=>"app/interactions/base_interaction.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb", "function"=>"transaction", "lineno"=>212, "in_app"=>false, "pre_context"=>[" module ClassMethods\n", " # See the ConnectionAdapters::DatabaseStatements#transaction API docs.\n", " def transaction(options = {}, &block)\n"], "context_line"=>" connection.transaction(options, &block)\n", "post_context"=>[" end\n", "\n", " def before_commit(*args, &block) # :nodoc:\n"], "project_root"=>"/app", "filename"=>"active_record/transactions.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb", "function"=>"transaction", "lineno"=>277, "in_app"=>false, "pre_context"=>[" end\n", " yield\n", " else\n"], "context_line"=>" transaction_manager.within_new_transaction(isolation: isolation, joinable: joinable) { yield }\n", "post_context"=>[" end\n", " rescue ActiveRecord::Rollback\n", " # rollbacks are silently swallowed\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/database_statements.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/transaction.rb", "function"=>"within_new_transaction", "lineno"=>278, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def within_new_transaction(options = {})\n"], "context_line"=>" @connection.lock.synchronize do\n", "post_context"=>[" transaction = begin_transaction options\n", " yield\n", " rescue Exception => error\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/transaction.rb"}, {"abs_path"=>"/app/vendor/ruby-2.6.5/lib/ruby/2.6.0/monitor.rb", "function"=>"mon_synchronize", "lineno"=>235, "in_app"=>false, "pre_context"=>[" # it may break locking state.\n", " Thread.handle_interrupt(EXCEPTION_NEVER){ mon_enter }\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " Thread.handle_interrupt(EXCEPTION_NEVER){ mon_exit }\n", " end\n"], "project_root"=>"/app", "filename"=>"monitor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/transaction.rb", "function"=>"block in within_new_transaction", "lineno"=>280, "in_app"=>false, "pre_context"=>[" def within_new_transaction(options = {})\n", " @connection.lock.synchronize do\n", " transaction = begin_transaction options\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Exception => error\n", " if transaction\n", " rollback_transaction\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/transaction.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb", "function"=>"block in transaction", "lineno"=>277, "in_app"=>false, "pre_context"=>[" end\n", " yield\n", " else\n"], "context_line"=>" transaction_manager.within_new_transaction(isolation: isolation, joinable: joinable) { yield }\n", "post_context"=>[" end\n", " rescue ActiveRecord::Rollback\n", " # rollbacks are silently swallowed\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/database_statements.rb"}, {"abs_path"=>"/app/app/interactions/base_interaction.rb", "function"=>"block in transaction", "lineno"=>7, "in_app"=>true, "pre_context"=>[" end\n", "\n", " def transaction\n"], "context_line"=>" ActiveRecord::Base.transaction { yield }\n", "post_context"=>[" end\n", "\n", " def transaction_rollback\n"], "project_root"=>"/app", "filename"=>"app/interactions/base_interaction.rb"}, {"abs_path"=>"/app/app/interactions/ingest/patents/create.rb", "function"=>"block in execute", "lineno"=>12, "in_app"=>true, "pre_context"=>["\n", " begin\n", " transaction do\n"], "context_line"=>" create_patent!\n", "post_context"=>[" create_applicants!\n", " create_inventors!\n", " create_citations!\n"], "project_root"=>"/app", "filename"=>"app/interactions/ingest/patents/create.rb"}, {"abs_path"=>"/app/app/interactions/ingest/patents/create.rb", "function"=>"create_patent!", "lineno"=>63, "in_app"=>true, "pre_context"=>[" Mobility.with_locale(epo_patent.title.lang) { @patent.title = epo_patent.title.content } if epo_patent.title\n", " Mobility.with_locale(epo_patent.abstract.lang) { @patent.abstract = epo_patent.abstract.content } if epo_patent.abstract\n", "\n"], "context_line"=>" @patent.save!\n", "post_context"=>[" end\n", "\n", " def create_classifications!\n"], "project_root"=>"/app", "filename"=>"app/interactions/ingest/patents/create.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/suppressor.rb", "function"=>"save!", "lineno"=>48, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def save!(*) # :nodoc:\n"], "context_line"=>" SuppressorRegistry.suppressed[self.class.name] ? true : super\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"active_record/suppressor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb", "function"=>"save!", "lineno"=>319, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def save!(*) #:nodoc:\n"], "context_line"=>" with_transaction_returning_status { super }\n", "post_context"=>[" end\n", "\n", " def touch(*) #:nodoc:\n"], "project_root"=>"/app", "filename"=>"active_record/transactions.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb", "function"=>"with_transaction_returning_status", "lineno"=>366, "in_app"=>false, "pre_context"=>[" # instance.\n", " def with_transaction_returning_status\n", " status = nil\n"], "context_line"=>" self.class.transaction do\n", "post_context"=>[" if has_transactional_callbacks?\n", " add_to_transaction\n", " else\n"], "project_root"=>"/app", "filename"=>"active_record/transactions.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb", "function"=>"transaction", "lineno"=>212, "in_app"=>false, "pre_context"=>[" module ClassMethods\n", " # See the ConnectionAdapters::DatabaseStatements#transaction API docs.\n", " def transaction(options = {}, &block)\n"], "context_line"=>" connection.transaction(options, &block)\n", "post_context"=>[" end\n", "\n", " def before_commit(*args, &block) # :nodoc:\n"], "project_root"=>"/app", "filename"=>"active_record/transactions.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb", "function"=>"transaction", "lineno"=>275, "in_app"=>false, "pre_context"=>[" if isolation\n", " raise ActiveRecord::TransactionIsolationError, \"cannot set isolation when joining a transaction\"\n", " end\n"], "context_line"=>" yield\n", "post_context"=>[" else\n", " transaction_manager.within_new_transaction(isolation: isolation, joinable: joinable) { yield }\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/database_statements.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb", "function"=>"block in with_transaction_returning_status", "lineno"=>375, "in_app"=>false, "pre_context"=>[" end\n", " remember_transaction_record_state\n", "\n"], "context_line"=>" status = yield\n", "post_context"=>[" raise ActiveRecord::Rollback unless status\n", " end\n", " status\n"], "project_root"=>"/app", "filename"=>"active_record/transactions.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb", "function"=>"block in save!", "lineno"=>319, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def save!(*) #:nodoc:\n"], "context_line"=>" with_transaction_returning_status { super }\n", "post_context"=>[" end\n", "\n", " def touch(*) #:nodoc:\n"], "project_root"=>"/app", "filename"=>"active_record/transactions.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/validations.rb", "function"=>"save!", "lineno"=>53, "in_app"=>false, "pre_context"=>[" # Attempts to save the record just like {ActiveRecord::Base#save}[rdoc-ref:Base#save] but\n", " # will raise an ActiveRecord::RecordInvalid exception instead of returning +false+ if the record is not valid.\n", " def save!(options = {})\n"], "context_line"=>" perform_validations(options) ? super : raise_validation_error\n", "post_context"=>[" end\n", "\n", " # Runs all the validations within the specified context. Returns +true+ if\n"], "project_root"=>"/app", "filename"=>"active_record/validations.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb", "function"=>"save!", "lineno"=>503, "in_app"=>false, "pre_context"=>[" #\n", " # Unless an error is raised, returns true.\n", " def save!(*args, &block)\n"], "context_line"=>" create_or_update(*args, &block) || raise(RecordNotSaved.new(\"Failed to save the record\", self))\n", "post_context"=>[" end\n", "\n", " # Deletes the record in the database and freezes this instance to\n"], "project_root"=>"/app", "filename"=>"active_record/persistence.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/timestamp.rb", "function"=>"create_or_update", "lineno"=>129, "in_app"=>false, "pre_context"=>["\n", " def create_or_update(touch: true, **)\n", " @_touch_record = touch\n"], "context_line"=>" super\n", "post_context"=>[" end\n", "\n", " def should_record_timestamps?\n"], "project_root"=>"/app", "filename"=>"active_record/timestamp.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb", "function"=>"create_or_update", "lineno"=>328, "in_app"=>false, "pre_context"=>[" private\n", "\n", " def create_or_update(**)\n"], "context_line"=>" _run_save_callbacks { super }\n", "post_context"=>[" end\n", "\n", " def _create_record\n"], "project_root"=>"/app", "filename"=>"active_record/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb", "function"=>"_run_save_callbacks", "lineno"=>827, "in_app"=>false, "pre_context"=>["\n", " module_eval <<-RUBY, __FILE__, __LINE__ + 1\n", " def _run_\#{name}_callbacks(&block)\n"], "context_line"=>" run_callbacks \#{name.inspect}, &block\n", "post_context"=>[" end\n", "\n", " def self._\#{name}_callbacks\n"], "project_root"=>"/app", "filename"=>"active_support/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb", "function"=>"run_callbacks", "lineno"=>135, "in_app"=>false, "pre_context"=>[" # Common case: no 'around' callbacks defined\n", " if next_sequence.final?\n", " next_sequence.invoke_before(env)\n"], "context_line"=>" env.value = !env.halted && (!block_given? || yield)\n", "post_context"=>[" next_sequence.invoke_after(env)\n", " env.value\n", " else\n"], "project_root"=>"/app", "filename"=>"active_support/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb", "function"=>"block in create_or_update", "lineno"=>328, "in_app"=>false, "pre_context"=>[" private\n", "\n", " def create_or_update(**)\n"], "context_line"=>" _run_save_callbacks { super }\n", "post_context"=>[" end\n", "\n", " def _create_record\n"], "project_root"=>"/app", "filename"=>"active_record/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb", "function"=>"create_or_update", "lineno"=>906, "in_app"=>false, "pre_context"=>[" def create_or_update(**, &block)\n", " _raise_readonly_record_error if readonly?\n", " return false if destroyed?\n"], "context_line"=>" result = new_record? ? _create_record(&block) : _update_record(&block)\n", "post_context"=>[" result != false\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"active_record/persistence.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/timestamp.rb", "function"=>"_create_record", "lineno"=>111, "in_app"=>false, "pre_context"=>[" end\n", " end\n", "\n"], "context_line"=>" super\n", "post_context"=>[" end\n", "\n", " def _update_record\n"], "project_root"=>"/app", "filename"=>"active_record/timestamp.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb", "function"=>"_create_record", "lineno"=>332, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def _create_record\n"], "context_line"=>" _run_create_callbacks { super }\n", "post_context"=>[" end\n", "\n", " def _update_record\n"], "project_root"=>"/app", "filename"=>"active_record/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb", "function"=>"_run_create_callbacks", "lineno"=>827, "in_app"=>false, "pre_context"=>["\n", " module_eval <<-RUBY, __FILE__, __LINE__ + 1\n", " def _run_\#{name}_callbacks(&block)\n"], "context_line"=>" run_callbacks \#{name.inspect}, &block\n", "post_context"=>[" end\n", "\n", " def self._\#{name}_callbacks\n"], "project_root"=>"/app", "filename"=>"active_support/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb", "function"=>"run_callbacks", "lineno"=>135, "in_app"=>false, "pre_context"=>[" # Common case: no 'around' callbacks defined\n", " if next_sequence.final?\n", " next_sequence.invoke_before(env)\n"], "context_line"=>" env.value = !env.halted && (!block_given? || yield)\n", "post_context"=>[" next_sequence.invoke_after(env)\n", " env.value\n", " else\n"], "project_root"=>"/app", "filename"=>"active_support/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb", "function"=>"block in _create_record", "lineno"=>332, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def _create_record\n"], "context_line"=>" _run_create_callbacks { super }\n", "post_context"=>[" end\n", "\n", " def _update_record\n"], "project_root"=>"/app", "filename"=>"active_record/callbacks.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/attribute_methods/dirty.rb", "function"=>"_create_record", "lineno"=>211, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def _create_record(attribute_names = attribute_names_for_partial_writes)\n"], "context_line"=>" id = super\n", "post_context"=>[" changes_applied\n", " id\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/attribute_methods/dirty.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/locking/optimistic.rb", "function"=>"_create_record", "lineno"=>70, "in_app"=>false, "pre_context"=>[" # a change from the default, since the database might have no default\n", " attribute_names |= [self.class.locking_column]\n", " end\n"], "context_line"=>" super\n", "post_context"=>[" end\n", "\n", " def _touch_row(attribute_names, time)\n"], "project_root"=>"/app", "filename"=>"active_record/locking/optimistic.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/counter_cache.rb", "function"=>"_create_record", "lineno"=>163, "in_app"=>false, "pre_context"=>["\n", " private\n", " def _create_record(attribute_names = self.attribute_names)\n"], "context_line"=>" id = super\n", "post_context"=>["\n", " each_counter_cached_associations do |association|\n", " association.increment_counters\n"], "project_root"=>"/app", "filename"=>"active_record/counter_cache.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb", "function"=>"_create_record", "lineno"=>933, "in_app"=>false, "pre_context"=>[" def _create_record(attribute_names = self.attribute_names)\n", " attribute_names = attributes_for_create(attribute_names)\n", "\n"], "context_line"=>" new_id = self.class._insert_record(\n", "post_context"=>[" attributes_with_values(attribute_names)\n", " )\n", "\n"], "project_root"=>"/app", "filename"=>"active_record/persistence.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb", "function"=>"_insert_record", "lineno"=>375, "in_app"=>false, "pre_context"=>[" im = arel_table.compile_insert(_substitute_values(values))\n", " end\n", "\n"], "context_line"=>" connection.insert(im, \"\#{self} Create\", primary_key || false, primary_key_value)\n", "post_context"=>[" end\n", "\n", " def _update_record(values, constraints) # :nodoc:\n"], "project_root"=>"/app", "filename"=>"active_record/persistence.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/query_cache.rb", "function"=>"insert", "lineno"=>22, "in_app"=>false, "pre_context"=>[" base.class_eval <<-end_code, __FILE__, __LINE__ + 1\n", " def \#{method_name}(*)\n", " ActiveRecord::Base.clear_query_caches_for_current_thread if @query_cache_enabled\n"], "context_line"=>" super\n", "post_context"=>[" end\n", " end_code\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/query_cache.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb", "function"=>"insert", "lineno"=>162, "in_app"=>false, "pre_context"=>[" # passed in as +id_value+.\n", " def insert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])\n", " sql, binds = to_sql_and_binds(arel, binds)\n"], "context_line"=>" value = exec_insert(sql, name, binds, pk, sequence_name)\n", "post_context"=>[" id_value || last_inserted_id(value)\n", " end\n", " alias create insert\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/database_statements.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb", "function"=>"exec_insert", "lineno"=>130, "in_app"=>false, "pre_context"=>["\n", " def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil)\n", " if use_insert_returning? || pk == false\n"], "context_line"=>" super\n", "post_context"=>[" else\n", " result = exec_query(sql, name, binds)\n", " unless sequence_name\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/postgresql/database_statements.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb", "function"=>"exec_insert", "lineno"=>135, "in_app"=>false, "pre_context"=>[" # the executed +sql+ statement.\n", " def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil)\n", " sql, binds = sql_for_insert(sql, pk, binds)\n"], "context_line"=>" exec_query(sql, name, binds)\n", "post_context"=>[" end\n", "\n", " # Executes delete +sql+ statement in the context of this connection using\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract/database_statements.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb", "function"=>"exec_query", "lineno"=>96, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def exec_query(sql, name = \"SQL\", binds = [], prepare: false)\n"], "context_line"=>" execute_and_clear(sql, name, binds, prepare: prepare) do |result|\n", "post_context"=>[" types = {}\n", " fields = result.fields\n", " fields.each_with_index do |fname, i|\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/postgresql/database_statements.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb", "function"=>"execute_and_clear", "lineno"=>649, "in_app"=>false, "pre_context"=>[" if without_prepared_statement?(binds)\n", " result = exec_no_cache(sql, name, [])\n", " elsif !prepare\n"], "context_line"=>" result = exec_no_cache(sql, name, binds)\n", "post_context"=>[" else\n", " result = exec_cache(sql, name, binds)\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/postgresql_adapter.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb", "function"=>"exec_no_cache", "lineno"=>666, "in_app"=>false, "pre_context"=>[" update_typemap_for_default_timezone\n", "\n", " type_casted_binds = type_casted_binds(binds)\n"], "context_line"=>" log(sql, name, binds, type_casted_binds) do\n", "post_context"=>[" ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\n", " @connection.exec_params(sql, type_casted_binds)\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/postgresql_adapter.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract_adapter.rb", "function"=>"log", "lineno"=>697, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def log(sql, name = \"SQL\", binds = [], type_casted_binds = [], statement_name = nil) # :doc:\n"], "context_line"=>" @instrumenter.instrument(\n", "post_context"=>[" \"sql.active_record\",\n", " sql: sql,\n", " name: name,\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract_adapter.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/notifications/instrumenter.rb", "function"=>"instrument", "lineno"=>24, "in_app"=>false, "pre_context"=>[" # some of the listeners might have state\n", " listeners_state = start name, payload\n", " begin\n"], "context_line"=>" yield payload if block_given?\n", "post_context"=>[" rescue Exception => e\n", " payload[:exception] = [e.class.name, e.message]\n", " payload[:exception_object] = e\n"], "project_root"=>"/app", "filename"=>"active_support/notifications/instrumenter.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract_adapter.rb", "function"=>"block in log", "lineno"=>706, "in_app"=>false, "pre_context"=>[" statement_name: statement_name,\n", " connection_id: object_id,\n", " connection: self) do\n"], "context_line"=>" @lock.synchronize do\n", "post_context"=>[" yield\n", " end\n", " rescue => e\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract_adapter.rb"}, {"abs_path"=>"/app/vendor/ruby-2.6.5/lib/ruby/2.6.0/monitor.rb", "function"=>"mon_synchronize", "lineno"=>235, "in_app"=>false, "pre_context"=>[" # it may break locking state.\n", " Thread.handle_interrupt(EXCEPTION_NEVER){ mon_enter }\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " Thread.handle_interrupt(EXCEPTION_NEVER){ mon_exit }\n", " end\n"], "project_root"=>"/app", "filename"=>"monitor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract_adapter.rb", "function"=>"block (2 levels) in log", "lineno"=>707, "in_app"=>false, "pre_context"=>[" connection_id: object_id,\n", " connection: self) do\n", " @lock.synchronize do\n"], "context_line"=>" yield\n", "post_context"=>[" end\n", " rescue => e\n", " raise translate_exception_class(e, sql, binds)\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/abstract_adapter.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb", "function"=>"block in exec_no_cache", "lineno"=>667, "in_app"=>false, "pre_context"=>["\n", " type_casted_binds = type_casted_binds(binds)\n", " log(sql, name, binds, type_casted_binds) do\n"], "context_line"=>" ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\n", "post_context"=>[" @connection.exec_params(sql, type_casted_binds)\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/postgresql_adapter.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies/interlock.rb", "function"=>"permit_concurrent_loads", "lineno"=>47, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def permit_concurrent_loads\n"], "context_line"=>" @lock.yield_shares(compatible: [:load]) do\n", "post_context"=>[" yield\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"active_support/dependencies/interlock.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/concurrency/share_lock.rb", "function"=>"yield_shares", "lineno"=>187, "in_app"=>false, "pre_context"=>[" end\n", "\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " synchronize do\n", " wait_for(:yield_shares) { @exclusive_thread && @exclusive_thread != Thread.current }\n"], "project_root"=>"/app", "filename"=>"active_support/concurrency/share_lock.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies/interlock.rb", "function"=>"block in permit_concurrent_loads", "lineno"=>48, "in_app"=>false, "pre_context"=>["\n", " def permit_concurrent_loads\n", " @lock.yield_shares(compatible: [:load]) do\n"], "context_line"=>" yield\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"active_support/dependencies/interlock.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb", "function"=>"block (2 levels) in exec_no_cache", "lineno"=>668, "in_app"=>false, "pre_context"=>[" type_casted_binds = type_casted_binds(binds)\n", " log(sql, name, binds, type_casted_binds) do\n", " ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\n"], "context_line"=>" @connection.exec_params(sql, type_casted_binds)\n", "post_context"=>[" end\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/postgresql_adapter.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb", "function"=>"async_exec_params", "lineno"=>668, "in_app"=>false, "pre_context"=>[" type_casted_binds = type_casted_binds(binds)\n", " log(sql, name, binds, type_casted_binds) do\n", " ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\n"], "context_line"=>" @connection.exec_params(sql, type_casted_binds)\n", "post_context"=>[" end\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"active_record/connection_adapters/postgresql_adapter.rb"}]}}, {"type"=>"ActiveRecord::RecordNotUnique", "value"=>"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"index_patents_on_publication_number\"\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\n", "module"=>"ActiveRecord", "stacktrace"=>nil}]}, "logentry"=>{"params"=>nil, "message"=>"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"index_patents_on_publication_number\"\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\n"}}], "retry"=>true, "queue"=>"default", "backtrace"=>true, "jid"=>"dc592e52309f3e00e300924a", "created_at"=>1571449724.19329, "enqueued_at"=>1571459752.233215, "error_message"=>"undefined method `[]' for nil:NilClass", "error_class"=>"NoMethodError", "failed_at"=>1571449728.058785, "retry_count"=>1, "error_backtrace"=>"eJzNl+1u2jAUhm8F9c82aWDikJT2VqbJc5JD8DBxeuJAe/c7ttMuIKGCcLT9\nQAp2/D4+n3Z+PDDZtuwATWWQFX1TaWDYF2+ML/LFktWw71gHjcW3OUp6bc4X\nCacJrQrmB1ipFc0vsHhep8+qmf2qwYo9dJ2sQWzQ7AW8ltBaZZovD9+j8p4+\neNrU78zIkCTJPGUjlYZK0LIqMiFdeYBTFkBTNoq+ajormxK8o5JPCE567qSz\noPCXtDF4lFjJQnslni4vSbnf0eAO8H1rIvx16x79qhaQ9PbX2qcq2KmXOQ0s\nuN/XMMJaNCUF23jp5Cn34vAKZW9B/DZFZEAeAlRoU+5mX/lMk+G6+zajweHF\nu4F7VdEC8jSwcitV47npesSlJ9UczO7q/B5YfaNeepiTVzrPTbIxWIRp5zQX\nNTwAjvbiIx6KrJRaT2PlanmPlZ/UgIUapWs9H9tyzP/bpBtZoelGQpwlfnpq\nR6xsP6Wk+bi88nF5VaprpS23dxMpvwUCpUpo6aEfElDenwFnxmRjY7JJjEE6\nijpHW53F54aMlqVVB+j6tjVoPSMUThgXwwQLTZXqRxyRREMzX4e+5Ebi0hC0\nkdVwYvBT2+LT/qFtya2Qa5KBx+tqZzmdjHN6NUlOnxB5Fu4LdIOxsbsNP+k2\n6WTdhm6kNQz+myowPLt4MZmmcz6G6qi1KaJ3Tr46LfhoFowiEc7lo7KxY5yG\nGLcILR3PsT0TxKeptSTnw9YnONuHfBnGhGkiuyYP+thf/Wl5UZdOAu39EWrq\n6DxdmTqa7nl6d3IDwm4RJH1P/vwDeE9JnQ==\n", "retried_at"=>1571456409.89409}, "jobstr"=>"{\"class\":\"SentryWorker\",\"args\":[{\"environment\":\"staging\",\"event_id\":\"878a3a904a284de583643a6aca4d2a03\",\"extra\":{\"server\":{\"os\":{\"name\":\"Linux\",\"version\":\"#52-Ubuntu SMP Wed Jun 26 08:47:35 UTC 2019\",\"build\":\"4.4.0-1048-aws\",\"kernel_version\":\"Linux f46ec913-0282-4a5b-991c-c73183847da8 4.4.0-1048-aws #52-Ubuntu SMP Wed Jun 26 08:47:35 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux\"},\"runtime\":{\"name\":\"ruby\",\"version\":\"ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]\"}},\"sidekiq\":{\"context\":\"Job raised exception\",\"job\":{\"class\":\"PatentIngestWorker\",\"args\":[\"seed\",\"4ad8d32f77\",\"<exchange-document country=\\\"AU\\\" doc-number=\\\"2003206825\\\" kind=\\\"B8\\\" doc-id=\\\"382940022\\\" date-publ=\\\"20080221\\\" family-id=\\\"27675599\\\" is-representative=\\\"NO\\\" date-of-last-exchange=\\\"20190131\\\" date-added-docdb=\\\"20080407\\\" originating-office=\\\"EP\\\">\\n <bibliographic-data>\\n <publication-reference data-format=\\\"docdb\\\">\\n <document-id>\\n <country>AU</country>\\n <doc-number>2003206825</doc-number>\\n <kind>B8</kind>\\n <date>20080221</date>\\n </document-id>\\n </publication-reference>\\n <publication-reference data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>AU2003206825B</doc-number>\\n </document-id>\\n </publication-reference>\\n <classifications-ipcr>\\n <classification-ipcr sequence=\\\"1\\\">\\n <text>C07D 213/57 20060101AFI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"2\\\">\\n <text>A61K 8/00 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"3\\\">\\n <text>A61K 8/49 20060101ALI20051008BMEP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"4\\\">\\n <text>A61Q 5/02 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"5\\\">\\n <text>A61Q 5/12 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"6\\\">\\n <text>A61Q 17/04 20060101ALI20051008BMEP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"7\\\">\\n <text>C07D 309/34 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n <classification-ipcr sequence=\\\"8\\\">\\n <text>C09K 3/00 20060101ALI20060310BMJP </text>\\n </classification-ipcr>\\n </classifications-ipcr>\\n <patent-classifications>\\n <patent-classification sequence=\\\"1\\\">\\n <classification-scheme office=\\\"EP\\\" scheme=\\\"CPC\\\">\\n <date>20130101</date>\\n </classification-scheme>\\n <classification-symbol>A61Q 17/04 </classification-symbol>\\n <symbol-position>F</symbol-position>\\n <classification-value>I</classification-value>\\n <classification-status>B</classification-status>\\n <classification-data-source>H</classification-data-source>\\n <action-date>\\n <date>20130101</date>\\n </action-date>\\n </patent-classification>\\n <patent-classification sequence=\\\"2\\\">\\n <classification-scheme office=\\\"EP\\\" scheme=\\\"CPC\\\">\\n <date>20130101</date>\\n </classification-scheme>\\n <classification-symbol>A61K 8/4926 </classification-symbol>\\n <symbol-position>L</symbol-position>\\n <classification-value>I</classification-value>\\n <classification-status>B</classification-status>\\n <classification-data-source>H</classification-data-source>\\n <action-date>\\n <date>20130101</date>\\n </action-date>\\n </patent-classification>\\n <patent-classification sequence=\\\"3\\\">\\n <classification-scheme office=\\\"EP\\\" scheme=\\\"CPC\\\">\\n <date>20130101</date>\\n </classification-scheme>\\n <classification-symbol>A61K 8/498 </classification-symbol>\\n <symbol-position>L</symbol-position>\\n <classification-value>I</classification-value>\\n <classification-status>B</classification-status>\\n <classification-data-source>H</classification-data-source>\\n <action-date>\\n <date>20130101</date>\\n </action-date>\\n </patent-classification>\\n </patent-classifications>\\n <application-reference is-representative=\\\"NO\\\" doc-id=\\\"2578143\\\" data-format=\\\"docdb\\\">\\n <document-id>\\n <country>AU</country>\\n <doc-number>2003206825</doc-number>\\n <kind>A</kind>\\n <date>20030204</date>\\n </document-id>\\n </application-reference>\\n <application-reference data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>AU20030206825</doc-number>\\n </document-id>\\n </application-reference>\\n <application-reference data-format=\\\"original\\\">\\n <document-id>\\n <doc-number>2003206825</doc-number>\\n </document-id>\\n </application-reference>\\n <priority-claims>\\n <priority-claim sequence=\\\"1\\\" data-format=\\\"docdb\\\">\\n <document-id doc-id=\\\"267967684\\\">\\n <country>EP</country>\\n <doc-number>02002093</doc-number>\\n <kind>A</kind>\\n <date>20020212</date>\\n </document-id>\\n <priority-active-indicator>Y</priority-active-indicator>\\n </priority-claim>\\n <priority-claim sequence=\\\"1\\\" data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>EP20020002093</doc-number>\\n </document-id>\\n </priority-claim>\\n <priority-claim sequence=\\\"2\\\" data-format=\\\"docdb\\\">\\n <document-id doc-id=\\\"15634271\\\">\\n <country>EP</country>\\n <doc-number>0301049</doc-number>\\n <kind>W</kind>\\n <date>20030204</date>\\n </document-id>\\n <priority-linkage-type>W</priority-linkage-type>\\n <priority-active-indicator>N</priority-active-indicator>\\n </priority-claim>\\n <priority-claim sequence=\\\"2\\\" data-format=\\\"epodoc\\\">\\n <document-id>\\n <doc-number>WO2003EP01049</doc-number>\\n </document-id>\\n </priority-claim>\\n <priority-claim sequence=\\\"1\\\" data-format=\\\"original\\\">\\n <document-id>\\n <doc-number>02002093.9</doc-number>\\n </document-id>\\n </priority-claim>\\n <priority-claim sequence=\\\"2\\\" data-format=\\\"original\\\">\\n <document-id>\\n <doc-number>WO03/068183</doc-number>\\n </document-id>\\n </priority-claim>\\n </priority-claims>\\n <parties>\\n <applicants>\\n <applicant sequence=\\\"1\\\" data-format=\\\"docdb\\\">\\n <applicant-name>\\n <name>DSM IP ASSETS BV</name>\\n </applicant-name>\\n </applicant>\\n <applicant sequence=\\\"1\\\" data-format=\\\"docdba\\\">\\n <applicant-name>\\n <name>DSM IP ASSETS B.V.</name>\\n </applicant-name>\\n </applicant>\\n </applicants>\\n <inventors>\\n <inventor sequence=\\\"1\\\" data-format=\\\"docdb\\\">\\n <inventor-name>\\n <name>BERG-SCHULTZ KATJA</name>\\n </inventor-name>\\n </inventor>\\n <inventor sequence=\\\"1\\\" data-format=\\\"docdba\\\">\\n <inventor-name>\\n <name>KATJA BERG-SCHULTZ</name>\\n </inventor-name>\\n </inventor>\\n </inventors>\\n </parties>\\n <invention-title lang=\\\"en\\\" data-format=\\\"docdba\\\">Sunscreen compositions as well as dihydropyridines and dihydropyranes</invention-title>\\n <dates-of-public-availability>\\n <printed-with-grant>\\n <document-id>\\n <date>20080221</date>\\n </document-id>\\n </printed-with-grant>\\n </dates-of-public-availability>\\n </bibliographic-data>\\n</exchange-document>\"],\"retry\":true,\"queue\":\"patent_ingest\",\"backtrace\":true,\"jid\":\"22c9ec664bdb65eb811e8e19\",\"created_at\":1570072201.99408,\"enqueued_at\":1571449722.707494,\"error_message\":\"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \\\"index_patents_on_publication_number\\\"\\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\\n\",\"error_class\":\"ActiveRecord::RecordNotUnique\",\"failed_at\":1570731698.815898,\"retry_count\":6,\"error_backtrace\":\"eJzVWtty4ygQ/ZVsXiZbtYksydf5laktFknEZiKBAshe79dvc7GClHF8kXAy\\nD66yQXBON4emG/nHfYTrOtoSVnARZQ0rShKJJttHydP8aRKtSSUjnCu6JYLk\\nXBSP0ArtJc1cM7LtUc4ZI9DCGcIFrhURMqq5VGtB5Gt5aHsS2ff5fPmdsrt/\\nsNyzHJF/SY5qLHAlv93/9Yl0spLnL3cPyV1JtqSUf95BoyHHOMpxviEX0ZNN\\nXXOh3vNzHVFBapiGsJwSGVEGZDS+JjT1+cC3moiKKgQW5Y0QhClUclxc5q2T\\ndNrZ830kN1gQdKATLxeGz56SskCmb2TsD1xhocfwwIh6WXTX53qRXMEJZ1IJ\\neMxntJgsjiq45Os+Jc3lUXOZGUyPWsUZVdzMmaQzMyc0Ib1PNwL6/vsk8+Zd\\nh//CpmECZFzRZ5pjzUUrEDg0FWEOP5ka+Lfmz3DCfGXX+FLbR5S9XYWbqv0I\\nlemqpdIogjArUF4SLG5HJyqwwhmWoCGFFdGqkJraynPSa0PE/lZaOUYodvvY\\nMAIJExFcvqe9FKeTW5M66ad5ctjlt2RjNGL3kgk1oUjACSqpVHDGGpx0YVXh\\nnO+eCgi4SlMLmAsCbg8AmPNGB+w3X8bz0JD6PKJsHfFa0QqMpbk9rgLDYqUE\\nzXTgq4ja8EJGBRVqb/QTx6HdjMsyw/mL2TRpmnRP5gG4pzNUH/kQ1kTDUNsR\\nEG+Z2OMXGUBr5HW41/g33HKCcAkEwqo2Tg2unn5UcJmdw+MCNTXE53HTio5D\\nk15tNQj5N5KsxNubCNb5N+SCdiWbrIID9kQ7m9hzRbv0jzFxtrikha1BDE4g\\nGEg8mMR5i5PGq+6eCI/oso8WcUfVBnlPwUDVCAZnq8nSmuCV/qnsMHGMPY4h\\nHZTEyS3hUlfa3XQZjslwdPXp4AjViLT3Gu5yrYuiP+beyfGBH2uIMVENGgAF\\nRDa6mNIz9cON7b9mnriXOLlS9vhMRpRei8k0u3MEUst1++ULcPMwDafl5H3U\\noQwxskMf0PsdbsvembpYthv6tIWfJY4vEEwv2GZnDT++32P/xuoic306j+nT\\n4in2jfY6zR0+EUADMj6Gs9Ig91UPfSGT3Ek8MMkdaK7T1qVWDkRdLQ+olx1d\\nA2Fjd6vSwdWfiheklG+DrCCR++1kephlNmmXjLKf0HH9VPHc3V+t+9PsuHgx\\nl4N2uH0C2VZzsL575/XMRfXLKcwefRsZW/o7gWv00bBjyLPDK6bOyI9XT9KC\\nvNBXsykSs2SuJaoFz9tkI/aug/V9zU+ejQwwnx598+MeHAxY0QIG7LAgUb7B\\nlFnh9epoyrb85dy4dsBqGH1tyCN4RRrceOYDI9utnQZDiIDA73Exkd3VfhBn\\nwlg5nQyxEtQm9o8CMk0GCUScuPBpGsyxsRbujZMjYSLJlzbpQqzURYNRIHrC\\nT3sBYyS1d1FSPyw9zP3tVVAJESXfDEYEfetCS+z9KzgAxMMV0DPGr7ofZkGM\\nEZiWJhGY9tbnAkWfmXfYoKozTx36axvMl8v2MBgXTRD9lwP3QrpXvI2P9om2\\nxZeCnCOGZLyo1tN07Gt6GkTTHcRkZhNMXdKMHW2STrRJg0Wbkq/XLndKQy1M\\nMjuamISJnK7kXZc8Gz1yJtPuhh/NAm8lJm3FPvIauxqhFqSG43lsz9jJw+y1\\nwzv5IGe704trQ5yN7Jp5WxIOnhdOgtL4w+6pnfZ0cfb/gE7P25e3xM8EqY0g\\nuPh2//f/50PJzg==\\n\",\"retried_at\":1571437462.206649},\"jobstr\":\"{\\\"class\\\":\\\"PatentIngestWorker\\\",\\\"args\\\":[\\\"seed\\\",\\\"4ad8d32f77\\\",\\\"<exchange-document country=\\\\\\\"AU\\\\\\\" doc-number=\\\\\\\"2003206825\\\\\\\" kind=\\\\\\\"B8\\\\\\\" doc-id=\\\\\\\"382940022\\\\\\\" date-publ=\\\\\\\"20080221\\\\\\\" family-id=\\\\\\\"27675599\\\\\\\" is-representative=\\\\\\\"NO\\\\\\\" date-of-last-exchange=\\\\\\\"20190131\\\\\\\" date-added-docdb=\\\\\\\"20080407\\\\\\\" originating-office=\\\\\\\"EP\\\\\\\">\\\\n <bibliographic-data>\\\\n <publication-reference data-format=\\\\\\\"docdb\\\\\\\">\\\\n <document-id>\\\\n <country>AU</country>\\\\n <doc-number>2003206825</doc-number>\\\\n <kind>B8</kind>\\\\n <date>20080221</date>\\\\n </document-id>\\\\n </publication-reference>\\\\n <publication-reference data-format=\\\\\\\"epodoc\\\\\\\">\\\\n <document-id>\\\\n <doc-number>AU2003206825B</doc-number>\\\\n </document-id>\\\\n </publication-reference>\\\\n <classifications-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"1\\\\\\\">\\\\n <text>C07D 213/57 20060101AFI20060310BMJP </text>\\\\n </classification-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"2\\\\\\\">\\\\n <text>A61K 8/00 20060101ALI20060310BMJP </text>\\\\n </classification-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"3\\\\\\\">\\\\n <text>A61K 8/49 20060101ALI20051008BMEP </text>\\\\n </classification-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"4\\\\\\\">\\\\n <text>A61Q 5/02 20060101ALI20060310BMJP </text>\\\\n </classification-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"5\\\\\\\">\\\\n <text>A61Q 5/12 20060101ALI20060310BMJP </text>\\\\n </classification-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"6\\\\\\\">\\\\n <text>A61Q 17/04 20060101ALI20051008BMEP </text>\\\\n </classification-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"7\\\\\\\">\\\\n <text>C07D 309/34 20060101ALI20060310BMJP </text>\\\\n </classification-ipcr>\\\\n <classification-ipcr sequence=\\\\\\\"8\\\\\\\">\\\\n <text>C09K 3/00 20060101ALI20060310BMJP </text>\\\\n </classification-ipcr>\\\\n </classifications-ipcr>\\\\n <patent-classifications>\\\\n <patent-classification sequence=\\\\\\\"1\\\\\\\">\\\\n <classification-scheme office=\\\\\\\"EP\\\\\\\" scheme=\\\\\\\"CPC\\\\\\\">\\\\n <date>20130101</date>\\\\n </classification-scheme>\\\\n <classification-symbol>A61Q 17/04 </classification-symbol>\\\\n <symbol-position>F</symbol-position>\\\\n <classification-value>I</classification-value>\\\\n <classification-status>B</classification-status>\\\\n <classification-data-source>H</classification-data-source>\\\\n <action-date>\\\\n <date>20130101</date>\\\\n </action-date>\\\\n </patent-classification>\\\\n <patent-classification sequence=\\\\\\\"2\\\\\\\">\\\\n <classification-scheme office=\\\\\\\"EP\\\\\\\" scheme=\\\\\\\"CPC\\\\\\\">\\\\n <date>20130101</date>\\\\n </classification-scheme>\\\\n <classification-symbol>A61K 8/4926 </classification-symbol>\\\\n <symbol-position>L</symbol-position>\\\\n <classification-value>I</classification-value>\\\\n <classification-status>B</classification-status>\\\\n <classification-data-source>H</classification-data-source>\\\\n <action-date>\\\\n <date>20130101</date>\\\\n </action-date>\\\\n </patent-classification>\\\\n <patent-classification sequence=\\\\\\\"3\\\\\\\">\\\\n <classification-scheme office=\\\\\\\"EP\\\\\\\" scheme=\\\\\\\"CPC\\\\\\\">\\\\n <date>20130101</date>\\\\n </classification-scheme>\\\\n <classification-symbol>A61K 8/498 </classification-symbol>\\\\n <symbol-position>L</symbol-position>\\\\n <classification-value>I</classification-value>\\\\n <classification-status>B</classification-status>\\\\n <classification-data-source>H</classification-data-source>\\\\n <action-date>\\\\n <date>20130101</date>\\\\n </action-date>\\\\n </patent-classification>\\\\n </patent-classifications>\\\\n <application-reference is-representative=\\\\\\\"NO\\\\\\\" doc-id=\\\\\\\"2578143\\\\\\\" data-format=\\\\\\\"docdb\\\\\\\">\\\\n <document-id>\\\\n <country>AU</country>\\\\n <doc-number>2003206825</doc-number>\\\\n <kind>A</kind>\\\\n <date>20030204</date>\\\\n </document-id>\\\\n </application-reference>\\\\n <application-reference data-format=\\\\\\\"epodoc\\\\\\\">\\\\n <document-id>\\\\n <doc-number>AU20030206825</doc-number>\\\\n </document-id>\\\\n </application-reference>\\\\n <application-reference data-format=\\\\\\\"original\\\\\\\">\\\\n <document-id>\\\\n <doc-number>2003206825</doc-number>\\\\n </document-id>\\\\n </application-reference>\\\\n <priority-claims>\\\\n <priority-claim sequence=\\\\\\\"1\\\\\\\" data-format=\\\\\\\"docdb\\\\\\\">\\\\n <document-id doc-id=\\\\\\\"267967684\\\\\\\">\\\\n <country>EP</country>\\\\n <doc-number>02002093</doc-number>\\\\n <kind>A</kind>\\\\n <date>20020212</date>\\\\n </document-id>\\\\n <priority-active-indicator>Y</priority-active-indicator>\\\\n </priority-claim>\\\\n <priority-claim sequence=\\\\\\\"1\\\\\\\" data-format=\\\\\\\"epodoc\\\\\\\">\\\\n <document-id>\\\\n <doc-number>EP20020002093</doc-number>\\\\n </document-id>\\\\n </priority-claim>\\\\n <priority-claim sequence=\\\\\\\"2\\\\\\\" data-format=\\\\\\\"docdb\\\\\\\">\\\\n <document-id doc-id=\\\\\\\"15634271\\\\\\\">\\\\n <country>EP</country>\\\\n <doc-number>0301049</doc-number>\\\\n <kind>W</kind>\\\\n <date>20030204</date>\\\\n </document-id>\\\\n <priority-linkage-type>W</priority-linkage-type>\\\\n <priority-active-indicator>N</priority-active-indicator>\\\\n </priority-claim>\\\\n <priority-claim sequence=\\\\\\\"2\\\\\\\" data-format=\\\\\\\"epodoc\\\\\\\">\\\\n <document-id>\\\\n <doc-number>WO2003EP01049</doc-number>\\\\n </document-id>\\\\n </priority-claim>\\\\n <priority-claim sequence=\\\\\\\"1\\\\\\\" data-format=\\\\\\\"original\\\\\\\">\\\\n <document-id>\\\\n <doc-number>02002093.9</doc-number>\\\\n </document-id>\\\\n </priority-claim>\\\\n <priority-claim sequence=\\\\\\\"2\\\\\\\" data-format=\\\\\\\"original\\\\\\\">\\\\n <document-id>\\\\n <doc-number>WO03/068183</doc-number>\\\\n </document-id>\\\\n </priority-claim>\\\\n </priority-claims>\\\\n <parties>\\\\n <applicants>\\\\n <applicant sequence=\\\\\\\"1\\\\\\\" data-format=\\\\\\\"docdb\\\\\\\">\\\\n <applicant-name>\\\\n <name>DSM IP ASSETS BV</name>\\\\n </applicant-name>\\\\n </applicant>\\\\n <applicant sequence=\\\\\\\"1\\\\\\\" data-format=\\\\\\\"docdba\\\\\\\">\\\\n <applicant-name>\\\\n <name>DSM IP ASSETS B.V.</name>\\\\n </applicant-name>\\\\n </applicant>\\\\n </applicants>\\\\n <inventors>\\\\n <inventor sequence=\\\\\\\"1\\\\\\\" data-format=\\\\\\\"docdb\\\\\\\">\\\\n <inventor-name>\\\\n <name>BERG-SCHULTZ KATJA</name>\\\\n </inventor-name>\\\\n </inventor>\\\\n <inventor sequence=\\\\\\\"1\\\\\\\" data-format=\\\\\\\"docdba\\\\\\\">\\\\n <inventor-name>\\\\n <name>KATJA BERG-SCHULTZ</name>\\\\n </inventor-name>\\\\n </inventor>\\\\n </inventors>\\\\n </parties>\\\\n <invention-title lang=\\\\\\\"en\\\\\\\" data-format=\\\\\\\"docdba\\\\\\\">Sunscreen compositions as well as dihydropyridines and dihydropyranes</invention-title>\\\\n <dates-of-public-availability>\\\\n <printed-with-grant>\\\\n <document-id>\\\\n <date>20080221</date>\\\\n </document-id>\\\\n </printed-with-grant>\\\\n </dates-of-public-availability>\\\\n </bibliographic-data>\\\\n</exchange-document>\\\"],\\\"retry\\\":true,\\\"queue\\\":\\\"patent_ingest\\\",\\\"backtrace\\\":true,\\\"jid\\\":\\\"22c9ec664bdb65eb811e8e19\\\",\\\"created_at\\\":1570072201.99408,\\\"enqueued_at\\\":1571449722.707494,\\\"error_message\\\":\\\"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \\\\\\\"index_patents_on_publication_number\\\\\\\"\\\\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\\\\n\\\",\\\"error_class\\\":\\\"ActiveRecord::RecordNotUnique\\\",\\\"failed_at\\\":1570731698.815898,\\\"retry_count\\\":6,\\\"error_backtrace\\\":\\\"eJzVWtty4ygQ/ZVsXiZbtYksydf5laktFknEZiKBAshe79dvc7GClHF8kXAy\\\\nD66yQXBON4emG/nHfYTrOtoSVnARZQ0rShKJJttHydP8aRKtSSUjnCu6JYLk\\\\nXBSP0ArtJc1cM7LtUc4ZI9DCGcIFrhURMqq5VGtB5Gt5aHsS2ff5fPmdsrt/\\\\nsNyzHJF/SY5qLHAlv93/9Yl0spLnL3cPyV1JtqSUf95BoyHHOMpxviEX0ZNN\\\\nXXOh3vNzHVFBapiGsJwSGVEGZDS+JjT1+cC3moiKKgQW5Y0QhClUclxc5q2T\\\\ndNrZ830kN1gQdKATLxeGz56SskCmb2TsD1xhocfwwIh6WXTX53qRXMEJZ1IJ\\\\neMxntJgsjiq45Os+Jc3lUXOZGUyPWsUZVdzMmaQzMyc0Ib1PNwL6/vsk8+Zd\\\\nh//CpmECZFzRZ5pjzUUrEDg0FWEOP5ka+Lfmz3DCfGXX+FLbR5S9XYWbqv0I\\\\nlemqpdIogjArUF4SLG5HJyqwwhmWoCGFFdGqkJraynPSa0PE/lZaOUYodvvY\\\\nMAIJExFcvqe9FKeTW5M66ad5ctjlt2RjNGL3kgk1oUjACSqpVHDGGpx0YVXh\\\\nnO+eCgi4SlMLmAsCbg8AmPNGB+w3X8bz0JD6PKJsHfFa0QqMpbk9rgLDYqUE\\\\nzXTgq4ja8EJGBRVqb/QTx6HdjMsyw/mL2TRpmnRP5gG4pzNUH/kQ1kTDUNsR\\\\nEG+Z2OMXGUBr5HW41/g33HKCcAkEwqo2Tg2unn5UcJmdw+MCNTXE53HTio5D\\\\nk15tNQj5N5KsxNubCNb5N+SCdiWbrIID9kQ7m9hzRbv0jzFxtrikha1BDE4g\\\\nGEg8mMR5i5PGq+6eCI/oso8WcUfVBnlPwUDVCAZnq8nSmuCV/qnsMHGMPY4h\\\\nHZTEyS3hUlfa3XQZjslwdPXp4AjViLT3Gu5yrYuiP+beyfGBH2uIMVENGgAF\\\\nRDa6mNIz9cON7b9mnriXOLlS9vhMRpRei8k0u3MEUst1++ULcPMwDafl5H3U\\\\noQwxskMf0PsdbsvembpYthv6tIWfJY4vEEwv2GZnDT++32P/xuoic306j+nT\\\\n4in2jfY6zR0+EUADMj6Gs9Ig91UPfSGT3Ek8MMkdaK7T1qVWDkRdLQ+olx1d\\\\nA2Fjd6vSwdWfiheklG+DrCCR++1kephlNmmXjLKf0HH9VPHc3V+t+9PsuHgx\\\\nl4N2uH0C2VZzsL575/XMRfXLKcwefRsZW/o7gWv00bBjyLPDK6bOyI9XT9KC\\\\nvNBXsykSs2SuJaoFz9tkI/aug/V9zU+ejQwwnx598+MeHAxY0QIG7LAgUb7B\\\\nlFnh9epoyrb85dy4dsBqGH1tyCN4RRrceOYDI9utnQZDiIDA73Exkd3VfhBn\\\\nwlg5nQyxEtQm9o8CMk0GCUScuPBpGsyxsRbujZMjYSLJlzbpQqzURYNRIHrC\\\\nT3sBYyS1d1FSPyw9zP3tVVAJESXfDEYEfetCS+z9KzgAxMMV0DPGr7ofZkGM\\\\nEZiWJhGY9tbnAkWfmXfYoKozTx36axvMl8v2MBgXTRD9lwP3QrpXvI2P9om2\\\\nxZeCnCOGZLyo1tN07Gt6GkTTHcRkZhNMXdKMHW2STrRJg0Wbkq/XLndKQy1M\\\\nMjuamISJnK7kXZc8Gz1yJtPuhh/NAm8lJm3FPvIauxqhFqSG43lsz9jJw+y1\\\\nwzv5IGe704trQ5yN7Jp5WxIOnhdOgtL4w+6pnfZ0cfb/gE7P25e3xM8EqY0g\\\\nuPh2//f/50PJzg==\\\\n\\\",\\\"retried_at\\\":1571437462.206649}\"}},\"level\":\"error\",\"logger\":\"ruby\",\"message\":\"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \\\"index_patents_on_publication_number\\\"\\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\\n\",\"modules\":{\"rake\":\"12.3.3\",\"concurrent-ruby\":\"1.1.5\",\"i18n\":\"1.7.0\",\"minitest\":\"5.12.2\",\"thread_safe\":\"0.3.6\",\"tzinfo\":\"1.2.5\",\"zeitwerk\":\"2.2.0\",\"activesupport\":\"6.0.0\",\"builder\":\"3.2.3\",\"erubi\":\"1.9.0\",\"mini_portile2\":\"2.4.0\",\"nokogiri\":\"1.10.4\",\"rails-dom-testing\":\"2.0.3\",\"crass\":\"1.0.5\",\"loofah\":\"2.3.0\",\"rails-html-sanitizer\":\"1.3.0\",\"actionview\":\"6.0.0\",\"rack\":\"2.0.7\",\"rack-test\":\"1.1.0\",\"actionpack\":\"6.0.0\",\"nio4r\":\"2.5.2\",\"websocket-extensions\":\"0.1.4\",\"websocket-driver\":\"0.7.1\",\"actioncable\":\"6.0.0\",\"globalid\":\"0.4.2\",\"activejob\":\"6.0.0\",\"activemodel\":\"6.0.0\",\"activerecord\":\"6.0.0\",\"mimemagic\":\"0.3.3\",\"marcel\":\"0.3.3\",\"activestorage\":\"6.0.0\",\"mini_mime\":\"1.0.2\",\"mail\":\"2.7.1\",\"actionmailbox\":\"6.0.0\",\"actionmailer\":\"6.0.0\",\"actiontext\":\"6.0.0\",\"active_interaction\":\"3.7.1\",\"public_suffix\":\"4.0.1\",\"addressable\":\"2.7.0\",\"adroit-age\":\"2.0.0\",\"ancestry\":\"3.0.7\",\"attribute_normalizer\":\"1.2.0\",\"aws-eventstream\":\"1.0.3\",\"aws-partitions\":\"1.225.0\",\"aws-sigv4\":\"1.1.0\",\"jmespath\":\"1.4.0\",\"aws-sdk-core\":\"3.69.0\",\"aws-sdk-kms\":\"1.24.0\",\"aws-sdk-s3\":\"1.50.0\",\"bcrypt\":\"3.1.13\",\"bundler\":\"1.17.3\",\"method_source\":\"0.9.2\",\"thor\":\"0.20.3\",\"railties\":\"6.0.0\",\"sprockets\":\"4.0.0\",\"sprockets-rails\":\"3.2.1\",\"rails\":\"6.0.0\",\"boolean_timestamps\":\"1.0.2\",\"msgpack\":\"1.3.1\",\"bootsnap\":\"1.4.5\",\"chartkick\":\"3.2.1\",\"clockwork\":\"2.0.4\",\"deep_merge\":\"1.2.1\",\"dry-core\":\"0.4.9\",\"dry-configurable\":\"0.8.3\",\"dry-equalizer\":\"0.2.2\",\"dry-initializer\":\"3.0.1\",\"dry-logic\":\"1.0.3\",\"dry-container\":\"0.7.2\",\"dry-inflector\":\"0.2.0\",\"dry-types\":\"1.2.0\",\"dry-schema\":\"1.4.1\",\"config\":\"2.0.0\",\"connection_pool\":\"2.2.2\",\"i18n_data\":\"0.8.0\",\"sixarm_ruby_unaccent\":\"1.2.0\",\"unicode_utils\":\"1.4.0\",\"countries\":\"3.0.0\",\"default_value_for\":\"3.3.0\",\"descriptive-statistics\":\"2.2.0\",\"unf_ext\":\"0.0.7.6\",\"unf\":\"0.1.4\",\"domain_name\":\"0.5.20190701\",\"multi_json\":\"1.14.1\",\"elasticsearch-api\":\"7.3.0\",\"multipart-post\":\"2.1.1\",\"faraday\":\"0.17.0\",\"elasticsearch-transport\":\"7.3.0\",\"elasticsearch\":\"7.3.0\",\"email_prefixer\":\"1.2.0\",\"email_validator\":\"2.0.1\",\"enumerize\":\"2.3.1\",\"errbase\":\"0.1.1\",\"ffi\":\"1.11.1\",\"ethon\":\"0.12.0\",\"faker\":\"2.6.0\",\"fast_blank\":\"1.0.0\",\"fast_jsonapi\":\"1.5\",\"google-cloud-env\":\"1.2.1\",\"google-cloud-core\":\"1.3.2\",\"jwt\":\"2.2.1\",\"memoist\":\"0.16.0\",\"os\":\"1.0.1\",\"signet\":\"0.12.0\",\"googleauth\":\"0.9.0\",\"google-cloud-translate\":\"1.4.0\",\"groupdate\":\"4.1.2\",\"hashie\":\"3.6.0\",\"http-cookie\":\"1.0.3\",\"http-form_data\":\"2.1.1\",\"http_parser.rb\":\"0.6.0\",\"http\":\"4.1.1\",\"iso-639\":\"0.2.8\",\"iso_country_codes\":\"0.7.8\",\"libsqreen\":\"0.3.0.0.1\",\"request_store\":\"1.4.1\",\"lograge\":\"0.11.2\",\"mime-types-data\":\"3.2019.1009\",\"mime-types\":\"3.3\",\"net-http-digest_auth\":\"1.4.1\",\"net-http-persistent\":\"3.1.0\",\"ntlm-http\":\"0.1.1\",\"webrobots\":\"0.1.2\",\"mechanize\":\"2.7.6\",\"mobility\":\"0.8.8\",\"multi_xml\":\"0.6.0\",\"nokogiri-happymapper\":\"0.8.1\",\"oauth\":\"0.5.4\",\"oauth2\":\"1.4.2\",\"oj\":\"3.9.2\",\"pagy\":\"3.6.0\",\"pg\":\"1.1.4\",\"pg_query\":\"1.1.0\",\"pghero\":\"2.3.0\",\"puma\":\"4.2.1\",\"pundit\":\"2.1.0\",\"rack-protection\":\"2.0.7\",\"rack-proxy\":\"0.6.5\",\"rainbow\":\"3.0.0\",\"redis\":\"4.1.3\",\"retriable\":\"3.1.2\",\"roboto\":\"1.0.1\",\"rolify\":\"5.2.0\",\"rubyzip\":\"2.0.0\",\"safely_block\":\"0.2.2\",\"sassc\":\"2.2.1\",\"tilt\":\"2.0.10\",\"sassc-rails\":\"2.1.2\",\"sass-rails\":\"6.0.0\",\"searchjoy\":\"0.4.2\",\"searchkick\":\"4.1.0\",\"sentry-raven\":\"2.12.0\",\"sidekiq\":\"6.0.2\",\"sidekiq-bulk\":\"0.2.0\",\"sidekiq-oj\":\"0.2.0\",\"sidekiq-unique-jobs\":\"6.0.15\",\"sorcery\":\"0.14.0\",\"sq_mini_racer\":\"0.2.5.0.1.beta2\",\"sqreen\":\"1.18.0\",\"turbolinks-source\":\"5.2.0\",\"turbolinks\":\"5.2.1\",\"typhoeus\":\"1.3.1\",\"voight_kampff\":\"1.1.3\",\"webpacker\":\"4.0.7\"},\"platform\":\"ruby\",\"release\":\"194f1effbc1f6c7e284325ef97b102b3f6d839b2\",\"sdk\":{\"name\":\"raven-ruby\",\"version\":\"2.12.0\"},\"server_name\":\"worker_a.1\",\"tags\":{},\"timestamp\":\"2019-10-19T01:48:44\",\"transaction\":\"Sidekiq/PatentIngestWorker\",\"user\":{},\"exception\":{\"values\":[{\"type\":\"PG::UniqueViolation\",\"value\":\"ERROR: duplicate key value violates unique constraint \\\"index_patents_on_publication_number\\\"\\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\\n\",\"module\":\"PG\",\"stacktrace\":{\"frames\":[{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb\",\"function\":\"block in safe_thread\",\"lineno\":24,\"in_app\":false,\"pre_context\":[\" def safe_thread(name, &block)\\n\",\" Thread.new do\\n\",\" Thread.current.name = name\\n\"],\"context_line\":\" watchdog(name, &block)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/util.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb\",\"function\":\"watchdog\",\"lineno\":15,\"in_app\":false,\"pre_context\":[\" include ExceptionHandler\\n\",\"\\n\",\" def watchdog(last_words)\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" rescue Exception => ex\\n\",\" handle_exception(ex, {context: last_words})\\n\",\" raise ex\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/util.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"run\",\"lineno\":68,\"in_app\":false,\"pre_context\":[\" private unless $TESTING\\n\",\"\\n\",\" def run\\n\"],\"context_line\":\" process_one until @done\\n\",\"post_context\":[\" @mgr.processor_stopped(self)\\n\",\" rescue Sidekiq::Shutdown\\n\",\" @mgr.processor_stopped(self)\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"process_one\",\"lineno\":78,\"in_app\":false,\"pre_context\":[\"\\n\",\" def process_one\\n\",\" @job = fetch\\n\"],\"context_line\":\" process(@job) if @job\\n\",\"post_context\":[\" @job = nil\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"process\",\"lineno\":162,\"in_app\":false,\"pre_context\":[\"\\n\",\" ack = false\\n\",\" begin\\n\"],\"context_line\":\" dispatch(job_hash, queue, jobstr) do |worker|\\n\",\"post_context\":[\" Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\\n\",\" execute_job(worker, job_hash[\\\"args\\\"])\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"dispatch\",\"lineno\":123,\"in_app\":false,\"pre_context\":[\" # we pass original String of JSON to respected methods\\n\",\" # to re-parse it there if we need access to the original, untouched job\\n\",\"\\n\"],\"context_line\":\" @job_logger.prepare(job_hash) do\\n\",\"post_context\":[\" @retrier.global(jobstr, queue) do\\n\",\" @job_logger.call(job_hash, queue) do\\n\",\" stats(jobstr, queue) do\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb\",\"function\":\"prepare\",\"lineno\":33,\"in_app\":false,\"pre_context\":[\" Sidekiq::Context.with(job_hash_context(job_hash), &block)\\n\",\" end\\n\",\" else\\n\"],\"context_line\":\" Sidekiq::Context.with(job_hash_context(job_hash), &block)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/job_logger.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/logger.rb\",\"function\":\"with\",\"lineno\":10,\"in_app\":false,\"pre_context\":[\" module Context\\n\",\" def self.with(hash)\\n\",\" current.merge!(hash)\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" ensure\\n\",\" hash.each_key { |key| current.delete(key) }\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/logger.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block in dispatch\",\"lineno\":124,\"in_app\":false,\"pre_context\":[\" # to re-parse it there if we need access to the original, untouched job\\n\",\"\\n\",\" @job_logger.prepare(job_hash) do\\n\"],\"context_line\":\" @retrier.global(jobstr, queue) do\\n\",\"post_context\":[\" @job_logger.call(job_hash, queue) do\\n\",\" stats(jobstr, queue) do\\n\",\" # Rails 5 requires a Reloader to wrap code execution. In order to\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb\",\"function\":\"global\",\"lineno\":78,\"in_app\":false,\"pre_context\":[\" # We want to be able to retry as much as possible so we don't\\n\",\" # require the worker to be instantiated.\\n\",\" def global(jobstr, queue)\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" rescue Handled => ex\\n\",\" raise ex\\n\",\" rescue Sidekiq::Shutdown => ey\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/job_retry.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block (2 levels) in dispatch\",\"lineno\":125,\"in_app\":false,\"pre_context\":[\"\\n\",\" @job_logger.prepare(job_hash) do\\n\",\" @retrier.global(jobstr, queue) do\\n\"],\"context_line\":\" @job_logger.call(job_hash, queue) do\\n\",\"post_context\":[\" stats(jobstr, queue) do\\n\",\" # Rails 5 requires a Reloader to wrap code execution. In order to\\n\",\" # constantize the worker and instantiate an instance, we have to call\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb\",\"function\":\"call\",\"lineno\":13,\"in_app\":false,\"pre_context\":[\" start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)\\n\",\" @logger.info(\\\"start\\\")\\n\",\"\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\"\\n\",\" with_elapsed_time_context(start) do\\n\",\" @logger.info(\\\"done\\\")\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/job_logger.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block (3 levels) in dispatch\",\"lineno\":126,\"in_app\":false,\"pre_context\":[\" @job_logger.prepare(job_hash) do\\n\",\" @retrier.global(jobstr, queue) do\\n\",\" @job_logger.call(job_hash, queue) do\\n\"],\"context_line\":\" stats(jobstr, queue) do\\n\",\"post_context\":[\" # Rails 5 requires a Reloader to wrap code execution. In order to\\n\",\" # constantize the worker and instantiate an instance, we have to call\\n\",\" # the Reloader. It handles code loading, db connection management, etc.\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"stats\",\"lineno\":257,\"in_app\":false,\"pre_context\":[\" WORKER_STATE.set(tid, {queue: queue, payload: jobstr, run_at: Time.now.to_i})\\n\",\"\\n\",\" begin\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" rescue Exception\\n\",\" FAILURE.incr\\n\",\" raise\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block (4 levels) in dispatch\",\"lineno\":131,\"in_app\":false,\"pre_context\":[\" # constantize the worker and instantiate an instance, we have to call\\n\",\" # the Reloader. It handles code loading, db connection management, etc.\\n\",\" # Effectively this block denotes a \\\"unit of work\\\" to Rails.\\n\"],\"context_line\":\" @reloader.call do\\n\",\"post_context\":[\" klass = constantize(job_hash[\\\"class\\\"])\\n\",\" worker = klass.new\\n\",\" worker.jid = job_hash[\\\"jid\\\"]\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb\",\"function\":\"call\",\"lineno\":42,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def call\\n\"],\"context_line\":\" @app.reloader.wrap do\\n\",\"post_context\":[\" yield\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/rails.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb\",\"function\":\"wrap\",\"lineno\":71,\"in_app\":false,\"pre_context\":[\"\\n\",\" # Run the supplied block as a work unit, reloading code as needed\\n\",\" def self.wrap\\n\"],\"context_line\":\" executor.wrap do\\n\",\"post_context\":[\" super\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/reloader.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb\",\"function\":\"wrap\",\"lineno\":88,\"in_app\":false,\"pre_context\":[\"\\n\",\" instance = run!\\n\",\" begin\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" ensure\\n\",\" instance.complete!\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/execution_wrapper.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb\",\"function\":\"block in wrap\",\"lineno\":72,\"in_app\":false,\"pre_context\":[\" # Run the supplied block as a work unit, reloading code as needed\\n\",\" def self.wrap\\n\",\" executor.wrap do\\n\"],\"context_line\":\" super\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/reloader.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb\",\"function\":\"wrap\",\"lineno\":88,\"in_app\":false,\"pre_context\":[\"\\n\",\" instance = run!\\n\",\" begin\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" ensure\\n\",\" instance.complete!\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/execution_wrapper.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb\",\"function\":\"block in call\",\"lineno\":43,\"in_app\":false,\"pre_context\":[\"\\n\",\" def call\\n\",\" @app.reloader.wrap do\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/rails.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block (5 levels) in dispatch\",\"lineno\":135,\"in_app\":false,\"pre_context\":[\" klass = constantize(job_hash[\\\"class\\\"])\\n\",\" worker = klass.new\\n\",\" worker.jid = job_hash[\\\"jid\\\"]\\n\"],\"context_line\":\" @retrier.local(worker, jobstr, queue) do\\n\",\"post_context\":[\" yield worker\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb\",\"function\":\"local\",\"lineno\":111,\"in_app\":false,\"pre_context\":[\" # Skip exception is unwrapped within Sidekiq::Processor#process before\\n\",\" # calling the handle_exception handlers.\\n\",\" def local(worker, jobstr, queue)\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" rescue Handled => ex\\n\",\" raise ex\\n\",\" rescue Sidekiq::Shutdown => ey\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/job_retry.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block (6 levels) in dispatch\",\"lineno\":136,\"in_app\":false,\"pre_context\":[\" worker = klass.new\\n\",\" worker.jid = job_hash[\\\"jid\\\"]\\n\",\" @retrier.local(worker, jobstr, queue) do\\n\"],\"context_line\":\" yield worker\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block in process\",\"lineno\":163,\"in_app\":false,\"pre_context\":[\" ack = false\\n\",\" begin\\n\",\" dispatch(job_hash, queue, jobstr) do |worker|\\n\"],\"context_line\":\" Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\\n\",\"post_context\":[\" execute_job(worker, job_hash[\\\"args\\\"])\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb\",\"function\":\"invoke\",\"lineno\":143,\"in_app\":false,\"pre_context\":[\" chain.shift.call(*args, &traverse_chain)\\n\",\" end\\n\",\" end\\n\"],\"context_line\":\" traverse_chain.call\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/middleware/chain.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb\",\"function\":\"block in invoke\",\"lineno\":140,\"in_app\":false,\"pre_context\":[\" if chain.empty?\\n\",\" yield\\n\",\" else\\n\"],\"context_line\":\" chain.shift.call(*args, &traverse_chain)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\" traverse_chain.call\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/middleware/chain.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/integrations/sidekiq.rb\",\"function\":\"call\",\"lineno\":9,\"in_app\":false,\"pre_context\":[\" def call(_worker, job, queue)\\n\",\" Raven.context.transaction.push \\\"Sidekiq/\#{job['class']}\\\"\\n\",\" Raven.extra_context(:sidekiq => job.merge(\\\"queue\\\" => queue))\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" Context.clear!\\n\",\" BreadcrumbBuffer.clear!\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"raven/integrations/sidekiq.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb\",\"function\":\"block in invoke\",\"lineno\":140,\"in_app\":false,\"pre_context\":[\" if chain.empty?\\n\",\" yield\\n\",\" else\\n\"],\"context_line\":\" chain.shift.call(*args, &traverse_chain)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\" traverse_chain.call\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/middleware/chain.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-unique-jobs-6.0.15/lib/sidekiq_unique_jobs/server/middleware.rb\",\"function\":\"call\",\"lineno\":29,\"in_app\":false,\"pre_context\":[\" @worker_class = worker_class\\n\",\" @item = item\\n\",\" @queue = queue\\n\"],\"context_line\":\" return yield if unique_disabled?\\n\",\"post_context\":[\"\\n\",\" SidekiqUniqueJobs::Job.add_uniqueness(item)\\n\",\" SidekiqUniqueJobs.with_context(logging_context(self.class, item)) do\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq_unique_jobs/server/middleware.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb\",\"function\":\"block in invoke\",\"lineno\":138,\"in_app\":false,\"pre_context\":[\" chain = retrieve.dup\\n\",\" traverse_chain = lambda do\\n\",\" if chain.empty?\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" else\\n\",\" chain.shift.call(*args, &traverse_chain)\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/middleware/chain.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"block (2 levels) in process\",\"lineno\":164,\"in_app\":false,\"pre_context\":[\" begin\\n\",\" dispatch(job_hash, queue, jobstr) do |worker|\\n\",\" Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\\n\"],\"context_line\":\" execute_job(worker, job_hash[\\\"args\\\"])\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\" ack = true\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb\",\"function\":\"execute_job\",\"lineno\":196,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def execute_job(worker, cloned_args)\\n\"],\"context_line\":\" worker.perform(*cloned_args)\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" # Ruby doesn't provide atomic counters out of the box so we'll\\n\"],\"project_root\":\"/app\",\"filename\":\"sidekiq/processor.rb\"},{\"abs_path\":\"/app/app/workers/patent_ingest_worker.rb\",\"function\":\"perform\",\"lineno\":5,\"in_app\":true,\"pre_context\":[\" sidekiq_options queue: :patent_ingest\\n\",\"\\n\",\" def perform(type, request_id, xml)\\n\"],\"context_line\":\" wrap_perform do\\n\",\"post_context\":[\" Patent.ingest(type, request_id, xml)\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"app/workers/patent_ingest_worker.rb\"},{\"abs_path\":\"/app/app/workers/base_worker.rb\",\"function\":\"wrap_perform\",\"lineno\":10,\"in_app\":true,\"pre_context\":[\"\\n\",\" def wrap_perform(description = nil)\\n\",\" logger.info \\\"[\#{self.class.name}] Executing worker! \#{description}\\\".squish\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" end\\n\",\"end\\n\",null],\"project_root\":\"/app\",\"filename\":\"app/workers/base_worker.rb\"},{\"abs_path\":\"/app/app/workers/patent_ingest_worker.rb\",\"function\":\"block in perform\",\"lineno\":6,\"in_app\":true,\"pre_context\":[\"\\n\",\" def perform(type, request_id, xml)\\n\",\" wrap_perform do\\n\"],\"context_line\":\" Patent.ingest(type, request_id, xml)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"end\\n\"],\"project_root\":\"/app\",\"filename\":\"app/workers/patent_ingest_worker.rb\"},{\"abs_path\":\"/app/app/models/concerns/patent_concern/ingestable.rb\",\"function\":\"ingest\",\"lineno\":16,\"in_app\":true,\"pre_context\":[\" return\\n\",\" end\\n\",\"\\n\"],\"context_line\":\" run_injest(type, request_id, epo_patent)\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def parse_epo_xml(xml)\\n\"],\"project_root\":\"/app\",\"filename\":\"app/models/concerns/patent_concern/ingestable.rb\"},{\"abs_path\":\"/app/app/models/concerns/patent_concern/ingestable.rb\",\"function\":\"run_injest\",\"lineno\":50,\"in_app\":true,\"pre_context\":[\" if patent\\n\",\" Ingest::Patents::Update.run!(request.merge(patent: patent))\\n\",\" elsif epo_patent.create?\\n\"],\"context_line\":\" Ingest::Patents::Create.run!(request)\\n\",\"post_context\":[\" elsif epo_patent.delete? && patent\\n\",\" Ingest::Patents::Delete.run!(request.merge(patent: patent))\\n\",\" elsif epo_patent.amend? && patent.blank?\\n\"],\"project_root\":\"/app\",\"filename\":\"app/models/concerns/patent_concern/ingestable.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb\",\"function\":\"run!\",\"lineno\":133,\"in_app\":false,\"pre_context\":[\" #\\n\",\" # @raise (see Runnable#run!)\\n\",\" def run!(*args)\\n\"],\"context_line\":\" new(*args).send(:run!)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_interaction/concerns/runnable.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb\",\"function\":\"run!\",\"lineno\":98,\"in_app\":false,\"pre_context\":[\" #\\n\",\" # @raise [InvalidInteractionError] If there are validation errors.\\n\",\" def run!\\n\"],\"context_line\":\" run\\n\",\"post_context\":[\"\\n\",\" unless valid?\\n\",\" raise InvalidInteractionError, errors.full_messages.join(', ')\\n\"],\"project_root\":\"/app\",\"filename\":\"active_interaction/concerns/runnable.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb\",\"function\":\"run\",\"lineno\":77,\"in_app\":false,\"pre_context\":[\" def run # rubocop:disable MethodLength\\n\",\" self.result =\\n\",\" if valid?\\n\"],\"context_line\":\" run_callbacks(:execute) do\\n\",\"post_context\":[\" result_or_errors =\\n\",\" begin\\n\",\" execute\\n\"],\"project_root\":\"/app\",\"filename\":\"active_interaction/concerns/runnable.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb\",\"function\":\"run_callbacks\",\"lineno\":101,\"in_app\":false,\"pre_context\":[\" callbacks = __callbacks[kind.to_sym]\\n\",\"\\n\",\" if callbacks.empty?\\n\"],\"context_line\":\" yield if block_given?\\n\",\"post_context\":[\" else\\n\",\" env = Filters::Environment.new(self, false, nil)\\n\",\" next_sequence = callbacks.compile\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/active_interaction-3.7.1/lib/active_interaction/concerns/runnable.rb\",\"function\":\"block in run\",\"lineno\":80,\"in_app\":false,\"pre_context\":[\" run_callbacks(:execute) do\\n\",\" result_or_errors =\\n\",\" begin\\n\"],\"context_line\":\" execute\\n\",\"post_context\":[\" rescue Interrupt => interrupt\\n\",\" interrupt.errors\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_interaction/concerns/runnable.rb\"},{\"abs_path\":\"/app/app/interactions/ingest/patents/create.rb\",\"function\":\"execute\",\"lineno\":11,\"in_app\":true,\"pre_context\":[\" logger.info \\\"[Ingest::Patents::Create] [\#{type}] Inside `execute` for: \#{epo_patent}\\\"\\n\",\"\\n\",\" begin\\n\"],\"context_line\":\" transaction do\\n\",\"post_context\":[\" create_patent!\\n\",\" create_applicants!\\n\",\" create_inventors!\\n\"],\"project_root\":\"/app\",\"filename\":\"app/interactions/ingest/patents/create.rb\"},{\"abs_path\":\"/app/app/interactions/base_interaction.rb\",\"function\":\"transaction\",\"lineno\":7,\"in_app\":true,\"pre_context\":[\" end\\n\",\"\\n\",\" def transaction\\n\"],\"context_line\":\" ActiveRecord::Base.transaction { yield }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def transaction_rollback\\n\"],\"project_root\":\"/app\",\"filename\":\"app/interactions/base_interaction.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb\",\"function\":\"transaction\",\"lineno\":212,\"in_app\":false,\"pre_context\":[\" module ClassMethods\\n\",\" # See the ConnectionAdapters::DatabaseStatements#transaction API docs.\\n\",\" def transaction(options = {}, &block)\\n\"],\"context_line\":\" connection.transaction(options, &block)\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def before_commit(*args, &block) # :nodoc:\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/transactions.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb\",\"function\":\"transaction\",\"lineno\":277,\"in_app\":false,\"pre_context\":[\" end\\n\",\" yield\\n\",\" else\\n\"],\"context_line\":\" transaction_manager.within_new_transaction(isolation: isolation, joinable: joinable) { yield }\\n\",\"post_context\":[\" end\\n\",\" rescue ActiveRecord::Rollback\\n\",\" # rollbacks are silently swallowed\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/database_statements.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/transaction.rb\",\"function\":\"within_new_transaction\",\"lineno\":278,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def within_new_transaction(options = {})\\n\"],\"context_line\":\" @connection.lock.synchronize do\\n\",\"post_context\":[\" transaction = begin_transaction options\\n\",\" yield\\n\",\" rescue Exception => error\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/transaction.rb\"},{\"abs_path\":\"/app/vendor/ruby-2.6.5/lib/ruby/2.6.0/monitor.rb\",\"function\":\"mon_synchronize\",\"lineno\":235,\"in_app\":false,\"pre_context\":[\" # it may break locking state.\\n\",\" Thread.handle_interrupt(EXCEPTION_NEVER){ mon_enter }\\n\",\" begin\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" ensure\\n\",\" Thread.handle_interrupt(EXCEPTION_NEVER){ mon_exit }\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"monitor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/transaction.rb\",\"function\":\"block in within_new_transaction\",\"lineno\":280,\"in_app\":false,\"pre_context\":[\" def within_new_transaction(options = {})\\n\",\" @connection.lock.synchronize do\\n\",\" transaction = begin_transaction options\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" rescue Exception => error\\n\",\" if transaction\\n\",\" rollback_transaction\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/transaction.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb\",\"function\":\"block in transaction\",\"lineno\":277,\"in_app\":false,\"pre_context\":[\" end\\n\",\" yield\\n\",\" else\\n\"],\"context_line\":\" transaction_manager.within_new_transaction(isolation: isolation, joinable: joinable) { yield }\\n\",\"post_context\":[\" end\\n\",\" rescue ActiveRecord::Rollback\\n\",\" # rollbacks are silently swallowed\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/database_statements.rb\"},{\"abs_path\":\"/app/app/interactions/base_interaction.rb\",\"function\":\"block in transaction\",\"lineno\":7,\"in_app\":true,\"pre_context\":[\" end\\n\",\"\\n\",\" def transaction\\n\"],\"context_line\":\" ActiveRecord::Base.transaction { yield }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def transaction_rollback\\n\"],\"project_root\":\"/app\",\"filename\":\"app/interactions/base_interaction.rb\"},{\"abs_path\":\"/app/app/interactions/ingest/patents/create.rb\",\"function\":\"block in execute\",\"lineno\":12,\"in_app\":true,\"pre_context\":[\"\\n\",\" begin\\n\",\" transaction do\\n\"],\"context_line\":\" create_patent!\\n\",\"post_context\":[\" create_applicants!\\n\",\" create_inventors!\\n\",\" create_citations!\\n\"],\"project_root\":\"/app\",\"filename\":\"app/interactions/ingest/patents/create.rb\"},{\"abs_path\":\"/app/app/interactions/ingest/patents/create.rb\",\"function\":\"create_patent!\",\"lineno\":63,\"in_app\":true,\"pre_context\":[\" Mobility.with_locale(epo_patent.title.lang) { @patent.title = epo_patent.title.content } if epo_patent.title\\n\",\" Mobility.with_locale(epo_patent.abstract.lang) { @patent.abstract = epo_patent.abstract.content } if epo_patent.abstract\\n\",\"\\n\"],\"context_line\":\" @patent.save!\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def create_classifications!\\n\"],\"project_root\":\"/app\",\"filename\":\"app/interactions/ingest/patents/create.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/suppressor.rb\",\"function\":\"save!\",\"lineno\":48,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def save!(*) # :nodoc:\\n\"],\"context_line\":\" SuppressorRegistry.suppressed[self.class.name] ? true : super\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/suppressor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb\",\"function\":\"save!\",\"lineno\":319,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def save!(*) #:nodoc:\\n\"],\"context_line\":\" with_transaction_returning_status { super }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def touch(*) #:nodoc:\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/transactions.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb\",\"function\":\"with_transaction_returning_status\",\"lineno\":366,\"in_app\":false,\"pre_context\":[\" # instance.\\n\",\" def with_transaction_returning_status\\n\",\" status = nil\\n\"],\"context_line\":\" self.class.transaction do\\n\",\"post_context\":[\" if has_transactional_callbacks?\\n\",\" add_to_transaction\\n\",\" else\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/transactions.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb\",\"function\":\"transaction\",\"lineno\":212,\"in_app\":false,\"pre_context\":[\" module ClassMethods\\n\",\" # See the ConnectionAdapters::DatabaseStatements#transaction API docs.\\n\",\" def transaction(options = {}, &block)\\n\"],\"context_line\":\" connection.transaction(options, &block)\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def before_commit(*args, &block) # :nodoc:\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/transactions.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb\",\"function\":\"transaction\",\"lineno\":275,\"in_app\":false,\"pre_context\":[\" if isolation\\n\",\" raise ActiveRecord::TransactionIsolationError, \\\"cannot set isolation when joining a transaction\\\"\\n\",\" end\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" else\\n\",\" transaction_manager.within_new_transaction(isolation: isolation, joinable: joinable) { yield }\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/database_statements.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb\",\"function\":\"block in with_transaction_returning_status\",\"lineno\":375,\"in_app\":false,\"pre_context\":[\" end\\n\",\" remember_transaction_record_state\\n\",\"\\n\"],\"context_line\":\" status = yield\\n\",\"post_context\":[\" raise ActiveRecord::Rollback unless status\\n\",\" end\\n\",\" status\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/transactions.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/transactions.rb\",\"function\":\"block in save!\",\"lineno\":319,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def save!(*) #:nodoc:\\n\"],\"context_line\":\" with_transaction_returning_status { super }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def touch(*) #:nodoc:\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/transactions.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/validations.rb\",\"function\":\"save!\",\"lineno\":53,\"in_app\":false,\"pre_context\":[\" # Attempts to save the record just like {ActiveRecord::Base#save}[rdoc-ref:Base#save] but\\n\",\" # will raise an ActiveRecord::RecordInvalid exception instead of returning +false+ if the record is not valid.\\n\",\" def save!(options = {})\\n\"],\"context_line\":\" perform_validations(options) ? super : raise_validation_error\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" # Runs all the validations within the specified context. Returns +true+ if\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/validations.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb\",\"function\":\"save!\",\"lineno\":503,\"in_app\":false,\"pre_context\":[\" #\\n\",\" # Unless an error is raised, returns true.\\n\",\" def save!(*args, &block)\\n\"],\"context_line\":\" create_or_update(*args, &block) || raise(RecordNotSaved.new(\\\"Failed to save the record\\\", self))\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" # Deletes the record in the database and freezes this instance to\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/persistence.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/timestamp.rb\",\"function\":\"create_or_update\",\"lineno\":129,\"in_app\":false,\"pre_context\":[\"\\n\",\" def create_or_update(touch: true, **)\\n\",\" @_touch_record = touch\\n\"],\"context_line\":\" super\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def should_record_timestamps?\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/timestamp.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb\",\"function\":\"create_or_update\",\"lineno\":328,\"in_app\":false,\"pre_context\":[\" private\\n\",\"\\n\",\" def create_or_update(**)\\n\"],\"context_line\":\" _run_save_callbacks { super }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def _create_record\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb\",\"function\":\"_run_save_callbacks\",\"lineno\":827,\"in_app\":false,\"pre_context\":[\"\\n\",\" module_eval <<-RUBY, __FILE__, __LINE__ + 1\\n\",\" def _run_\#{name}_callbacks(&block)\\n\"],\"context_line\":\" run_callbacks \#{name.inspect}, &block\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def self._\#{name}_callbacks\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb\",\"function\":\"run_callbacks\",\"lineno\":135,\"in_app\":false,\"pre_context\":[\" # Common case: no 'around' callbacks defined\\n\",\" if next_sequence.final?\\n\",\" next_sequence.invoke_before(env)\\n\"],\"context_line\":\" env.value = !env.halted && (!block_given? || yield)\\n\",\"post_context\":[\" next_sequence.invoke_after(env)\\n\",\" env.value\\n\",\" else\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb\",\"function\":\"block in create_or_update\",\"lineno\":328,\"in_app\":false,\"pre_context\":[\" private\\n\",\"\\n\",\" def create_or_update(**)\\n\"],\"context_line\":\" _run_save_callbacks { super }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def _create_record\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb\",\"function\":\"create_or_update\",\"lineno\":906,\"in_app\":false,\"pre_context\":[\" def create_or_update(**, &block)\\n\",\" _raise_readonly_record_error if readonly?\\n\",\" return false if destroyed?\\n\"],\"context_line\":\" result = new_record? ? _create_record(&block) : _update_record(&block)\\n\",\"post_context\":[\" result != false\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/persistence.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/timestamp.rb\",\"function\":\"_create_record\",\"lineno\":111,\"in_app\":false,\"pre_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"context_line\":\" super\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def _update_record\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/timestamp.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb\",\"function\":\"_create_record\",\"lineno\":332,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def _create_record\\n\"],\"context_line\":\" _run_create_callbacks { super }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def _update_record\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb\",\"function\":\"_run_create_callbacks\",\"lineno\":827,\"in_app\":false,\"pre_context\":[\"\\n\",\" module_eval <<-RUBY, __FILE__, __LINE__ + 1\\n\",\" def _run_\#{name}_callbacks(&block)\\n\"],\"context_line\":\" run_callbacks \#{name.inspect}, &block\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def self._\#{name}_callbacks\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/callbacks.rb\",\"function\":\"run_callbacks\",\"lineno\":135,\"in_app\":false,\"pre_context\":[\" # Common case: no 'around' callbacks defined\\n\",\" if next_sequence.final?\\n\",\" next_sequence.invoke_before(env)\\n\"],\"context_line\":\" env.value = !env.halted && (!block_given? || yield)\\n\",\"post_context\":[\" next_sequence.invoke_after(env)\\n\",\" env.value\\n\",\" else\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/callbacks.rb\",\"function\":\"block in _create_record\",\"lineno\":332,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def _create_record\\n\"],\"context_line\":\" _run_create_callbacks { super }\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def _update_record\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/callbacks.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/attribute_methods/dirty.rb\",\"function\":\"_create_record\",\"lineno\":211,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def _create_record(attribute_names = attribute_names_for_partial_writes)\\n\"],\"context_line\":\" id = super\\n\",\"post_context\":[\" changes_applied\\n\",\" id\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/attribute_methods/dirty.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/locking/optimistic.rb\",\"function\":\"_create_record\",\"lineno\":70,\"in_app\":false,\"pre_context\":[\" # a change from the default, since the database might have no default\\n\",\" attribute_names |= [self.class.locking_column]\\n\",\" end\\n\"],\"context_line\":\" super\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def _touch_row(attribute_names, time)\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/locking/optimistic.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/counter_cache.rb\",\"function\":\"_create_record\",\"lineno\":163,\"in_app\":false,\"pre_context\":[\"\\n\",\" private\\n\",\" def _create_record(attribute_names = self.attribute_names)\\n\"],\"context_line\":\" id = super\\n\",\"post_context\":[\"\\n\",\" each_counter_cached_associations do |association|\\n\",\" association.increment_counters\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/counter_cache.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb\",\"function\":\"_create_record\",\"lineno\":933,\"in_app\":false,\"pre_context\":[\" def _create_record(attribute_names = self.attribute_names)\\n\",\" attribute_names = attributes_for_create(attribute_names)\\n\",\"\\n\"],\"context_line\":\" new_id = self.class._insert_record(\\n\",\"post_context\":[\" attributes_with_values(attribute_names)\\n\",\" )\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/persistence.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/persistence.rb\",\"function\":\"_insert_record\",\"lineno\":375,\"in_app\":false,\"pre_context\":[\" im = arel_table.compile_insert(_substitute_values(values))\\n\",\" end\\n\",\"\\n\"],\"context_line\":\" connection.insert(im, \\\"\#{self} Create\\\", primary_key || false, primary_key_value)\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" def _update_record(values, constraints) # :nodoc:\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/persistence.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/query_cache.rb\",\"function\":\"insert\",\"lineno\":22,\"in_app\":false,\"pre_context\":[\" base.class_eval <<-end_code, __FILE__, __LINE__ + 1\\n\",\" def \#{method_name}(*)\\n\",\" ActiveRecord::Base.clear_query_caches_for_current_thread if @query_cache_enabled\\n\"],\"context_line\":\" super\\n\",\"post_context\":[\" end\\n\",\" end_code\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/query_cache.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb\",\"function\":\"insert\",\"lineno\":162,\"in_app\":false,\"pre_context\":[\" # passed in as +id_value+.\\n\",\" def insert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])\\n\",\" sql, binds = to_sql_and_binds(arel, binds)\\n\"],\"context_line\":\" value = exec_insert(sql, name, binds, pk, sequence_name)\\n\",\"post_context\":[\" id_value || last_inserted_id(value)\\n\",\" end\\n\",\" alias create insert\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/database_statements.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb\",\"function\":\"exec_insert\",\"lineno\":130,\"in_app\":false,\"pre_context\":[\"\\n\",\" def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil)\\n\",\" if use_insert_returning? || pk == false\\n\"],\"context_line\":\" super\\n\",\"post_context\":[\" else\\n\",\" result = exec_query(sql, name, binds)\\n\",\" unless sequence_name\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/postgresql/database_statements.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb\",\"function\":\"exec_insert\",\"lineno\":135,\"in_app\":false,\"pre_context\":[\" # the executed +sql+ statement.\\n\",\" def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil)\\n\",\" sql, binds = sql_for_insert(sql, pk, binds)\\n\"],\"context_line\":\" exec_query(sql, name, binds)\\n\",\"post_context\":[\" end\\n\",\"\\n\",\" # Executes delete +sql+ statement in the context of this connection using\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract/database_statements.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb\",\"function\":\"exec_query\",\"lineno\":96,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def exec_query(sql, name = \\\"SQL\\\", binds = [], prepare: false)\\n\"],\"context_line\":\" execute_and_clear(sql, name, binds, prepare: prepare) do |result|\\n\",\"post_context\":[\" types = {}\\n\",\" fields = result.fields\\n\",\" fields.each_with_index do |fname, i|\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/postgresql/database_statements.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb\",\"function\":\"execute_and_clear\",\"lineno\":649,\"in_app\":false,\"pre_context\":[\" if without_prepared_statement?(binds)\\n\",\" result = exec_no_cache(sql, name, [])\\n\",\" elsif !prepare\\n\"],\"context_line\":\" result = exec_no_cache(sql, name, binds)\\n\",\"post_context\":[\" else\\n\",\" result = exec_cache(sql, name, binds)\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/postgresql_adapter.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb\",\"function\":\"exec_no_cache\",\"lineno\":666,\"in_app\":false,\"pre_context\":[\" update_typemap_for_default_timezone\\n\",\"\\n\",\" type_casted_binds = type_casted_binds(binds)\\n\"],\"context_line\":\" log(sql, name, binds, type_casted_binds) do\\n\",\"post_context\":[\" ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\\n\",\" @connection.exec_params(sql, type_casted_binds)\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/postgresql_adapter.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract_adapter.rb\",\"function\":\"log\",\"lineno\":697,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def log(sql, name = \\\"SQL\\\", binds = [], type_casted_binds = [], statement_name = nil) # :doc:\\n\"],\"context_line\":\" @instrumenter.instrument(\\n\",\"post_context\":[\" \\\"sql.active_record\\\",\\n\",\" sql: sql,\\n\",\" name: name,\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract_adapter.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/notifications/instrumenter.rb\",\"function\":\"instrument\",\"lineno\":24,\"in_app\":false,\"pre_context\":[\" # some of the listeners might have state\\n\",\" listeners_state = start name, payload\\n\",\" begin\\n\"],\"context_line\":\" yield payload if block_given?\\n\",\"post_context\":[\" rescue Exception => e\\n\",\" payload[:exception] = [e.class.name, e.message]\\n\",\" payload[:exception_object] = e\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/notifications/instrumenter.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract_adapter.rb\",\"function\":\"block in log\",\"lineno\":706,\"in_app\":false,\"pre_context\":[\" statement_name: statement_name,\\n\",\" connection_id: object_id,\\n\",\" connection: self) do\\n\"],\"context_line\":\" @lock.synchronize do\\n\",\"post_context\":[\" yield\\n\",\" end\\n\",\" rescue => e\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract_adapter.rb\"},{\"abs_path\":\"/app/vendor/ruby-2.6.5/lib/ruby/2.6.0/monitor.rb\",\"function\":\"mon_synchronize\",\"lineno\":235,\"in_app\":false,\"pre_context\":[\" # it may break locking state.\\n\",\" Thread.handle_interrupt(EXCEPTION_NEVER){ mon_enter }\\n\",\" begin\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" ensure\\n\",\" Thread.handle_interrupt(EXCEPTION_NEVER){ mon_exit }\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"monitor.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/abstract_adapter.rb\",\"function\":\"block (2 levels) in log\",\"lineno\":707,\"in_app\":false,\"pre_context\":[\" connection_id: object_id,\\n\",\" connection: self) do\\n\",\" @lock.synchronize do\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" end\\n\",\" rescue => e\\n\",\" raise translate_exception_class(e, sql, binds)\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/abstract_adapter.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb\",\"function\":\"block in exec_no_cache\",\"lineno\":667,\"in_app\":false,\"pre_context\":[\"\\n\",\" type_casted_binds = type_casted_binds(binds)\\n\",\" log(sql, name, binds, type_casted_binds) do\\n\"],\"context_line\":\" ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\\n\",\"post_context\":[\" @connection.exec_params(sql, type_casted_binds)\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/postgresql_adapter.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies/interlock.rb\",\"function\":\"permit_concurrent_loads\",\"lineno\":47,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" def permit_concurrent_loads\\n\"],\"context_line\":\" @lock.yield_shares(compatible: [:load]) do\\n\",\"post_context\":[\" yield\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/dependencies/interlock.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/concurrency/share_lock.rb\",\"function\":\"yield_shares\",\"lineno\":187,\"in_app\":false,\"pre_context\":[\" end\\n\",\"\\n\",\" begin\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" ensure\\n\",\" synchronize do\\n\",\" wait_for(:yield_shares) { @exclusive_thread && @exclusive_thread != Thread.current }\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/concurrency/share_lock.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies/interlock.rb\",\"function\":\"block in permit_concurrent_loads\",\"lineno\":48,\"in_app\":false,\"pre_context\":[\"\\n\",\" def permit_concurrent_loads\\n\",\" @lock.yield_shares(compatible: [:load]) do\\n\"],\"context_line\":\" yield\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\"\\n\"],\"project_root\":\"/app\",\"filename\":\"active_support/dependencies/interlock.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb\",\"function\":\"block (2 levels) in exec_no_cache\",\"lineno\":668,\"in_app\":false,\"pre_context\":[\" type_casted_binds = type_casted_binds(binds)\\n\",\" log(sql, name, binds, type_casted_binds) do\\n\",\" ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\\n\"],\"context_line\":\" @connection.exec_params(sql, type_casted_binds)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/postgresql_adapter.rb\"},{\"abs_path\":\"/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb\",\"function\":\"async_exec_params\",\"lineno\":668,\"in_app\":false,\"pre_context\":[\" type_casted_binds = type_casted_binds(binds)\\n\",\" log(sql, name, binds, type_casted_binds) do\\n\",\" ActiveSupport::Dependencies.interlock.permit_concurrent_loads do\\n\"],\"context_line\":\" @connection.exec_params(sql, type_casted_binds)\\n\",\"post_context\":[\" end\\n\",\" end\\n\",\" end\\n\"],\"project_root\":\"/app\",\"filename\":\"active_record/connection_adapters/postgresql_adapter.rb\"}]}},{\"type\":\"ActiveRecord::RecordNotUnique\",\"value\":\"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \\\"index_patents_on_publication_number\\\"\\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\\n\",\"module\":\"ActiveRecord\",\"stacktrace\":null}]},\"logentry\":{\"params\":null,\"message\":\"PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \\\"index_patents_on_publication_number\\\"\\nDETAIL: Key (publication_number)=(AU2003206825B8) already exists.\\n\"}}],\"retry\":true,\"queue\":\"default\",\"backtrace\":true,\"jid\":\"dc592e52309f3e00e300924a\",\"created_at\":1571449724.19329,\"enqueued_at\":1571459752.233215,\"error_message\":\"undefined method `[]' for nil:NilClass\",\"error_class\":\"NoMethodError\",\"failed_at\":1571449728.058785,\"retry_count\":1,\"error_backtrace\":\"eJzNl+1u2jAUhm8F9c82aWDikJT2VqbJc5JD8DBxeuJAe/c7ttMuIKGCcLT9\\nQAp2/D4+n3Z+PDDZtuwATWWQFX1TaWDYF2+ML/LFktWw71gHjcW3OUp6bc4X\\nCacJrQrmB1ipFc0vsHhep8+qmf2qwYo9dJ2sQWzQ7AW8ltBaZZovD9+j8p4+\\neNrU78zIkCTJPGUjlYZK0LIqMiFdeYBTFkBTNoq+ajormxK8o5JPCE567qSz\\noPCXtDF4lFjJQnslni4vSbnf0eAO8H1rIvx16x79qhaQ9PbX2qcq2KmXOQ0s\\nuN/XMMJaNCUF23jp5Cn34vAKZW9B/DZFZEAeAlRoU+5mX/lMk+G6+zajweHF\\nu4F7VdEC8jSwcitV47npesSlJ9UczO7q/B5YfaNeepiTVzrPTbIxWIRp5zQX\\nNTwAjvbiIx6KrJRaT2PlanmPlZ/UgIUapWs9H9tyzP/bpBtZoelGQpwlfnpq\\nR6xsP6Wk+bi88nF5VaprpS23dxMpvwUCpUpo6aEfElDenwFnxmRjY7JJjEE6\\nijpHW53F54aMlqVVB+j6tjVoPSMUThgXwwQLTZXqRxyRREMzX4e+5Ebi0hC0\\nkdVwYvBT2+LT/qFtya2Qa5KBx+tqZzmdjHN6NUlOnxB5Fu4LdIOxsbsNP+k2\\n6WTdhm6kNQz+myowPLt4MZmmcz6G6qi1KaJ3Tr46LfhoFowiEc7lo7KxY5yG\\nGLcILR3PsT0TxKeptSTnw9YnONuHfBnGhGkiuyYP+thf/Wl5UZdOAu39EWrq\\n6DxdmTqa7nl6d3IDwm4RJH1P/vwDeE9JnQ==\\n\",\"retried_at\":1571456409.89409}"}}, "level"=>"error", "logger"=>"ruby", "message"=>"undefined method `[]' for nil:NilClass", "modules"=>{"rake"=>"12.3.3", "concurrent-ruby"=>"1.1.5", "i18n"=>"1.7.0", "minitest"=>"5.12.2", "thread_safe"=>"0.3.6", "tzinfo"=>"1.2.5", "zeitwerk"=>"2.2.0", "activesupport"=>"6.0.0", "builder"=>"3.2.3", "erubi"=>"1.9.0", "mini_portile2"=>"2.4.0", "nokogiri"=>"1.10.4", "rails-dom-testing"=>"2.0.3", "crass"=>"1.0.5", "loofah"=>"2.3.0", "rails-html-sanitizer"=>"1.3.0", "actionview"=>"6.0.0", "rack"=>"2.0.7", "rack-test"=>"1.1.0", "actionpack"=>"6.0.0", "nio4r"=>"2.5.2", "websocket-extensions"=>"0.1.4", "websocket-driver"=>"0.7.1", "actioncable"=>"6.0.0", "globalid"=>"0.4.2", "activejob"=>"6.0.0", "activemodel"=>"6.0.0", "activerecord"=>"6.0.0", "mimemagic"=>"0.3.3", "marcel"=>"0.3.3", "activestorage"=>"6.0.0", "mini_mime"=>"1.0.2", "mail"=>"2.7.1", "actionmailbox"=>"6.0.0", "actionmailer"=>"6.0.0", "actiontext"=>"6.0.0", "active_interaction"=>"3.7.1", "public_suffix"=>"4.0.1", "addressable"=>"2.7.0", "adroit-age"=>"2.0.0", "ancestry"=>"3.0.7", "attribute_normalizer"=>"1.2.0", "aws-eventstream"=>"1.0.3", "aws-partitions"=>"1.225.0", "aws-sigv4"=>"1.1.0", "jmespath"=>"1.4.0", "aws-sdk-core"=>"3.69.0", "aws-sdk-kms"=>"1.24.0", "aws-sdk-s3"=>"1.50.0", "bcrypt"=>"3.1.13", "bundler"=>"1.17.3", "method_source"=>"0.9.2", "thor"=>"0.20.3", "railties"=>"6.0.0", "sprockets"=>"4.0.0", "sprockets-rails"=>"3.2.1", "rails"=>"6.0.0", "boolean_timestamps"=>"1.0.2", "msgpack"=>"1.3.1", "bootsnap"=>"1.4.5", "chartkick"=>"3.2.1", "clockwork"=>"2.0.4", "deep_merge"=>"1.2.1", "dry-core"=>"0.4.9", "dry-configurable"=>"0.8.3", "dry-equalizer"=>"0.2.2", "dry-initializer"=>"3.0.1", "dry-logic"=>"1.0.3", "dry-container"=>"0.7.2", "dry-inflector"=>"0.2.0", "dry-types"=>"1.2.0", "dry-schema"=>"1.4.1", "config"=>"2.0.0", "connection_pool"=>"2.2.2", "i18n_data"=>"0.8.0", "sixarm_ruby_unaccent"=>"1.2.0", "unicode_utils"=>"1.4.0", "countries"=>"3.0.0", "default_value_for"=>"3.3.0", "descriptive-statistics"=>"2.2.0", "unf_ext"=>"0.0.7.6", "unf"=>"0.1.4", "domain_name"=>"0.5.20190701", "multi_json"=>"1.14.1", "elasticsearch-api"=>"7.3.0", "multipart-post"=>"2.1.1", "faraday"=>"0.17.0", "elasticsearch-transport"=>"7.3.0", "elasticsearch"=>"7.3.0", "email_prefixer"=>"1.2.0", "email_validator"=>"2.0.1", "enumerize"=>"2.3.1", "errbase"=>"0.1.1", "ffi"=>"1.11.1", "ethon"=>"0.12.0", "faker"=>"2.6.0", "fast_blank"=>"1.0.0", "fast_jsonapi"=>"1.5", "google-cloud-env"=>"1.2.1", "google-cloud-core"=>"1.3.2", "jwt"=>"2.2.1", "memoist"=>"0.16.0", "os"=>"1.0.1", "signet"=>"0.12.0", "googleauth"=>"0.9.0", "google-cloud-translate"=>"1.4.0", "groupdate"=>"4.1.2", "hashie"=>"3.6.0", "http-cookie"=>"1.0.3", "http-form_data"=>"2.1.1", "http_parser.rb"=>"0.6.0", "http"=>"4.1.1", "iso-639"=>"0.2.8", "iso_country_codes"=>"0.7.8", "libsqreen"=>"0.3.0.0.1", "request_store"=>"1.4.1", "lograge"=>"0.11.2", "mime-types-data"=>"3.2019.1009", "mime-types"=>"3.3", "net-http-digest_auth"=>"1.4.1", "net-http-persistent"=>"3.1.0", "ntlm-http"=>"0.1.1", "webrobots"=>"0.1.2", "mechanize"=>"2.7.6", "mobility"=>"0.8.8", "multi_xml"=>"0.6.0", "nokogiri-happymapper"=>"0.8.1", "oauth"=>"0.5.4", "oauth2"=>"1.4.2", "oj"=>"3.9.2", "pagy"=>"3.6.0", "pg"=>"1.1.4", "pg_query"=>"1.1.0", "pghero"=>"2.3.0", "puma"=>"4.2.1", "pundit"=>"2.1.0", "rack-protection"=>"2.0.7", "rack-proxy"=>"0.6.5", "rainbow"=>"3.0.0", "redis"=>"4.1.3", "retriable"=>"3.1.2", "roboto"=>"1.0.1", "rolify"=>"5.2.0", "rubyzip"=>"2.0.0", "safely_block"=>"0.2.2", "sassc"=>"2.2.1", "tilt"=>"2.0.10", "sassc-rails"=>"2.1.2", "sass-rails"=>"6.0.0", "searchjoy"=>"0.4.2", "searchkick"=>"4.1.0", "sentry-raven"=>"2.12.0", "sidekiq"=>"6.0.2", "sidekiq-bulk"=>"0.2.0", "sidekiq-oj"=>"0.2.0", "sidekiq-unique-jobs"=>"6.0.15", "sorcery"=>"0.14.0", "sq_mini_racer"=>"0.2.5.0.1.beta2", "sqreen"=>"1.18.0", "turbolinks-source"=>"5.2.0", "turbolinks"=>"5.2.1", "typhoeus"=>"1.3.1", "voight_kampff"=>"1.1.3", "webpacker"=>"4.0.7"}, "platform"=>"ruby", "release"=>"194f1effbc1f6c7e284325ef97b102b3f6d839b2", "sdk"=>{"name"=>"raven-ruby", "version"=>"2.12.0"}, "server_name"=>"worker_a.1", "tags"=>{}, "timestamp"=>"2019-10-19T04:35:58", "transaction"=>"Sidekiq/SentryWorker", "user"=>{}, "exception"=>{"values"=>[{"type"=>"NoMethodError", "value"=>"undefined method `[]' for nil:NilClass", "module"=>"", "stacktrace"=>{"frames"=>[{"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb", "function"=>"block in safe_thread", "lineno"=>24, "in_app"=>false, "pre_context"=>[" def safe_thread(name, &block)\n", " Thread.new do\n", " Thread.current.name = name\n"], "context_line"=>" watchdog(name, &block)\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/util.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/util.rb", "function"=>"watchdog", "lineno"=>15, "in_app"=>false, "pre_context"=>[" include ExceptionHandler\n", "\n", " def watchdog(last_words)\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Exception => ex\n", " handle_exception(ex, {context: last_words})\n", " raise ex\n"], "project_root"=>"/app", "filename"=>"sidekiq/util.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"run", "lineno"=>68, "in_app"=>false, "pre_context"=>[" private unless $TESTING\n", "\n", " def run\n"], "context_line"=>" process_one until @done\n", "post_context"=>[" @mgr.processor_stopped(self)\n", " rescue Sidekiq::Shutdown\n", " @mgr.processor_stopped(self)\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"process_one", "lineno"=>78, "in_app"=>false, "pre_context"=>["\n", " def process_one\n", " @job = fetch\n"], "context_line"=>" process(@job) if @job\n", "post_context"=>[" @job = nil\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"process", "lineno"=>162, "in_app"=>false, "pre_context"=>["\n", " ack = false\n", " begin\n"], "context_line"=>" dispatch(job_hash, queue, jobstr) do |worker|\n", "post_context"=>[" Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\n", " execute_job(worker, job_hash[\"args\"])\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"dispatch", "lineno"=>123, "in_app"=>false, "pre_context"=>[" # we pass original String of JSON to respected methods\n", " # to re-parse it there if we need access to the original, untouched job\n", "\n"], "context_line"=>" @job_logger.prepare(job_hash) do\n", "post_context"=>[" @retrier.global(jobstr, queue) do\n", " @job_logger.call(job_hash, queue) do\n", " stats(jobstr, queue) do\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb", "function"=>"prepare", "lineno"=>33, "in_app"=>false, "pre_context"=>[" Sidekiq::Context.with(job_hash_context(job_hash), &block)\n", " end\n", " else\n"], "context_line"=>" Sidekiq::Context.with(job_hash_context(job_hash), &block)\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_logger.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/logger.rb", "function"=>"with", "lineno"=>10, "in_app"=>false, "pre_context"=>[" module Context\n", " def self.with(hash)\n", " current.merge!(hash)\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " hash.each_key { |key| current.delete(key) }\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/logger.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block in dispatch", "lineno"=>124, "in_app"=>false, "pre_context"=>[" # to re-parse it there if we need access to the original, untouched job\n", "\n", " @job_logger.prepare(job_hash) do\n"], "context_line"=>" @retrier.global(jobstr, queue) do\n", "post_context"=>[" @job_logger.call(job_hash, queue) do\n", " stats(jobstr, queue) do\n", " # Rails 5 requires a Reloader to wrap code execution. In order to\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb", "function"=>"global", "lineno"=>78, "in_app"=>false, "pre_context"=>[" # We want to be able to retry as much as possible so we don't\n", " # require the worker to be instantiated.\n", " def global(jobstr, queue)\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Handled => ex\n", " raise ex\n", " rescue Sidekiq::Shutdown => ey\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_retry.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (2 levels) in dispatch", "lineno"=>125, "in_app"=>false, "pre_context"=>["\n", " @job_logger.prepare(job_hash) do\n", " @retrier.global(jobstr, queue) do\n"], "context_line"=>" @job_logger.call(job_hash, queue) do\n", "post_context"=>[" stats(jobstr, queue) do\n", " # Rails 5 requires a Reloader to wrap code execution. In order to\n", " # constantize the worker and instantiate an instance, we have to call\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_logger.rb", "function"=>"call", "lineno"=>13, "in_app"=>false, "pre_context"=>[" start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)\n", " @logger.info(\"start\")\n", "\n"], "context_line"=>" yield\n", "post_context"=>["\n", " with_elapsed_time_context(start) do\n", " @logger.info(\"done\")\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_logger.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (3 levels) in dispatch", "lineno"=>126, "in_app"=>false, "pre_context"=>[" @job_logger.prepare(job_hash) do\n", " @retrier.global(jobstr, queue) do\n", " @job_logger.call(job_hash, queue) do\n"], "context_line"=>" stats(jobstr, queue) do\n", "post_context"=>[" # Rails 5 requires a Reloader to wrap code execution. In order to\n", " # constantize the worker and instantiate an instance, we have to call\n", " # the Reloader. It handles code loading, db connection management, etc.\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"stats", "lineno"=>257, "in_app"=>false, "pre_context"=>[" WORKER_STATE.set(tid, {queue: queue, payload: jobstr, run_at: Time.now.to_i})\n", "\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Exception\n", " FAILURE.incr\n", " raise\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (4 levels) in dispatch", "lineno"=>131, "in_app"=>false, "pre_context"=>[" # constantize the worker and instantiate an instance, we have to call\n", " # the Reloader. It handles code loading, db connection management, etc.\n", " # Effectively this block denotes a \"unit of work\" to Rails.\n"], "context_line"=>" @reloader.call do\n", "post_context"=>[" klass = constantize(job_hash[\"class\"])\n", " worker = klass.new\n", " worker.jid = job_hash[\"jid\"]\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb", "function"=>"call", "lineno"=>42, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def call\n"], "context_line"=>" @app.reloader.wrap do\n", "post_context"=>[" yield\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/rails.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb", "function"=>"wrap", "lineno"=>71, "in_app"=>false, "pre_context"=>["\n", " # Run the supplied block as a work unit, reloading code as needed\n", " def self.wrap\n"], "context_line"=>" executor.wrap do\n", "post_context"=>[" super\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"active_support/reloader.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb", "function"=>"wrap", "lineno"=>88, "in_app"=>false, "pre_context"=>["\n", " instance = run!\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " instance.complete!\n", " end\n"], "project_root"=>"/app", "filename"=>"active_support/execution_wrapper.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/reloader.rb", "function"=>"block in wrap", "lineno"=>72, "in_app"=>false, "pre_context"=>[" # Run the supplied block as a work unit, reloading code as needed\n", " def self.wrap\n", " executor.wrap do\n"], "context_line"=>" super\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"active_support/reloader.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb", "function"=>"wrap", "lineno"=>88, "in_app"=>false, "pre_context"=>["\n", " instance = run!\n", " begin\n"], "context_line"=>" yield\n", "post_context"=>[" ensure\n", " instance.complete!\n", " end\n"], "project_root"=>"/app", "filename"=>"active_support/execution_wrapper.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/rails.rb", "function"=>"block in call", "lineno"=>43, "in_app"=>false, "pre_context"=>["\n", " def call\n", " @app.reloader.wrap do\n"], "context_line"=>" yield\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/rails.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (5 levels) in dispatch", "lineno"=>135, "in_app"=>false, "pre_context"=>[" klass = constantize(job_hash[\"class\"])\n", " worker = klass.new\n", " worker.jid = job_hash[\"jid\"]\n"], "context_line"=>" @retrier.local(worker, jobstr, queue) do\n", "post_context"=>[" yield worker\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/job_retry.rb", "function"=>"local", "lineno"=>111, "in_app"=>false, "pre_context"=>[" # Skip exception is unwrapped within Sidekiq::Processor#process before\n", " # calling the handle_exception handlers.\n", " def local(worker, jobstr, queue)\n"], "context_line"=>" yield\n", "post_context"=>[" rescue Handled => ex\n", " raise ex\n", " rescue Sidekiq::Shutdown => ey\n"], "project_root"=>"/app", "filename"=>"sidekiq/job_retry.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (6 levels) in dispatch", "lineno"=>136, "in_app"=>false, "pre_context"=>[" worker = klass.new\n", " worker.jid = job_hash[\"jid\"]\n", " @retrier.local(worker, jobstr, queue) do\n"], "context_line"=>" yield worker\n", "post_context"=>[" end\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block in process", "lineno"=>163, "in_app"=>false, "pre_context"=>[" ack = false\n", " begin\n", " dispatch(job_hash, queue, jobstr) do |worker|\n"], "context_line"=>" Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\n", "post_context"=>[" execute_job(worker, job_hash[\"args\"])\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"invoke", "lineno"=>143, "in_app"=>false, "pre_context"=>[" chain.shift.call(*args, &traverse_chain)\n", " end\n", " end\n"], "context_line"=>" traverse_chain.call\n", "post_context"=>[" end\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"block in invoke", "lineno"=>140, "in_app"=>false, "pre_context"=>[" if chain.empty?\n", " yield\n", " else\n"], "context_line"=>" chain.shift.call(*args, &traverse_chain)\n", "post_context"=>[" end\n", " end\n", " traverse_chain.call\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/integrations/sidekiq.rb", "function"=>"call", "lineno"=>9, "in_app"=>false, "pre_context"=>[" def call(_worker, job, queue)\n", " Raven.context.transaction.push \"Sidekiq/\#{job['class']}\"\n", " Raven.extra_context(:sidekiq => job.merge(\"queue\" => queue))\n"], "context_line"=>" yield\n", "post_context"=>[" Context.clear!\n", " BreadcrumbBuffer.clear!\n", " end\n"], "project_root"=>"/app", "filename"=>"raven/integrations/sidekiq.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"block in invoke", "lineno"=>140, "in_app"=>false, "pre_context"=>[" if chain.empty?\n", " yield\n", " else\n"], "context_line"=>" chain.shift.call(*args, &traverse_chain)\n", "post_context"=>[" end\n", " end\n", " traverse_chain.call\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-unique-jobs-6.0.15/lib/sidekiq_unique_jobs/server/middleware.rb", "function"=>"call", "lineno"=>29, "in_app"=>false, "pre_context"=>[" @worker_class = worker_class\n", " @item = item\n", " @queue = queue\n"], "context_line"=>" return yield if unique_disabled?\n", "post_context"=>["\n", " SidekiqUniqueJobs::Job.add_uniqueness(item)\n", " SidekiqUniqueJobs.with_context(logging_context(self.class, item)) do\n"], "project_root"=>"/app", "filename"=>"sidekiq_unique_jobs/server/middleware.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/middleware/chain.rb", "function"=>"block in invoke", "lineno"=>138, "in_app"=>false, "pre_context"=>[" chain = retrieve.dup\n", " traverse_chain = lambda do\n", " if chain.empty?\n"], "context_line"=>" yield\n", "post_context"=>[" else\n", " chain.shift.call(*args, &traverse_chain)\n", " end\n"], "project_root"=>"/app", "filename"=>"sidekiq/middleware/chain.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"block (2 levels) in process", "lineno"=>164, "in_app"=>false, "pre_context"=>[" begin\n", " dispatch(job_hash, queue, jobstr) do |worker|\n", " Sidekiq.server_middleware.invoke(worker, job_hash, queue) do\n"], "context_line"=>" execute_job(worker, job_hash[\"args\"])\n", "post_context"=>[" end\n", " end\n", " ack = true\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.2/lib/sidekiq/processor.rb", "function"=>"execute_job", "lineno"=>196, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def execute_job(worker, cloned_args)\n"], "context_line"=>" worker.perform(*cloned_args)\n", "post_context"=>[" end\n", "\n", " # Ruby doesn't provide atomic counters out of the box so we'll\n"], "project_root"=>"/app", "filename"=>"sidekiq/processor.rb"}, {"abs_path"=>"/app/app/workers/sentry_worker.rb", "function"=>"perform", "lineno"=>7, "in_app"=>true, "pre_context"=>[" sidekiq_options queue: :default\n", "\n", " def perform(event)\n"], "context_line"=>" Raven.send_event(event)\n", "post_context"=>[" end\n", "end\n", nil], "project_root"=>"/app", "filename"=>"app/workers/sentry_worker.rb"}, {"abs_path"=>"/app/vendor/ruby-2.6.5/lib/ruby/2.6.0/forwardable.rb", "function"=>"send_event", "lineno"=>230, "in_app"=>false, "pre_context"=>[" end\n", " end;\n", " end\n"], "context_line"=>"end\n", "post_context"=>["\n", "# SingleForwardable can be used to setup delegation at the object level as well.\n", "#\n"], "project_root"=>"/app", "filename"=>"forwardable.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/instance.rb", "function"=>"send_event", "lineno"=>81, "in_app"=>false, "pre_context"=>[" # evt = Raven::Event.new(:message => \"An error\")\n", " # Raven.send_event(evt)\n", " def send_event(event, hint = nil)\n"], "context_line"=>" client.send_event(event, hint)\n", "post_context"=>[" end\n", "\n", " # Capture and process any exceptions from the given block.\n"], "project_root"=>"/app", "filename"=>"raven/instance.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb", "function"=>"send_event", "lineno"=>34, "in_app"=>false, "pre_context"=>[" event = event.to_hash\n", "\n", " unless @state.should_try?\n"], "context_line"=>" failed_send(nil, event)\n", "post_context"=>[" return\n", " end\n", "\n"], "project_root"=>"/app", "filename"=>"raven/client.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb", "function"=>"failed_send", "lineno"=>115, "in_app"=>false, "pre_context"=>[" else\n", " configuration.logger.warn \"Not sending event due to previous failure(s).\"\n", " end\n"], "context_line"=>" configuration.logger.warn(\"Failed to submit event: \#{get_log_message(event)}\")\n", "post_context"=>[" configuration.transport_failure_callback.call(event) if configuration.transport_failure_callback\n", " end\n", " end\n"], "project_root"=>"/app", "filename"=>"raven/client.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb", "function"=>"get_log_message", "lineno"=>89, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def get_log_message(event)\n"], "context_line"=>" (event && event[:message]) || get_message_from_exception(event) || '<no message value>'\n", "post_context"=>[" end\n", "\n", " def generate_auth_header\n"], "project_root"=>"/app", "filename"=>"raven/client.rb"}, {"abs_path"=>"/app/vendor/bundle/ruby/2.6.0/gems/sentry-raven-2.12.0/lib/raven/client.rb", "function"=>"get_message_from_exception", "lineno"=>83, "in_app"=>false, "pre_context"=>[" end\n", "\n", " def get_message_from_exception(event)\n"], "context_line"=>" (event && event[:exception][:values][0][:type] &&\n", "post_context"=>[" event[:exception][:values][0][:value] &&\n", " \"\#{event[:exception][:values][0][:type]}: \#{event[:exception][:values][0][:value]}\")\n", " end\n"], "project_root"=>"/app", "filename"=>"raven/client.rb"}]}}]}, "logentry"=>{"params"=>nil, "message"=>"undefined method `[]' for nil:NilClass"}}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions