Skip to content

Add ability for channels to pause/resume processing of incoming messages#4612

Open
clemahieu wants to merge 3 commits intonanocurrency:developfrom
clemahieu:pause_channel
Open

Add ability for channels to pause/resume processing of incoming messages#4612
clemahieu wants to merge 3 commits intonanocurrency:developfrom
clemahieu:pause_channel

Conversation

@clemahieu
Copy link
Copy Markdown
Contributor

This is a follow on to PR #4609 and responds to the fair queue for a channel being full by pausing incoming message processing for the channel.

Pausing incoming message handling will cause TCP flow control to back up to the sender and limit incoming data.

When a message is received from the network and placed in to the fair_queue, the queue is checked to see if the message queue is full for this channel. If full, the channel is placed in a paused state where new messages are not received.
When the message_processor processes items for a channel, it signals the associated channel to resume if it was in a paused state.
@clemahieu clemahieu requested a review from pwojcikdev May 10, 2024 11:32
@qwahzi qwahzi added this to the V27 milestone May 11, 2024
@pwojcikdev
Copy link
Copy Markdown
Contributor

pwojcikdev commented May 11, 2024

I don't think it works right now, I added a new core test to ensure proper behavior. Throttling is a bit tricky with the current networking architecture. Depending on how critical it is to get it working right now, this will probably be much easier to implement with networking code implemented using coroutines, using primitives like asynchronous conditions.

@qwahzi qwahzi modified the milestones: V27, V28 Jul 2, 2024
@clemahieu clemahieu modified the milestones: V28, Backlog Feb 25, 2025
@gr0vity-dev-bot
Copy link
Copy Markdown

Test Results for Commit 864177f

Pull Request 4612: Results
Overall Status:

Test Case Results

  • 5n4pr_conf_10k_bintree: PASS (Duration: 113s)
  • 5n4pr_conf_10k_change: PASS (Duration: 140s)
  • 5n4pr_conf_change_dependant: PASS (Duration: 159s)
  • 5n4pr_conf_change_independant: PASS (Duration: 165s)
  • 5n4pr_conf_send_dependant: PASS (Duration: 130s)
  • 5n4pr_conf_send_independant: PASS (Duration: 144s)

Last updated: 2025-02-25 19:19:35 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress / V28.0

Development

Successfully merging this pull request may close these issues.

4 participants