Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce an in-order processing mode for WriteRequests #466

Open
jonathan-dilorenzo opened this issue Nov 10, 2023 · 6 comments
Open

Introduce an in-order processing mode for WriteRequests #466

jonathan-dilorenzo opened this issue Nov 10, 2023 · 6 comments
Assignees
Labels
1.5 Issues and PRs that we want to go into 1.5

Comments

@jonathan-dilorenzo
Copy link
Contributor

I'm hoping to introduce different processing modes for write requests. Right now, the only processing mode is Arbitrary Order (or something like that), which denotes that the server can process the updates of a write request in any order it wants.

We're hoping to introduce an In order processing mode, denoting that the server must process the request from start-to-finish. The goal, for us, is that this change (along with a new atomicity mode that I'm hoping to introduce, which is basically, STOP_ON_ERROR) will let us send a bunch of updates where we care about the ordering in a single batch, which is a more significant gain for us than letting the switch choose its processing order. Of course, this also means that the performance of a request is likely dependent on ordering in a way that it didn't use to be, potentially putting a new onus on the controller to understand what leads to high vs low performance.

I'm planning to make a PR for this to make it more concrete, but am currently having some GitHub access issues that I'm working on resolving.

@smolkaj
Copy link
Member

smolkaj commented Apr 11, 2024

Any updates on this issue? Should we discuss this at the WG meeting tomorrow?

@jonathan-dilorenzo
Copy link
Contributor Author

We can, but I'm prioritizing PR #472 before next meeting, so I'm not convinced there will be much to say. I believe the last update here was for me to decide which one I liked among a number of suggested designs and write a PR for that so we can discuss more concretely. The most promising designs were:

  1. Introduce a 'barrier' update such that any updates before the barrier must be attempted prior to any updates after the barrier. This barrier would likely have an enum or boolean determining whether writing should progress past the barrier or stop on failure. There is some concern whether this would work well in our use-case (which is FIFO).
  2. Add a processing mode and an additional atomicity mode as per comment#1.

Another option is to encode the barrier with another level of indirection, though this would be slightly trickier to make backwards compatible. And we've had discussions about how there are already too many levels of indirection for use cases that write large amounts of updates.

@smolkaj
Copy link
Member

smolkaj commented Jun 14, 2024

@jonathan-dilorenzo, would we want to push on this before 1.4.0? If so we should add the label.

@jonathan-dilorenzo
Copy link
Contributor Author

I think let's not make that assumption at least. If 1.4.0 ends up getting delayed sufficiently, then I may be able to, but I don't really have the cycles in the next few months at least.

@chrispsommers
Copy link
Collaborator

@jonathan-dilorenzo bump - Sept 13 cutoff for 1.4.0

@jonathan-dilorenzo
Copy link
Contributor Author

Thanks for the ping Chris! Let's plan not to get this in for 1.4.0. I think it needs a bit more thought.

@smolkaj smolkaj added the 1.5 Issues and PRs that we want to go into 1.5 label Aug 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.5 Issues and PRs that we want to go into 1.5
Projects
None yet
Development

No branches or pull requests

3 participants