`cloudflare` feature: hrana streams are never closed

Abierto Apto para principiantes
#2,312 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 11 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
rust
Área
databases

Línea de trabajo

Lee libsql/src/hrana/stream.rs y compara la condición de compilación de la implementación de Drop de RawStream con la configuración de la feature cloudflare. Confirma el comportamiento con default-features = false, features = ["cloudflare"] comprobando si al descartar un stream se envía una solicitud de cierre. La tarea está terminada cuando los streams abiertos con esa configuración se cierren al descartarlos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

With default-features = false, features = ["cloudflare"], the client never sends a close request for the hrana streams it opens. The Drop impl that sends it is compiled only with the remote feature.

Where

libsql/src/hrana/stream.rs. The code is identical in 0.9.30, 0.10.0 and current main:

#[cfg(feature = "remote")]
impl<T> Drop for RawStream<T>
where
    T: HttpSend,
{
    fn drop(&mut self) {
        let baton = self.baton.get_mut().take();
        if let Some(baton) = baton {
            // ... sends StreamRequest::Close via self.client.oneshot(...)
        }
    }
}

With only cloudflare enabled, this impl does not exist, so dropping a RawStream sends nothing.

What we observed

Setup:

  • libsql 0.9.30 (default-features = false, features = ["cloudflare"])
  • worker 0.6.7, wrangler dev 4.105.0
  • local sqld 0.24.31 with default settings

We sent a few dozen sequential requests to the worker; each request runs several statements. Every query after that failed. sqld logged:

ERROR libsql_server::hrana::http: hrana server: Timed out while opening database connection
ERROR libsql_server::error: HTTP API: 429 Too Many Requests, DbCreateTimeout

The client got:

Hrana: `api error: `{"error":"Timed out while opening database connection"}``

After restarting sqld with --max-concurrent-connections 4096 --max-concurrent-requests 4096, the same requests (over 200 sequential ones) succeeded.

Lenguaje dominante
C
Estrellas
17.3k
Forks
557
Merge medio
10 d 15 h
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de tursodatabase/libsql

Todos los issues de tursodatabase/libsql

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.