apache / apache/iotdb-client-rust

Session::open does not fail over when openSession/requestStatementId fails (only TCP-layer failover)

Offen Anfängerfreundlich
#5 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Rust
Sterne
1
Forks
0
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

`Session::open` only fails over at the TCP layer: the loop over `config.endpoints` opens a `Connection`, but `authenticate()` (openSession + requestStatementId) runs **after** the loop. `reconnect()` does the opposite — it retries connect **and** authenticate for every endpoint.

With a 3-node cluster where one node accepts TCP but fails `openSession` (e.g. overloaded, misconfigured, or wedged by the missing socket timeout), roughly one `open()` in three fails while 2 of 3 nodes are healthy.

Fix: move the `authenticate()` step inside the endpoint loop, mirroring `reconnect()`.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne bei Session::open und vergleiche dessen Endpunkt-Schleife mit reconnect(). Verfolge authenticate(), einschließlich openSession und requestStatementId, um zu verstehen, wo jeder Fehler behandelt wird. Als abgeschlossen gilt, dass Authentifizierungsfehler dazu führen, dass der nächste konfigurierte Endpunkt ausprobiert wird, entsprechend dem Verhalten von reconnect(); in der Issue wird keine Testdatei genannt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Aktiv
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
78/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.