You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This implements a general way to run some of our services concurrently,
notably _just_ the ones that are supposed to be run on one node manager
specifically, like `Read` and `Write`.
This involved some slightly fiddly async code, but the result isn't too
bad, and allows us to generalize a few things that we're not very
consistent about, like setting `current_node_manager_index` between
calls.
Doing this properly required cloning the `RequestContext`. I'm concerned
about the cost of this clone, which up until now we've been pretty lazy
about, so I moved the shared part into an `inner` field behind an `Arc`.
To avoid this breaking every server implementation I added a
`Deref<RequestContextInner>` to `RequestContext` which is a bad
practice, but does seem alright in this case.
Copy file name to clipboardExpand all lines: TODO.md
-1Lines changed: 0 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,5 +11,4 @@ This is a list of things that are known to be missing, or ideas that could be im
11
11
- Write some "bad ideas" servers, it would be nice to showcase how flexible this is.
12
12
- Write a framework for method calls. The foundation for this has been laid with `TryFromVariant`, if we really wanted to we could use clever trait magic to let users simply define a rust method that takes in values that each implement a trait `MethodArg`, with a blanket impl for `TryFromVariant`, and return a tuple of results. Could be really powerful, but methods are a little niche.
13
13
- Implement `Query`. I never got around to this, because the service is just so complex. Currently there is no way to actually implement it, since it won't work unless _all_ node managers implement it, and the core node managers don't.
14
-
- Look into running certain services concurrently. Currently they are sequential because that makes everything much simpler, but the services that don't have any cross node-manager interaction could run on all node managers concurrently.
0 commit comments