GitHub importer fails on LFS import
As seen in !48632 (comment 456626562):
{
  "severity": "ERROR",
  "time": "2020-11-29T15:40:41.056Z",
  "correlation_id": "ddd173eaef0fa35741a2acb96b0ddcfb",
  "extra.sidekiq": {
    "class": "Gitlab::GithubImport::Stage::ImportLfsObjectsWorker",
    "args": [
      "226"
    ],
    "retry": 5,
    "queue": "github_importer:github_import_stage_import_lfs_objects",
    "backtrace": true,
    "version": 0,
    "queue_namespace": "github_importer",
    "dead": false,
    "jid": "21781ab9d6bda48f58162fc4",
    "created_at": 1606664398.839218,
    "meta.user": "root",
    "meta.project": "root/json_exporter",
    "meta.root_namespace": "root",
    "meta.caller_id": "Gitlab::GithubImport::AdvanceStageWorker",
    "meta.related_class": "Projects::CreateService",
    "meta.feature_category": "importers",
    "correlation_id": "ddd173eaef0fa35741a2acb96b0ddcfb",
    "enqueued_at": 1606664441.0117419,
    "error_message": "undefined method `oid' for [:status, :success]:Array",
    "error_class": "NoMethodError",
    "failed_at": 1606664398.910867,
    "retry_count": 1,
    "error_backtrace": [
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/representation/lfs_object.rb:16:in `from_api_response'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/parallel_scheduling.rb:70:in `block in parallel_import'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/importer/lfs_objects_importer.rb:29:in `block in each_object_to_import'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/importer/lfs_objects_importer.rb:28:in `each'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/importer/lfs_objects_importer.rb:28:in `each_object_to_import'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/parallel_scheduling.rb:69:in `parallel_import'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/parallel_scheduling.rb:33:in `execute'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/app/workers/gitlab/github_import/stage/import_lfs_objects_worker.rb:23:in `import'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/app/workers/gitlab/github_import/stage/import_lfs_objects_worker.rb:14:in `perform'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:192:in `execute_job'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:165:in `block (2 levels) in process'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:128:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/metrics/sidekiq_middleware.rb:18:in `block in call'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/metrics/transaction.rb:56:in `run'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/metrics/sidekiq_middleware.rb:18:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing.rb:16:in `perform'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb:40:in `perform'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/duplicate_jobs/server.rb:8:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/worker_context.rb:9:in `wrap_in_optional_context'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/worker_context/server.rb:17:in `block in call'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/application_context.rb:54:in `block in use'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/gitlab-labkit-0.13.1/lib/labkit/context.rb:32:in `with_context'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/application_context.rb:54:in `use'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/application_context.rb:21:in `with_context'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/worker_context/server.rb:15:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_status/server_middleware.rb:7:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_versioning/middleware.rb:9:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/admin_mode/server.rb:8:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/instrumentation_logger.rb:7:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/gitlab-labkit-0.13.1/lib/labkit/middleware/sidekiq/server.rb:21:in `block in call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:128:in `block in invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/gitlab-labkit-0.13.1/lib/labkit/middleware/sidekiq/context/server.rb:14:in `block in call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/gitlab-labkit-0.13.1/lib/labkit/context.rb:32:in `with_context'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/gitlab-labkit-0.13.1/lib/labkit/middleware/sidekiq/context/server.rb:13:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:133:in `invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/gitlab-labkit-0.13.1/lib/labkit/middleware/sidekiq/server.rb:20:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/batch_loader.rb:7:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb:7:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/request_store_middleware.rb:10:in `block in call'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/with_request_store.rb:17:in `enabling_request_store'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/with_request_store.rb:10:in `with_request_store'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/request_store_middleware.rb:9:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/server_metrics.rb:37:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/monitor.rb:8:in `block in call'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_daemon/monitor.rb:49:in `within_job'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_middleware/monitor.rb:7:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/marginalia-1.9.0/lib/marginalia/sidekiq_instrumentation.rb:10:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sentry-raven-3.0.4/lib/raven/integrations/sidekiq.rb:9:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/middleware/chain.rb:133:in `invoke'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:164:in `block in process'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:137:in `block (6 levels) in dispatch'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/job_retry.rb:109:in `local'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:136:in `block (5 levels) in dispatch'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/rails.rb:43:in `block in call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/execution_wrapper.rb:88:in `wrap'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/reloader.rb:72:in `block in wrap'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/execution_wrapper.rb:88:in `wrap'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/reloader.rb:71:in `wrap'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/rails.rb:42:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:132:in `block (4 levels) in dispatch'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:250:in `stats'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:127:in `block (3 levels) in dispatch'",
      "/Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_logging/structured_logger.rb:18:in `call'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:126:in `block (2 levels) in dispatch'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/job_retry.rb:74:in `global'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:125:in `block in dispatch'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/logging.rb:48:in `with_context'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/logging.rb:42:in `with_job_hash_context'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:124:in `dispatch'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:163:in `process'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:83:in `process_one'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/processor.rb:71:in `run'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/util.rb:16:in `watchdog'",
      "/Users/stanhu/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sidekiq-5.2.9/lib/sidekiq/util.rb:25:in `block in safe_thread'"
    ],
    "retried_at": 1606664421.6004171
  },
  "extra.import_source": "github",
  "extra.project_id": 226,
  "extra.importer": "Gitlab::GithubImport::Importer::LfsObjectImporter",
  "extra.parallel": true,
  "exception.class": "NoMethodError",
  "exception.message": "undefined method `oid' for [:status, :success]:Array",
  "exception.backtrace": [
    "lib/gitlab/github_import/representation/lfs_object.rb:16:in `from_api_response'",
    "lib/gitlab/github_import/parallel_scheduling.rb:70:in `block in parallel_import'",
    "lib/gitlab/github_import/importer/lfs_objects_importer.rb:29:in `block in each_object_to_import'",
    "lib/gitlab/github_import/importer/lfs_objects_importer.rb:28:in `each'",
    "lib/gitlab/github_import/importer/lfs_objects_importer.rb:28:in `each_object_to_import'",
    "lib/gitlab/github_import/parallel_scheduling.rb:69:in `parallel_import'",
    "lib/gitlab/github_import/parallel_scheduling.rb:33:in `execute'",
    "app/workers/gitlab/github_import/stage/import_lfs_objects_worker.rb:23:in `import'",
    "app/workers/gitlab/github_import/stage/import_lfs_objects_worker.rb:14:in `perform'",
    "lib/gitlab/metrics/sidekiq_middleware.rb:18:in `block in call'",
    "lib/gitlab/metrics/transaction.rb:56:in `run'",
    "lib/gitlab/metrics/sidekiq_middleware.rb:18:in `call'",
    "lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing.rb:16:in `perform'",
    "lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb:40:in `perform'",
    "lib/gitlab/sidekiq_middleware/duplicate_jobs/server.rb:8:in `call'",
    "lib/gitlab/sidekiq_middleware/worker_context.rb:9:in `wrap_in_optional_context'",
    "lib/gitlab/sidekiq_middleware/worker_context/server.rb:17:in `block in call'",
    "lib/gitlab/application_context.rb:54:in `block in use'",
    "lib/gitlab/application_context.rb:54:in `use'",
    "lib/gitlab/application_context.rb:21:in `with_context'",
    "lib/gitlab/sidekiq_middleware/worker_context/server.rb:15:in `call'",
    "lib/gitlab/sidekiq_status/server_middleware.rb:7:in `call'",
    "lib/gitlab/sidekiq_versioning/middleware.rb:9:in `call'",
    "lib/gitlab/sidekiq_middleware/admin_mode/server.rb:8:in `call'",
    "lib/gitlab/sidekiq_middleware/instrumentation_logger.rb:7:in `call'",
    "lib/gitlab/sidekiq_middleware/batch_loader.rb:7:in `call'",
    "lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb:7:in `call'",
    "lib/gitlab/sidekiq_middleware/request_store_middleware.rb:10:in `block in call'",
    "lib/gitlab/with_request_store.rb:17:in `enabling_request_store'",
    "lib/gitlab/with_request_store.rb:10:in `with_request_store'",
    "lib/gitlab/sidekiq_middleware/request_store_middleware.rb:9:in `call'",
    "lib/gitlab/sidekiq_middleware/server_metrics.rb:37:in `call'",
    "lib/gitlab/sidekiq_middleware/monitor.rb:8:in `block in call'",
    "lib/gitlab/sidekiq_daemon/monitor.rb:49:in `within_job'",
    "lib/gitlab/sidekiq_middleware/monitor.rb:7:in `call'",
    "lib/gitlab/sidekiq_logging/structured_logger.rb:18:in `call'"
  ]
}I can reproduce the problem locally:
[13] pry(main)> Gitlab::GithubImport::Importer::LfsObjectsImporter.new(project, nil).execute
  ApplicationSetting Load (1.0ms)  SELECT "application_settings".* FROM "application_settings" ORDER BY "application_settings"."id" DESC LIMIT 1
