1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-12-16 21:26:34 +00:00

feat(files): remove block on, as it does more harm than good here

This commit is contained in:
Joel Wurtz 2024-12-13 15:49:54 +01:00
parent 8115c818c1
commit d292546b54
No known key found for this signature in database
GPG key ID: ED264D1967A51B0D
2 changed files with 9 additions and 13 deletions

View file

@ -3,6 +3,7 @@
## Unreleased ## Unreleased
- Minimum supported Rust version (MSRV) is now 1.75. - Minimum supported Rust version (MSRV) is now 1.75.
- Avoid spawning a thread for each file which does more harm than good
## 0.6.6 ## 0.6.6

View file

@ -80,22 +80,17 @@ async fn chunked_read_file_callback(
) -> Result<(File, Bytes), Error> { ) -> Result<(File, Bytes), Error> {
use io::{Read as _, Seek as _}; use io::{Read as _, Seek as _};
let res = actix_web::web::block(move || { let mut buf = Vec::with_capacity(max_bytes);
let mut buf = Vec::with_capacity(max_bytes);
file.seek(io::SeekFrom::Start(offset))?; file.seek(io::SeekFrom::Start(offset))?;
let n_bytes = file.by_ref().take(max_bytes as u64).read_to_end(&mut buf)?; let n_bytes = file.by_ref().take(max_bytes as u64).read_to_end(&mut buf)?;
if n_bytes == 0 { if n_bytes == 0 {
Err(io::Error::from(io::ErrorKind::UnexpectedEof)) Err(Error::from(io::Error::from(io::ErrorKind::UnexpectedEof)))
} else { } else {
Ok((file, Bytes::from(buf))) Ok((file, Bytes::from(buf)))
} }
})
.await??;
Ok(res)
} }
#[cfg(feature = "experimental-io-uring")] #[cfg(feature = "experimental-io-uring")]