dotnet / dotnet/orleans

Non-transient errors in reliable stream processing.

Open
#915 15 comments 0 reactions 0 assignees View on GitHub
area-streaming enhancement Needs: design
Dominant language
C#
Stars
10.9k
Forks
2.1k
Avg merge
13h 56m
Merged PRs (30d)
351

Description

When performing high performance reliable stream processing using Orleans streams, persisting processed results for each event may lead to performance issues. In these cases, results tend to be kept in memory until a key event or time interval triggers persistence of a ‘checkpoint’. If an error occurs in the stream processing, the consumer may recover by loading the last checkpoint, rewinding the stream to the point where the checkpoint was taken, and then continuing normal processing from there.

This approach works well for recovering from transient errors, but it requires that the consumer know with certainty if an error is transient. If this recovery logic is attempted on a non-transient error (an event processing bug for instance), this could leave the stream processing logic in an infinite recovery loop.

It is reasonable to place the responsibility of detecting such infinite recovery loops on the application logic. The application will have a better understanding of the nature of the stream processing and how to handle unexpected errors. However, I’m raising this issue to explore capabilities Orleans streams could provide to help developers address this issue.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing Orleans streams' checkpoint, rewind, and recovery behavior described in the issue. Define whether Orleans should provide capabilities for detecting or preventing infinite recovery loops; the issue names no files, tests, entry points, or concrete acceptance condition.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
distributed-systems, stream-processing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.