apache / apache/iotdb-client-rust
Session::open does not fail over when openSession/requestStatementId fails (only TCP-layer failover)
- Langage dominant
- Rust
- Étoiles
- 1
- Forks
- 0
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
`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()`.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par Session::open et comparez sa boucle de endpoints avec reconnect(). Suivez authenticate(), y compris openSession et requestStatementId, afin de comprendre où chaque échec est pris en charge. Le travail est considéré comme terminé lorsque les échecs d’authentification entraînent l’essai du prochain endpoint configuré, conformément au comportement de reconnect() ; aucun fichier de test n’est nommé dans l’issue.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rust
- Domaine
- databases
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- Active
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 78/100