2017-01-16 11 views
0

Я занимаюсь этой проблемой в течение нескольких дней без везения. Я нашел много сообщений, сообщающих о похожих проблемах, но не с просмотром кода Gerrit.Ошибка проверки кода Gerrit MissingObjectException при отправке изменений

Дело в том, что у нас есть репо, которое содержит много ветвей. Эта проблема имеет только одна ветвь (dev).

org.eclipse.jgit.errors.MissingObjectException: Missing unknown 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 
     at com.google.gerrit.server.git.MergeOp.integrateIntoHistory(MergeOp.java:497) 
     at com.google.gerrit.server.git.MergeOp.merge(MergeOp.java:433) 
     at com.google.gerrit.server.change.Submit.apply(Submit.java:225) 
     at com.google.gerrit.server.change.Submit.apply(Submit.java:83) 
     at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:341) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
     at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286) 
     at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276) 
     at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181) 
     at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) 

Чтобы воспроизвести ошибку, просто сделайте изменение. Зафиксировать и нажать на gerrit refs/for/dev. Как только я нажимаю на Submit в Gerrit, я получаю вышеуказанную ошибку.

Изменения на сервере являются следующие:

  • Геррит код Обзор (2.13.1)
  • Гит-2.1.0
  • Java 1.7.0_71

Бег git fsck на стороне сервера верните Ok.

Запуск git show 5f3190e131541cec4ef7176262eaf4a03c4a4e6c возвращается

fatal: bad object 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 

Изменение предпочтений проекта в Геррит от Merge if necessary к Rebase if necessary получил это исключение.

Caused by: com.google.gerrit.server.git.UpdateException: org.eclipse.jgit.errors.MissingObjectException: Missing unknown 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 
     at com.google.gerrit.server.git.BatchUpdate.executeUpdateRepo(BatchUpdate.java:673) 
     at com.google.gerrit.server.git.BatchUpdate.execute(BatchUpdate.java:400) 
     at com.google.gerrit.server.git.MergeOp.integrateIntoHistory(MergeOp.java:478) 
     ... 43 more 
Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing unknown 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 
     at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:158) 
     at org.eclipse.jgit.lib.ObjectReader.open(ObjectReader.java:227) 
     at org.eclipse.jgit.revwalk.RevWalk.parseAny(RevWalk.java:859) 
     at org.eclipse.jgit.revwalk.RevWalk.parseCommit(RevWalk.java:772) 
     at com.google.gerrit.server.git.CodeReviewCommit$CodeReviewRevWalk.parseCommit(CodeReviewCommit.java:110) 
     at com.google.gerrit.server.git.SubmoduleOp.updateSubmodule(SubmoduleOp.java:461) 
     at com.google.gerrit.server.git.SubmoduleOp.composeGitlinksCommit(SubmoduleOp.java:369) 
     at com.google.gerrit.server.git.SubmoduleOp$GitlinkOp.updateRepo(SubmoduleOp.java:85) 
     at com.google.gerrit.server.git.BatchUpdate.executeUpdateRepo(BatchUpdate.java:661) 
     ... 45 more 

Стоит отметить, что хэш 5f3190e131541cec4ef7176262eaf4a03c4a4e6c не показывает где-нибудь на странице обзора Геррит кода (только в сообщении об ошибке). Любая новая фиксация вызовет эту ошибку.

+0

Является ли 5f3190e131541cec4ef7176262eaf4a03c4a4e6c SHA показанным в поле «Commit» (между полями «Commiter» и «Parent (s)») на экране изменений? Или там еще есть SHA? –

+0

Нет, он не отображается нигде на странице gerrit. Только в сообщении об ошибке. Я также обновил сообщение с этим комментарием. – Ayakout

ответ

0

Глядя в Gerrit Bug Tracker показать вам this issue

ли толчок был силой одной developper на этой ветке?

Вы можете проверить это на установку папки gerrit, затем папку git вашего проекта и посмотреть историю. Я подозреваю, что одна сила проявителя нажата 5f3190e131541cec4ef7176262eaf4a03c4a4e6c

+0

Я создал новый проект Gerrit 'project-1' и скопировал содержимое проблемного' project.git' в 'project-1.git'. После этого я проверил ветку 'dev' и смог внести изменения и объединить их без проблем. [Проблема] (https://bugs.chromium.org/p/gerrit/issues/detail?id=5194&can=1&q=org.eclipse.jgit.errors.MissingObjectException%3A&colspec=ID%20Type%20Stars%20Milestone%20Status % 20Priority% 20Owner% 20Summary), о котором вы упомянули, похоже, сообщают о очень похожей проблеме, разница в том, что в моем проекте нет подмодулей. – Ayakout

0

Индекс Gerrit, по-видимому, является причиной этой ошибки. Индекс указывает на несуществующий объект, даже rebuilding the index не решил эту проблему.

Поиск всех объектов git не найдено. Я использовал описанный метод here.

Я думаю, что моя проблема связана с этим об ошибке here

Возможные решения рассмотреть вопрос о том, чтобы создать новую ветку, так как эта проблема была замечена только на конкретной отрасли. Я бы также пометил и удалил проблемную ветвь с тех пор, как ее больше не использовали.

Удаление проекта в Gerrit и его воссоздание, похоже, сработало (если это легко сделать), но плагин с удаленным проектом имеет некоторые ограничения в отношении подписок подмодулей.

Выполнение ручного удаления repo.git на диске, за которым следует сброс кеша Gerrit, действительно удалит проект, однако Gerrit не разрешит создание другого проекта с тем же именем.