Przeglądaj źródła

bin/genev: fix history events being showed once

Dastan-glitch 2 lat temu
rodzic
commit
525e4b3c98
2 zmienionych plików z 9 dodań i 35 usunięć
  1. 3 12
      bin/genev/genevd/src/main.rs
  2. 6 23
      bin/genev/genevd/src/rpc.rs

+ 3 - 12
bin/genev/genevd/src/main.rs

@@ -16,10 +16,7 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-use std::{
-    fs::remove_dir_all,
-    sync::{Arc, OnceLock},
-};
+use std::sync::{Arc, OnceLock};
 
 use darkfi::{
     async_daemonize, cli_desc,
@@ -171,12 +168,8 @@ async fn realmain(settings: Args, executor: Arc<smol::Executor<'static>>) -> Res
     //
     // RPC interface
     //
-    let rpc_interface = Arc::new(JsonRpcInterface::new(
-        "Alolymous".to_string(),
-        event_graph.clone(),
-        seen.clone(),
-        p2p.clone(),
-    ));
+    let rpc_interface =
+        Arc::new(JsonRpcInterface::new("Alolymous".to_string(), event_graph.clone(), p2p.clone()));
     let rpc_task = StoppableTask::new();
     let rpc_interface_ = rpc_interface.clone();
     rpc_task.clone().start(
@@ -205,7 +198,5 @@ async fn realmain(settings: Args, executor: Arc<smol::Executor<'static>>) -> Res
     // stop p2p
     p2p.stop().await;
 
-    remove_dir_all(datastore_path).unwrap_or(());
-
     Ok(())
 }

+ 6 - 23
bin/genev/genevd/src/rpc.rs

@@ -16,7 +16,7 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-use std::{collections::HashSet, sync::OnceLock};
+use std::collections::HashSet;
 
 use async_trait::async_trait;
 use log::{debug, error, info};
@@ -39,7 +39,6 @@ use genevd::GenEvent;
 pub struct JsonRpcInterface {
     _nickname: String,
     event_graph: EventGraphPtr,
-    seen: OnceLock<sled::Tree>,
     p2p: net::P2pPtr,
     rpc_connections: Mutex<HashSet<StoppableTaskPtr>>,
 }
@@ -63,13 +62,8 @@ impl RequestHandler for JsonRpcInterface {
 }
 
 impl JsonRpcInterface {
-    pub fn new(
-        _nickname: String,
-        event_graph: EventGraphPtr,
-        seen: OnceLock<sled::Tree>,
-        p2p: net::P2pPtr,
-    ) -> Self {
-        Self { _nickname, event_graph, seen, p2p, rpc_connections: Mutex::new(HashSet::new()) }
+    pub fn new(_nickname: String, event_graph: EventGraphPtr, p2p: net::P2pPtr) -> Self {
+        Self { _nickname, event_graph, p2p, rpc_connections: Mutex::new(HashSet::new()) }
     }
 
     // RPCAPI:
@@ -130,20 +124,10 @@ impl JsonRpcInterface {
     // <-- {"jsonrpc": "2.0", "result": [task_id, ...], "id": 1}
     async fn list(&self, id: u16, _params: JsonValue) -> JsonResult {
         debug!("Fetching all events");
-        let mut sevents = vec![];
-
-        ////////////////////
-        // get history
-        ////////////////////
+        let mut seen_events = vec![];
         let dag_events = self.event_graph.order_events().await;
-        let seen_events = self.seen.get().unwrap();
 
         for event_id in dag_events.iter() {
-            // If it was seen, skip
-            if seen_events.contains_key(event_id.as_bytes()).unwrap() {
-                continue
-            }
-
             // Get the event from the DAG
             let event = self.event_graph.dag_get(event_id).await.unwrap().unwrap();
 
@@ -157,11 +141,10 @@ impl JsonRpcInterface {
             };
 
             info!("Marking event {} as seen", event_id);
-            seen_events.insert(event_id.as_bytes(), &[]).unwrap();
-            sevents.push(genevent);
+            seen_events.push(genevent);
         }
 
-        let ser = darkfi_serial::serialize(&sevents);
+        let ser = darkfi_serial::serialize(&seen_events);
         let enc = JsonValue::String(base64::encode(&ser));
 
         JsonResponse::new(enc, id).into()