apache / apache/pinot

[multistage] [error-handling] MailboxContentStreamObserver poll infinite loop

Open
#9,720 2 comments 0 reactions 0 assignees View on GitHub
multi-stage
Dominant language
Java
Stars
6.1k
Forks
1.5k
Avg merge
2d 55m
Merged PRs (30d)
182

Description

Here is how it happens:

Mailbox.MailboxContent content = _receivingBuffer.poll(DEFAULT_MAILBOX_POLL_TIMEOUT, TimeUnit.MILLISECONDS);

Say we never receive this mailbox due to network or the issue stated in sort operator.
_receivingBuffer.pool will throw an exception and log an error.
however _isCompleted is not set to true. The code will start while loop again.

This receive is a blocking call. So we don't have timeout to break this.

Contributor guide

Open the contributing guide

Research direction

Start with MailboxContentStreamObserver and inspect the _receivingBuffer.poll call, its exception handling, and the surrounding while loop. Trace how _isCompleted changes when the mailbox is not received or polling fails. Done means the blocking receive path does not continue looping indefinitely after that failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
distributed-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.