go client reports `invalid connection` after idle for wait_timeout
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 20/100
- Tipo de issue
- Bug
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- go
- Domínio
- databases, networking
Direção de pesquisa
Execute a reprodução em Go do issue e, em seguida, inspecione packets.go:37 e packets.go:122 juntamente com o comportamento de retry de database/sql nas linhas 1536-1546 vinculadas de sql.go. O issue não especifica uma alteração de código proposta; para avançar, seria necessário determinar se o caminho de conexão inválida pode ser alterado para que o comportamento observado de wait_timeout seja tratado corretamente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Bug Report
Please answer these questions before submitting your issue. Thanks!
1. Minimal reproduce step (Required)
dbt.mustExec("SET @@SESSION.wait_timeout = 2")
// wait for TiDB to close our connection
time.Sleep(3 * time.Second)
tx, err := dbt.db.Begin()
if err != nil {
dbt.Fatal(err)
}
2. What did you expect to see? (Required)
The driver logs packets.go:122: closing bad idle connection: EOF 3 times but dbt.db.Begin doesn't report any errors because it creates a new connection internally and then retry.
3. What did you see instead (Required)
The driver logs packets.go:37: unexpected EOF and dbt.db.Begin reports invalid connection.
4. What is your version? (Required)
master.
The reason:
TiProxy doesn't close the connection immediately after wait_timeout and still receives requests. After it receives the request, it finds that TiDB has disconnected and then closes the client connection. So the client encounters an ErrInvalidConn in readPacket instead of ErrBadConn in writePacket.
The client will retry by creating a new connection if encounters ErrBadConn but won't retry if encounters ErrInvalidConn, see https://github.com/golang/go/blob/master/src/database/sql/sql.go#L1536-1546
I think there's no way to solve it.
- Linguagem predominante
- Go
- Estrelas
- 74
- Forks
- 40
- Merge médio
- 13h 16min
- PRs com merge (30d)
- 15
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de pingcap/tiproxy
-
migration:bb7133-tiproxy
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
migration:bb7133-tiproxy
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
[Rust-dataplane] Migration backend handshake must preserve CONNECT_WITH_DB when current-db emptyAbertamigration:bb7133-tiproxy
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
Mantenedores costumam responder em até 1 dia
-
[Rust-dataplane] Migration must not force CONNECT_ATTRS on backend lacking it with empty attrsAbertamigration:bb7133-tiproxy
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
Mantenedores costumam responder em até 1 dia
-
migration:bb7133-tiproxy
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
Todas as issues de pingcap/tiproxy
Issues semelhantes
-
automation doc-healer documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
tsukumogami/tsuku#2804 ·
Mantenedores costumam responder em até 1 dia
-
Anthropic /v1/messages: only the last thinking block of an assistant message is keptTalvez já em andamento @Shayan12456 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
ollama/ollama#19415 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
raised-by:verifier
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
medici-finance/assay#5039 ·
Mantenedores costumam responder em até 1 dia
-
metax CheckHealth reads Status.Capacity, so unhealthy Metax-GPU nodes are never cleaned upTalvez já em andamento @barbierajput378-pixel assumiu hoje. Abertakind/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Project-HAMi/HAMi#3343 · 1 comentário ·
Mantenedores costumam responder em até 1 dia