S3 connection hangs when S3 Put request times out server side.
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- cpp
- Área
- cloud, networking
Línea de trabajo
Empieza en s3_key_value_store.cc alrededor de la línea 764 y sigue IssueRequestOptions hasta curl_transport.cc alrededor de las líneas 198-205. Revisa cómo se establecen actualmente de forma predeterminada request_timeout y connect_timeout, y cómo debería exponerlos el controlador S3. Se considera terminado cuando un timeout del servidor hace que la solicitud se cancele y se reintente, en lugar de quedarse bloqueada durante aproximadamente 30 minutos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi google friends! Apologies for the trouble!! We found this interesting issue when using tensorstore!! Thanks for taking a look
Summary
When an S3 PUT request is timed out server-side, the TensorStore client can hang for ~30 minutes before retrying. During this window, S3 access logs show zero retries — the request appears to be "in flight" on the client but dead on the
server. The receive of the request is confirmed by s3 access logs.
The ~30-minute gap matches the default OS-level TCP keepalive + retransmission timeout, which is the only thing that eventually forces the stalled socket closed.
Root Cause
2 layers of missing timeout configuration compound each other:
1. S3 driver issues requests with no timeouts (s3_key_value_store.cc:764)
auto future = owner->transport_->IssueRequest(
request, internal_http::IssueRequestOptions(value_));
// IssueRequestOptions only sets payload; request_timeout and connect_timeout
// remain at their defaults of absl::ZeroDuration().
- Zero duration → curl sets nothing (curl_transport.cc:198-205)
if (options.request_timeout > absl::ZeroDuration()) { // never true
handle_.SetOption(CURLOPT_TIMEOUT_MS, ...);
}
CURLOPT_TIMEOUT_MS is never set, so libcurl has no deadline on the transfer.
Workaround
Set environment variables before launching your process:
export TENSORSTORE_CURL_LOW_SPEED_TIME_SECONDS=30
export TENSORSTORE_CURL_LOW_SPEED_LIMIT_BYTES=1
This enables the low-speed watchdog: if fewer than 1 byte/sec is transferred for 30 seconds, libcurl aborts the request and the retry logic takes over.
Suggested fix
- Expose request timeout and connect timeout to s3 query driver
- Lenguaje dominante
- C++
- Estrellas
- 1.6k
- Forks
- 151
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de google/tensorstore
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
google/tensorstore#305 ·
-
Ship Python 3.15 wheelsAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
google/tensorstore#298 · 1 comentario ·
-
Zarr3 rectilinear chunk gridAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
google/tensorstore#288 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
google/tensorstore#279 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 28/100
google/tensorstore#251 · 13 comentarios ·
Todos los issues de google/tensorstore
Issues similares
-
documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Lua File: add readWhole()Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
grumpycoders/pcsx-redux#2667 ·
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
bug module: copilot
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
MaaAssistantArknights/MaaAssistantArknights#19250 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
LadybirdBrowser/ladybird#14486 ·
Los mantenedores suelen responder en 1 día