Skip to content

RepositoryUpdateMirrorWorker fails when local repository is empty

It looks like this started in RC7. The local repo has no HEAD since refs/heads/master is empty.

$ sudo ls -al /var/opt/gitlab/git-data/repositories/redacted_namespace/mirror.git/refs/heads
total 0
drwxr-xr-x 2 git git 10 Apr  6 13:39 .
drwxr-xr-x 4 git git 41 Apr  6 13:39 ..

/cc: @rdavila

https://sentry.gitlap.com/gitlab/gitlabcom/issues/8873/

Rugged::ReferenceError: Reference 'refs/heads/master' not found
  lib/gitlab/metrics/instrumentation.rb:152:in `head'
    trans.measure_method(#{label.inspect}) { super }
  lib/gitlab/metrics/instrumentation.rb:152:in `block in head'
    trans.measure_method(#{label.inspect}) { super }
  lib/gitlab/metrics/method_call.rb:23:in `measure'
    retval = yield
  lib/gitlab/metrics/transaction.rb:71:in `measure_method'
    @methods[name].measure(&block)
  lib/gitlab/metrics/instrumentation.rb:152:in `head'
    trans.measure_method(#{label.inspect}) { super }
...
(79 additional frame(s) were not displayed)

RepositoryUpdateMirrorWorker::UpdateMirrorError: Rugged::ReferenceError: Reference 'refs/heads/master' not found
  app/workers/repository_update_mirror_worker.rb:30:in `rescue in perform'
    raise UpdateMirrorError, "#{ex.class}: #{Gitlab::UrlSanitizer.sanitize(ex.message)}"
  app/workers/repository_update_mirror_worker.rb:14:in `perform'
    begin
  lib/gitlab/sidekiq_middleware/memory_killer.rb:17:in `call'
    yield
  lib/gitlab/sidekiq_middleware/arguments_logger.rb:6:in `call'
    yield
  lib/gitlab/metrics/sidekiq_middleware.rb:13:in `block in call'
    trans.run { yield }
...
(25 additional frame(s) were not displayed)