Fix sync stage (#2326)
* f * a --------- Co-authored-by: Skynet 2 <name@domain.example>
This commit is contained in:
parent
fa17f47115
commit
b6bb604c71
@ -98,7 +98,7 @@ where
|
|||||||
.get::<SyncFromDiskMetadata>()
|
.get::<SyncFromDiskMetadata>()
|
||||||
.map(|m| m.last_time);
|
.map(|m| m.last_time);
|
||||||
|
|
||||||
if let (Some(max_time), mut new_files) = self.load_from_directory(&last)? {
|
if let (Some(max_time), mut new_files) = self.load_from_directory(None, &last)? {
|
||||||
if last.is_none() {
|
if last.is_none() {
|
||||||
state
|
state
|
||||||
.metadata_map_mut()
|
.metadata_map_mut()
|
||||||
@ -175,11 +175,15 @@ impl<CB, E, EM, Z> SyncFromDiskStage<CB, E, EM, Z> {
|
|||||||
|
|
||||||
fn load_from_directory(
|
fn load_from_directory(
|
||||||
&self,
|
&self,
|
||||||
|
path: Option<PathBuf>,
|
||||||
last: &Option<SystemTime>,
|
last: &Option<SystemTime>,
|
||||||
) -> Result<(Option<SystemTime>, Vec<PathBuf>), Error> {
|
) -> Result<(Option<SystemTime>, Vec<PathBuf>), Error> {
|
||||||
let mut max_time = None;
|
let mut max_time = None;
|
||||||
let mut left_to_sync = Vec::<PathBuf>::new();
|
let mut left_to_sync = Vec::<PathBuf>::new();
|
||||||
let in_dir = self.sync_dir.clone();
|
let in_dir = match path {
|
||||||
|
Some(p) => p,
|
||||||
|
None => self.sync_dir.clone(),
|
||||||
|
};
|
||||||
|
|
||||||
for entry in fs::read_dir(in_dir)? {
|
for entry in fs::read_dir(in_dir)? {
|
||||||
let entry = entry?;
|
let entry = entry?;
|
||||||
@ -204,7 +208,8 @@ impl<CB, E, EM, Z> SyncFromDiskStage<CB, E, EM, Z> {
|
|||||||
left_to_sync.push(path.clone());
|
left_to_sync.push(path.clone());
|
||||||
}
|
}
|
||||||
} else if attr.is_dir() {
|
} else if attr.is_dir() {
|
||||||
let (dir_max_time, dir_left_to_sync) = self.load_from_directory(last)?;
|
let (dir_max_time, dir_left_to_sync) =
|
||||||
|
self.load_from_directory(Some(entry.path()), last)?;
|
||||||
if let Some(time) = dir_max_time {
|
if let Some(time) = dir_max_time {
|
||||||
max_time = Some(max_time.map_or(time, |t: SystemTime| t.max(time)));
|
max_time = Some(max_time.map_or(time, |t: SystemTime| t.max(time)));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user