Repository navigation
Akka.IO: remove the unimplemented ResumeWriting / WritingResumed / useResumeWriting API - #8660
Merged
Aaronontheweb merged 3 commits intoSep 29, 2026
Conversation
…eResumeWriting API Removes Tcp.ResumeWriting, Tcp.WritingResumed, the useResumeWriting parameter and UseResumeWriting property on Tcp.Register, and the useResumeWriting parameter on TcpMessage.Register / TcpMessage.ResumeWriting(). This NACK-style write-suspend/resume mode mirrors JVM Akka's message shapes but was never implemented in Akka.NET: TcpConnection never read Register.UseResumeWriting, never suspended writes, and ResumeWriting was a no-op handler. Updates the two Akka.Streams callers, a streams test helper, a commented-out test line, and the API approval baselines. Ack-based writes (Tcp.Write.Create(data, ack)) remain the backpressure model. Records the removal in BREAKING_CHANGES_V1.6.md.
…me-writing # Conflicts: # BREAKING_CHANGES_V1.6.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Removes Akka.IO's NACK-style write-suspend/resume API, which was never implemented:
Tcp.ResumeWritingandTcp.WritingResumeduseResumeWritingparameter andUseResumeWritingproperty onTcp.RegisteruseResumeWritingparameter onTcpMessage.Register(...)TcpMessage.ResumeWriting()Why
JVM Akka's
Register(useResumeWriting = true)makes the connection reject writes while one is pending, suspend later writes, and replyWritingResumedonce it can accept writes again. Akka.NET copied the message shapes but never wired up the behavior:TcpConnectionnever readRegister.UseResumeWriting, never suspended writes, and itsResumeWritinghandler was a no-op ("No special action needed — transport handles write buffering"). Akka.NET already buffers writes and uses ack-based backpressure (Tcp.Write.Create(data, ack)) as the real flow-control mechanism, so this API only misled callers into thinking a NACK mode existed. Discussed in #8646 / #8617; removing it outright rather than deprecating it.Changes
src/core/Akka/IO/Tcp.cs, and the no-opReceive<ResumeWriting>handler fromsrc/core/Akka/IO/TcpConnection.cs.Tcp.Register(..., useResumeWriting: false)call sites inAkka.Streams'sTcpStages.cs, plus a test helper and a stale commented-out line.Akka.API.Testsapproval baselines (CoreAPISpec.ApproveCore.DotNet.verified.txt/...Net.verified.txt).BREAKING_CHANGES_V1.6.md.Migration
Delete the
useResumeWritingargument from anyRegister/TcpMessage.Registercalls and anyResumeWritingsends. Use ack-based writes (Tcp.Write.Create(data, ack)) for backpressure.