gateway: reconnect to the trading farm the auth server named (ibx#295) - #357
Closed
userFRM wants to merge 1 commit into
Closed
gateway: reconnect to the trading farm the auth server named (ibx#295)#357userFRM wants to merge 1 commit into
userFRM wants to merge 1 commit into
Conversation
The auth server names the trading farm to use, and the reconnect path re-derived one instead of keeping it, so a session routed to a regional farm reconnected somewhere else. `ReconnectAuth` now carries the trading host and farm as the auth response gave them, and the reconnect selects that route. Nothing selected it, though. The reconnect credentials were left blank at construction for the caller to fill, and only the Python binding filled them — `EClient::connect_inner` never did, so every scheduler refused to run on the empty host and no Rust caller reconnected on any transport. The routing this change selects sits downstream of that, and was unreachable. The credentials are a constructor parameter now rather than a field set afterwards. `into_hot_loop_with_farms` takes a `CallerAuth`, both bindings pass one, and the setter that could be forgotten is gone. A binding that omits them does not compile. Closes deepentropy#295. Closes deepentropy#378.
userFRM
force-pushed
the
fix/reconnect-trading-farm-name
branch
from
July 30, 2026 16:48
2bb32b8 to
82f015f
Compare
Author
|
Closing this. It's in #409 along with the rest of the fork, which is easier to take in one piece than sixty separate branches. |
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.
Problem
The auth server names the trading farm to use, and the reconnect path re-derived one instead of keeping it — so a session routed to a regional farm reconnected somewhere else.
What this changes
ReconnectAuthcarries the trading host and farm as the auth response gave them, and the reconnect selects that route rather than re-deriving one.The routing was unreachable
Nothing selected it. The reconnect credentials were left blank at construction for the caller to fill, and only the Python binding filled them:
EClient::connect_innernever did. Every scheduler gates on a non-emptyauth.host, so no Rust caller reconnected on any transport — farm, CCP or HMDS. The jittered backoff of #218 and the warm-up suppression of #219 were dead code for Rust callers.The credentials are now a constructor parameter rather than a field set afterwards.
into_hot_loop_with_farmstakes aCallerAuth, both bindings pass one, and the setter that could be forgotten is gone — a binding that omits them does not compile. That is what closes the class rather than the instance; the compiler found two further construction sites in the bench harnesses while this was applied.Breaking change to the low-level API
Gateway::into_hot_loopandinto_hot_loop_with_farmstake aCallerAuth.HotLoop::update_reconnect_authis removed — pass the values at construction instead.Client/EClientand the Python surface are unchanged.Closes #295. Closes #378.
Test plan
tests/farm_reconnect_pocupdated to the new signature and checks clean.cargo check --offlineclean on--lib,--lib --features python,--bins,--examples, and each integration target individually.tests/ib_paper_compatcompared against a clean checkout of the base commit — identical sorted diagnostic sets.cargo test --offline --lib— only the two knownconfig::expiry_testsfailures, which fail on the base commit for missing legacy tzdata (fixed separately in config: resolve the legacy timezone names IB states its times in (ibx#335) #336).