I have setup the ai-code-review plugin on my gerrit server(3.10.4), currently there
are two issues.
1, Sometimes it can not find the repo, it add a specific path git/ on my repo path, the
log shows:
java.lang.RuntimeException: Failed to retrieve files in master branch:
at com.googlesource.gerrit.plugins.aicodereview.mode.stateful.client.api.git.GitRepoFiles.getGitRepoFiles(GitRepoFiles.java:58)
at com.googlesource.gerrit.plugins.aicodereview.mode.stateful.client.api.chatgpt.ChatGptAssistant.uploadRepoFiles(ChatGptAssistant.java:114)
at com.googlesource.gerrit.plugins.aicodereview.mode.stateful.client.api.chatgpt.ChatGptAssistant.createVectorStore(ChatGptAssistant.java:96)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTypeChangeMerged.processEvent(EventHandlerTypeChangeMerged.java:61)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask.execute(EventHandlerTask.java:106)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask.run(EventHandlerTask.java:95)
at com.google.gerrit.server.logging.LoggingContextAwareRunnable.run(LoggingContextAwareRunnable.java:113)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:703)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.eclipse.jgit.errors.RepositoryNotFoundException: repository not found: git/aos/bsp-src.git
at org.eclipse.jgit.storage.file.FileRepositoryBuilder.build(FileRepositoryBuilder.java:57)
at com.googlesource.gerrit.plugins.aicodereview.mode.stateful.client.api.git.GitRepoFiles.openRepository(GitRepoFiles.java:98)
Can not figure out why it add a 'git' path to my repo. but most of time it is right.
2, Sometimes there is a error log '"java.util.List.size()" because "toolCalls" is null'.
The related log:
java.lang.NullPointerException: Cannot invoke "java.util.List.size()" because "toolCalls" is null
at com.googlesource.gerrit.plugins.aicodereview.mode.common.client.api.openai.AIChatClient.getResponseContent(AIChatClient.java:79)
at com.googlesource.gerrit.plugins.aicodereview.mode.common.client.api.openai.AIChatClient.extractContent(AIChatClient.java:56)
at com.googlesource.gerrit.plugins.aicodereview.mode.stateless.client.api.chatai.AIChatClientStateless.ask(AIChatClientStateless.java:77)
at com.googlesource.gerrit.plugins.aicodereview.PatchSetReviewer.getReviewReply(PatchSetReviewer.java:172)
at com.googlesource.gerrit.plugins.aicodereview.PatchSetReviewer.review(PatchSetReviewer.java:92)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTypePatchSetReview.processEvent(EventHandlerTypePatchSetReview.java:64)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask.execute(EventHandlerTask.java:106)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask.run(EventHandlerTask.java:95)
at com.google.gerrit.server.logging.LoggingContextAwareRunnable.run(LoggingContextAwareRunnable.java:113)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:703)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
My gerrit.config settings:
[plugin "ai-code-review"]
# Required parameters
aiType = OLLAMA
aiDomain =
http://172.16.10.37:11434/ aiModel = "qwen2.5-coder:latest"
gerritUserName = codeGPT
enableMessageDebugging = true
#gptFullFileReview = false
#enabledVoting = true
globalEnable = false
enabledProjects="aos/bsp-src"
Br,
Yingchun Li