Skip to content

WIP v3 merge attempt#3035

Draft
mgravell wants to merge 4 commits intomainfrom
marc/v3
Draft

WIP v3 merge attempt#3035
mgravell wants to merge 4 commits intomainfrom
marc/v3

Conversation

@mgravell
Copy link
Collaborator

@mgravell mgravell commented Mar 13, 2026

V3 tranche 1 is the reader-core, to resolve the OOM-related memory/corruption issue with V2

  • merge the V3 core (Refactor IO "read" core logic #3014) on top of the V2/V3 pre-work (V3 pre-merge; all the early bits, for V2 #3028)
    • refactor all "read" logic to use RespReader instead of RawResult
    • nuke RawResult and CommandBytes
  • consolidate refs (V2 SE.Redis does not have a RESPite ref for AsciiHash etc, so imports the files directly)
  • resolve the stall on the 'sync'/'async' writer engines (the default 'pipe' reader engine is solid); this stall can generally be seen in the MovedTests which has a [Theory] usage for all-modes
    • emphasis for the reader: this stall is limited to modes that are only currently used in tests; they are the preferred option when stable, but I will not expose them until then
    • what this does: remove a thread-switch on the outbound path, by using the CycleBuffer core (think Pipe, but with discreet control over the read/write thread model); this includes the ability to use fully-sync dedicated writer; since tranche 1 is primarily reader-focused, I'm OK for this to slip unresolved to tranche 2, which is writer-focused
  • remove trailing Pipelines.Sockets.Unofficial usage
  • reimplement simulate-connection-failure
  • allow dedicated-thread sync read usage?
    • heh, turns out I forgot I already did this; it is tied to the write-engine (IsSync), so we know that it isn't part of the stall mentioned above (since that stalls on both 'sync' and 'async', and works fine for 'pipe')

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant