Skip to content

Commit b356ca2

Browse files
committed
changes to make merging work
1 parent 1b9d98a commit b356ca2

5 files changed

Lines changed: 22 additions & 2 deletions

File tree

src/directory/directory.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ pub type DirectoryPanicHandler = Arc<dyn Fn(Box<dyn Any + Send>) + Send + Sync +
113113
/// - The [`MMapDirectory`][crate::directory::MmapDirectory], this should be your default choice.
114114
/// - The [`RamDirectory`][crate::directory::RamDirectory], which should be used mostly for tests.
115115
pub trait Directory: DirectoryClone + fmt::Debug + Send + Sync + 'static {
116+
fn as_any(&self) -> &dyn Any;
117+
116118
/// Opens a file and returns a boxed `FileHandle`.
117119
///
118120
/// Users of `Directory` should typically call `Directory::open_read(...)`,

src/directory/managed_directory.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ fn save_managed_paths(
6262
}
6363

6464
impl ManagedDirectory {
65+
pub fn inner(&self) -> &dyn Directory {
66+
&*self.directory
67+
}
68+
6569
/// Wraps a directory as managed directory.
6670
pub fn wrap(directory: Box<dyn Directory>) -> crate::Result<ManagedDirectory> {
6771
Ok(ManagedDirectory { directory })
@@ -290,6 +294,10 @@ impl ManagedDirectory {
290294
}
291295

292296
impl Directory for ManagedDirectory {
297+
fn as_any(&self) -> &dyn Any {
298+
self
299+
}
300+
293301
fn get_file_handle(&self, path: &Path) -> Result<Arc<dyn FileHandle>, OpenReadError> {
294302
let file_slice = self.open_read(path)?;
295303
Ok(Arc::new(file_slice))

src/directory/mmap_directory.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::any::Any;
12
use std::collections::HashMap;
23
use std::fmt;
34
use std::fs::{self, File, OpenOptions};
@@ -368,6 +369,10 @@ pub(crate) fn atomic_write(path: &Path, content: &[u8]) -> io::Result<()> {
368369
}
369370

370371
impl Directory for MmapDirectory {
372+
fn as_any(&self) -> &dyn Any {
373+
self
374+
}
375+
371376
fn get_file_handle(&self, path: &Path) -> Result<Arc<dyn FileHandle>, OpenReadError> {
372377
debug!("Open Read {:?}", path);
373378
let full_path = self.resolve_path(path);

src/directory/ram_directory.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::any::Any;
12
use std::collections::HashMap;
23
use std::io::{self, BufWriter, Cursor, Write};
34
use std::path::{Path, PathBuf};
@@ -167,6 +168,10 @@ impl RamDirectory {
167168
}
168169

169170
impl Directory for RamDirectory {
171+
fn as_any(&self) -> &dyn Any {
172+
self
173+
}
174+
170175
fn get_file_handle(&self, path: &Path) -> Result<Arc<dyn FileHandle>, OpenReadError> {
171176
let file_slice = self.open_read(path)?;
172177
Ok(Arc::new(file_slice))

src/indexer/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ mod log_merge_policy;
1616
mod merge_index_test;
1717
mod merge_operation;
1818
pub(crate) mod merge_policy;
19-
pub(crate) mod merger;
19+
pub mod merger;
2020
pub(crate) mod operation;
2121
pub(crate) mod prepared_commit;
2222
mod segment_entry;
2323
mod segment_manager;
2424
mod segment_register;
25-
pub(crate) mod segment_serializer;
25+
pub mod segment_serializer;
2626
pub(crate) mod segment_updater;
2727
pub(crate) mod segment_writer;
2828
pub(crate) mod single_segment_index_writer;

0 commit comments

Comments
 (0)