mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-17 02:12:56 +00:00
make the repro work by removing the lifetime param from FileGuard
This commit is contained in:
@@ -485,7 +485,7 @@ impl VirtualFile {
|
||||
///
|
||||
/// We are doing it via a macro as Rust doesn't support async closures that
|
||||
/// take on parameters with lifetimes.
|
||||
async fn lock_file(&self) -> Result<FileGuard<'static>, Error> {
|
||||
async fn lock_file(&self) -> Result<FileGuard, Error> {
|
||||
let open_files = get_open_files();
|
||||
|
||||
let mut handle_guard = {
|
||||
@@ -604,13 +604,11 @@ impl VirtualFile {
|
||||
}
|
||||
|
||||
with_file!(self, StorageIoOperation::Read, |file_guard| {
|
||||
assert_send(Self::read_exact_at0(unsafe {
|
||||
OwnedFd::from_raw_fd(file_guard.as_fd())
|
||||
}, page, offset)).await
|
||||
assert_send(Self::read_exact_at0(file_guard, page, offset)).await
|
||||
})
|
||||
}
|
||||
async fn read_exact_at0(
|
||||
file_guard: OwnedFd,
|
||||
file_guard: FileGuard,
|
||||
write_guard: PageWriteGuard<'static>,
|
||||
offset: u64,
|
||||
) -> Result<PageWriteGuard<'static>, Error> {
|
||||
@@ -689,11 +687,11 @@ impl VirtualFile {
|
||||
}
|
||||
}
|
||||
|
||||
struct FileGuard<'a> {
|
||||
slot_guard: RwLockReadGuard<'a, SlotInner>,
|
||||
struct FileGuard {
|
||||
slot_guard: RwLockReadGuard<'static, SlotInner>,
|
||||
}
|
||||
|
||||
impl AsRef<OwnedFd> for FileGuard<'static> {
|
||||
impl AsRef<OwnedFd> for FileGuard {
|
||||
fn as_ref(&self) -> &OwnedFd {
|
||||
// This unwrap is safe because we only create `FileGuard`s
|
||||
// if we know that the file is Some.
|
||||
@@ -701,7 +699,7 @@ impl AsRef<OwnedFd> for FileGuard<'static> {
|
||||
}
|
||||
}
|
||||
|
||||
impl FileGuard<'static> {
|
||||
impl FileGuard {
|
||||
// TODO: switch to tokio-epoll-uring native operations.
|
||||
#[deprecated]
|
||||
fn with_std_file<F, R>(&mut self, with: F) -> R
|
||||
@@ -716,7 +714,7 @@ impl FileGuard<'static> {
|
||||
}
|
||||
}
|
||||
|
||||
impl tokio_epoll_uring::IoFd for FileGuard<'static> {
|
||||
impl tokio_epoll_uring::IoFd for FileGuard {
|
||||
unsafe fn as_fd(&self) -> RawFd {
|
||||
let owned_fd: &OwnedFd = self.as_ref();
|
||||
owned_fd.as_raw_fd()
|
||||
|
||||
Reference in New Issue
Block a user