NoMethodError: undefined method `oid' for [:status, :success]:Array
from /Users/stanhu/gitlab/gdk-ee/gitlab/lib/gitlab/github_import/representation/lfs_object.rb:16:in `from_api_response'
[14] pry(main)> Projects::LfsPointers::LfsImportService.new(project).execute
=> {:status=>:success}Maybe we want LfsObjectDownloadListService instead of LfsImportService on https://gitlab.com/gitlab-org/gitlab/blob/054853977a85a97b8aadbdfb64a9c887e86f7bd8/lib%2Fgitlab%2Fgithub_import%2Fimporter%2Flfs_objects_importer.rb#L26?
diff --git a/lib/gitlab/github_import/importer/lfs_objects_importer.rb b/lib/gitlab/github_import/importer/lfs_objects_importer.rb
index 0024a2e7dc6..9f11e51301e 100644
--- a/lib/gitlab/github_import/importer/lfs_objects_importer.rb
+++ b/lib/gitlab/github_import/importer/lfs_objects_importer.rb
@@ -1,3 +1,4 @@
+
 # frozen_string_literal: true
 
 module Gitlab
@@ -23,7 +24,7 @@ def collection_method
         end
 
         def each_object_to_import
-          lfs_objects = Projects::LfsPointers::LfsImportService.new(project).execute
+          lfs_objects = Projects::LfsPointers::LfsObjectDownloadListService.new(project).execute
 
           lfs_objects.each do |object|
             yield objectThis problem might have been around for a while but exposed recently in !48512 (merged) due to the removal of the rescue.
Even with the diff above, we may still not want to fail the import if LFS fails to download?