Graylog2 / Graylog2/graylog2-server

PipelineInterpreter can potentially end up in a loop while processing messages on stopped or missing stream

Open
#17,713 1 comment 0 reactions 0 assignees View on GitHub
bug triaged
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.