Prechádzať zdrojové kódy

Move durio to use the clonable Raft.

Jing Yang 3 rokov pred
rodič
commit
f4f15ba2de
2 zmenil súbory, kde vykonal 3 pridanie a 4 odobranie
  1. 2 3
      durio/src/raft_service.rs
  2. 1 1
      durio/src/run.rs

+ 2 - 3
durio/src/raft_service.rs

@@ -1,6 +1,5 @@
 use std::future::Future;
 use std::net::SocketAddr;
-use std::sync::Arc;
 
 use async_trait::async_trait;
 use tarpc::context::Context;
@@ -23,7 +22,7 @@ pub(crate) trait RaftService {
 }
 
 #[derive(Clone)]
-struct RaftRpcServer(Arc<Raft<UniqueKVOp>>);
+struct RaftRpcServer(Raft<UniqueKVOp>);
 
 #[tarpc::server]
 impl RaftService for RaftRpcServer {
@@ -125,7 +124,7 @@ pub(crate) async fn connect_to_raft_service(
 
 pub(crate) fn start_raft_service_server(
     addr: SocketAddr,
-    raft: Arc<Raft<UniqueKVOp>>,
+    raft: Raft<UniqueKVOp>,
 ) -> impl Future<Output = std::io::Result<()>> {
     let server = RaftRpcServer(raft);
     crate::utils::start_tarpc_server(addr, server.serve())

+ 1 - 1
durio/src/run.rs

@@ -22,7 +22,7 @@ pub(crate) async fn run_kv_instance(
     let persister = Arc::new(DoNothingPersister::default());
 
     let kv_server = KVServer::new(remote_rafts, me, persister, None);
-    let raft = Arc::new(kv_server.raft().clone());
+    let raft = kv_server.raft().clone();
 
     start_raft_service_server(local_raft_peer, raft).await?;
     start_kv_service_server(addr, kv_server.clone()).await?;