An event comes in and a build request is put in the queue. Cancel the build in the Queue.
Try to trigger the event via the "Query and Trigger Gerrit Patches". It will tell you that no jobs have been triggered.
Analyzing the problem I found out that the trigger plugin keeps track internally of all events that it is currently processing (BuildMemory). Once all builds for an event are finished the event is removed from the memory.
Now the BuildMemory uses hashcode to compare the events. As ChangeBasedEvent implements hashcode 2 events that represent the same patchset can't be running at the same time.
I would expect that when I cancel a build in the Queue, that the memory is cleaned.