`cloudflare` feature: hrana streams are never closed

Đang mở Phù hợp với người mới
#2,312 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 11 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
72/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust
Lĩnh vực
databases

Hướng nghiên cứu

Đọc libsql/src/hrana/stream.rs và so sánh điều kiện biên dịch của phần triển khai Drop của RawStream với cấu hình feature cloudflare. Xác nhận hành vi với default-features = false, features = ["cloudflare"] bằng cách kiểm tra xem khi bỏ một stream thì có gửi yêu cầu đóng hay không. Hoàn tất khi các stream được mở bằng cấu hình đó sẽ được đóng khi bị bỏ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
C
Star
17.3k
Fork
557
Merge trung bình
10 ngày 15 giờ
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của tursodatabase/libsql

Tất cả issue của tursodatabase/libsql

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.