jenkinsci / jenkinsci/gerrit-trigger-plugin
[JENKINS-72373] gerrit-trigger plugin failing to trigger when Forbidden file are specified
- Dominant language
- Java
- Stars
- 226
- Forks
- 289
- PR merge metrics
- No merged PRs in 30d
Description
When using Gerrit 3.8.2, I get this error when I have Forbidden Files specified. This is working fine when using Gerrit 3.7.2
When notifying listener: com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.EventListener@cf8622bc about event: PatchsetCreated: Change-Id for #34562: I10660db85ff8e5f3f61ac51b6b25d653c8912141 PatchSet: 12
Nov 27, 2023 10:57:06 AM SEVERE com.sonymobile.tools.gerrit.gerritevents.GerritHandler notifyListenersNotify-error:
java.lang.NullPointerException
at java.base/java.util.ArrayList.(ArrayList.java:179)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject.isInterestingFile(GerritProject.java:276)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject.isInteresting(GerritProject.java:228)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger.isChangeInteresting(GerritTrigger.java:956)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger.isChangeBasedEventInteresting(GerritTrigger.java:1049)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger.isInteresting(GerritTrigger.java:1165)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.EventListener.gerritEvent(EventListener.java:127)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler.notifyListener(GerritHandler.java:592)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler.notifyListeners(GerritHandler.java:559)
at com.sonyericsson.hudson.plugins.gerrit.trigger.JenkinsAwareGerritHandler.notifyListeners(JenkinsAwareGerritHandler.java:80)
at com.sonymobile.tools.gerrit.gerritevents.workers.AbstractGerritEventWork.perform(AbstractGerritEventWork.java:46)
at com.sonymobile.tools.gerrit.gerritevents.workers.AbstractJsonObjectWork.perform(AbstractJsonObjectWork.java:77)
at com.sonymobile.tools.gerrit.gerritevents.workers.StreamEventsStringWork.perform(StreamEventsStringWork.java:74)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler$EventWorker.workEvent(GerritHandler.java:337)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler$EventWorker.run(GerritHandler.java:319)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)

the call to change.getFiles(gerritQueryHandler) is returning null I think or something like that
if (isFileTriggerEnabled() && containsFilePathsOrForbiddenFilePaths) { if (project.isInteresting(change.getProject(), change.getBranch(), change.getTopic(), () -> change.getFiles(gerritQueryHandler))) { shouldTrigger = true; } } else { if (project.isInteresting(change.getProject(), change.getBranch(), change.getTopic())) { shouldTrigger = true; } }
---
Originally reported by
ldube, imported from: gerrit-trigger plugin failing to trigger when Forbidden file are specified
rsandell
Raw content of original issue
When using Gerrit 3.8.2, I get this error when I have Forbidden Files specified. This is working fine when using Gerrit 3.7.2
When notifying listener: com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.EventListener@cf8622bc about event: PatchsetCreated: Change-Id for #34562: I10660db85ff8e5f3f61ac51b6b25d653c8912141 PatchSet: 12
Nov 27, 2023 10:57:06 AM SEVERE com.sonymobile.tools.gerrit.gerritevents.GerritHandler notifyListenersNotify-error:
java.lang.NullPointerException
at java.base/java.util.ArrayList.<init>(ArrayList.java:179)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject.isInterestingFile(GerritProject.java:276)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject.isInteresting(GerritProject.java:228)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger.isChangeInteresting(GerritTrigger.java:956)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger.isChangeBasedEventInteresting(GerritTrigger.java:1049)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger.isInteresting(GerritTrigger.java:1165)
at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.EventListener.gerritEvent(EventListener.java:127)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler.notifyListener(GerritHandler.java:592)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler.notifyListeners(GerritHandler.java:559)
at com.sonyericsson.hudson.plugins.gerrit.trigger.JenkinsAwareGerritHandler.notifyListeners(JenkinsAwareGerritHandler.java:80)
at com.sonymobile.tools.gerrit.gerritevents.workers.AbstractGerritEventWork.perform(AbstractGerritEventWork.java:46)
at com.sonymobile.tools.gerrit.gerritevents.workers.AbstractJsonObjectWork.perform(AbstractJsonObjectWork.java:77)
at com.sonymobile.tools.gerrit.gerritevents.workers.StreamEventsStringWork.perform(StreamEventsStringWork.java:74)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler$EventWorker.workEvent(GerritHandler.java:337)
at com.sonymobile.tools.gerrit.gerritevents.GerritHandler$EventWorker.run(GerritHandler.java:319)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
the call to change.getFiles(gerritQueryHandler) is returning null I think or something like that
if (isFileTriggerEnabled() && containsFilePathsOrForbiddenFilePaths) { if (project.isInteresting(change.getProject(), change.getBranch(), change.getTopic(), () -> change.getFiles(gerritQueryHandler))) { shouldTrigger = true; } } else { if (project.isInteresting(change.getProject(), change.getBranch(), change.getTopic())) { shouldTrigger = true; } }
2 attachments
- [filePath.png](https://issues.jenkins.io/secure/attachment/62747/filePath.png)
> 
- [image-2023-11-27-11-08-40-111.png](https://issues.jenkins.io/secure/attachment/61619/image-2023-11-27-11-08-40-111.png)
> 
Contributor guide
Research direction
Start at GerritTrigger.isChangeInteresting and follow the change.getFiles(gerritQueryHandler) callback into GerritProject.isInterestingFile, where the stack trace reports the failure at line 276. Reproduce the PatchsetCreated case with Forbidden Files on Gerrit 3.8.2 and verify that file filtering no longer throws a NullPointerException and evaluates the trigger correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- ci-cd, devops
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100