Explorar o código

Save one snapshot clone in the daemon.

Jing Yang %!s(int64=4) %!d(string=hai) anos
pai
achega
ece238ce47
Modificáronse 1 ficheiros con 6 adicións e 1 borrados
  1. 6 1
      src/snapshot.rs

+ 6 - 1
src/snapshot.rs

@@ -162,7 +162,12 @@ impl<C: 'static + Clone + Default + Send + serde::Serialize> Raft<C> {
                         request_snapshot(log_start.index + 1);
                         snapshot_daemon.current_snapshot.1.wait(&mut snapshot);
                     }
-                    snapshot.clone()
+                    let mut taken_snapshot = Snapshot {
+                        last_included_index: snapshot.last_included_index,
+                        data: vec![],
+                    };
+                    std::mem::swap(&mut taken_snapshot, &mut snapshot);
+                    taken_snapshot
                 };
 
                 let mut rf = rf.lock();