Graylog2 / Graylog2/graylog2-server
PipelineInterpreter can potentially end up in a loop while processing messages on stopped or missing stream
- Dominant language
- Java
- Stars
- 8.1k
- Forks
- 1.1k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 217
Description
## Expected Behavior
When stream is paused or missing, messages are routed into the default stream.
## Current Behavior
When using two pipelines.
Pipeline one removes the default stream and assigns it to stream1.
Pipeline two is tied to stream1 so it gets executed tries to route it to stream2, but because that stream is paused that doesn't happen. Afterwards we remove stream1 and since no stream is assigned we assign back the default stream. Now here it gets tricky. Every time the streams change we have to reprocess the message as a new pipeline might be applicable now. But since it is the default stream, pipeline one gets reapplied and we end up in a loop
## Possible Solution
## Steps to Reproduce (for bugs)
- Stream "All Messages" (the default one)
- Stream "Stream 1", up and running
- Stream "Stream 2", stopped
- Pipeline "Pipeline 1", connected to "All Messages"
- Pipeline rule "route to stream 1", consisting of route_to_stream(Stream 1) and remove_from_stream(All Messages)
- Pipeline "Pipeline 2", connected to "Stream 1"
- Pipeline rule "route to stream 2", consisting of route_to_stream(Stream 2) and remove_from_stream(Stream 1)
## Context
[HS-2146035118]
Contributor guide
Assessment
This issue has not been assessed yet.