Merge pull request #2954 from TheBlueMatt/2024-03-test-ci-beta-fail
[rust-lightning] / lightning-persister / src / fs_store.rs
index 42b28018fe9202ce4435a41dc87907433b156e7d..364a3ee706f5288fd61dc52df53d6c135799f1cd 100644 (file)
@@ -67,7 +67,7 @@ impl FilesystemStore {
                }
        }
 
-       fn get_dest_dir_path(&self, namespace: &str, sub_namespace: &str) -> std::io::Result<PathBuf> {
+       fn get_dest_dir_path(&self, primary_namespace: &str, secondary_namespace: &str) -> std::io::Result<PathBuf> {
                let mut dest_dir_path = {
                        #[cfg(target_os = "windows")]
                        {
@@ -81,9 +81,9 @@ impl FilesystemStore {
                        }
                };
 
-               dest_dir_path.push(namespace);
-               if !sub_namespace.is_empty() {
-                       dest_dir_path.push(sub_namespace);
+               dest_dir_path.push(primary_namespace);
+               if !secondary_namespace.is_empty() {
+                       dest_dir_path.push(secondary_namespace);
                }
 
                Ok(dest_dir_path)
@@ -91,10 +91,10 @@ impl FilesystemStore {
 }
 
 impl KVStore for FilesystemStore {
-       fn read(&self, namespace: &str, sub_namespace: &str, key: &str) -> std::io::Result<Vec<u8>> {
-               check_namespace_key_validity(namespace, sub_namespace, Some(key), "read")?;
+       fn read(&self, primary_namespace: &str, secondary_namespace: &str, key: &str) -> std::io::Result<Vec<u8>> {
+               check_namespace_key_validity(primary_namespace, secondary_namespace, Some(key), "read")?;
 
-               let mut dest_file_path = self.get_dest_dir_path(namespace, sub_namespace)?;
+               let mut dest_file_path = self.get_dest_dir_path(primary_namespace, secondary_namespace)?;
                dest_file_path.push(key);
 
                let mut buf = Vec::new();
@@ -114,10 +114,10 @@ impl KVStore for FilesystemStore {
                Ok(buf)
        }
 
-       fn write(&self, namespace: &str, sub_namespace: &str, key: &str, buf: &[u8]) -> std::io::Result<()> {
-               check_namespace_key_validity(namespace, sub_namespace, Some(key), "write")?;
+       fn write(&self, primary_namespace: &str, secondary_namespace: &str, key: &str, buf: &[u8]) -> std::io::Result<()> {
+               check_namespace_key_validity(primary_namespace, secondary_namespace, Some(key), "write")?;
 
-               let mut dest_file_path = self.get_dest_dir_path(namespace, sub_namespace)?;
+               let mut dest_file_path = self.get_dest_dir_path(primary_namespace, secondary_namespace)?;
                dest_file_path.push(key);
 
                let parent_directory = dest_file_path
@@ -201,10 +201,10 @@ impl KVStore for FilesystemStore {
                res
        }
 
-       fn remove(&self, namespace: &str, sub_namespace: &str, key: &str, lazy: bool) -> std::io::Result<()> {
-               check_namespace_key_validity(namespace, sub_namespace, Some(key), "remove")?;
+       fn remove(&self, primary_namespace: &str, secondary_namespace: &str, key: &str, lazy: bool) -> std::io::Result<()> {
+               check_namespace_key_validity(primary_namespace, secondary_namespace, Some(key), "remove")?;
 
-               let mut dest_file_path = self.get_dest_dir_path(namespace, sub_namespace)?;
+               let mut dest_file_path = self.get_dest_dir_path(primary_namespace, secondary_namespace)?;
                dest_file_path.push(key);
 
                if !dest_file_path.is_file() {
@@ -290,10 +290,10 @@ impl KVStore for FilesystemStore {
                Ok(())
        }
 
-       fn list(&self, namespace: &str, sub_namespace: &str) -> std::io::Result<Vec<String>> {
-               check_namespace_key_validity(namespace, sub_namespace, None, "list")?;
+       fn list(&self, primary_namespace: &str, secondary_namespace: &str) -> std::io::Result<Vec<String>> {
+               check_namespace_key_validity(primary_namespace, secondary_namespace, None, "list")?;
 
-               let prefixed_dest = self.get_dest_dir_path(namespace, sub_namespace)?;
+               let prefixed_dest = self.get_dest_dir_path(primary_namespace, secondary_namespace)?;
                let mut keys = Vec::new();
 
                if !Path::new(&prefixed_dest).exists() {
@@ -320,7 +320,7 @@ impl KVStore for FilesystemStore {
 
                        let metadata = p.metadata()?;
 
-                       // We allow the presence of directories in the empty namespace and just skip them.
+                       // We allow the presence of directories in the empty primary namespace and just skip them.
                        if metadata.is_dir() {
                                continue;
                        }
@@ -328,9 +328,9 @@ impl KVStore for FilesystemStore {
                        // If we otherwise don't find a file at the given path something went wrong.
                        if !metadata.is_file() {
                                debug_assert!(false, "Failed to list keys of {}/{}: file couldn't be accessed.",
-                                       PrintableString(namespace), PrintableString(sub_namespace));
+                                       PrintableString(primary_namespace), PrintableString(secondary_namespace));
                                let msg = format!("Failed to list keys of {}/{}: file couldn't be accessed.",
-                                       PrintableString(namespace), PrintableString(sub_namespace));
+                                       PrintableString(primary_namespace), PrintableString(secondary_namespace));
                                return Err(std::io::Error::new(std::io::ErrorKind::Other, msg));
                        }
 
@@ -342,17 +342,17 @@ impl KVStore for FilesystemStore {
                                                }
                                        } else {
                                                debug_assert!(false, "Failed to list keys of {}/{}: file path is not valid UTF-8",
-                                                       PrintableString(namespace), PrintableString(sub_namespace));
+                                                       PrintableString(primary_namespace), PrintableString(secondary_namespace));
                                                let msg = format!("Failed to list keys of {}/{}: file path is not valid UTF-8",
-                                                       PrintableString(namespace), PrintableString(sub_namespace));
+                                                       PrintableString(primary_namespace), PrintableString(secondary_namespace));
                                                return Err(std::io::Error::new(std::io::ErrorKind::Other, msg));
                                        }
                                }
                                Err(e) => {
                                        debug_assert!(false, "Failed to list keys of {}/{}: {}",
-                                               PrintableString(namespace), PrintableString(sub_namespace), e);
+                                               PrintableString(primary_namespace), PrintableString(secondary_namespace), e);
                                        let msg = format!("Failed to list keys of {}/{}: {}",
-                                               PrintableString(namespace), PrintableString(sub_namespace), e);
+                                               PrintableString(primary_namespace), PrintableString(secondary_namespace), e);
                                        return Err(std::io::Error::new(std::io::ErrorKind::Other, msg));
                                }
                        }
@@ -369,7 +369,6 @@ mod tests {
        use super::*;
        use crate::test_utils::{do_read_write_remove_list_persist, do_test_store};
 
-       use bitcoin::hashes::hex::FromHex;
        use bitcoin::Txid;
 
        use lightning::chain::ChannelMonitorUpdateStatus;
@@ -380,12 +379,7 @@ mod tests {
        use lightning::ln::functional_test_utils::*;
        use lightning::util::test_utils;
        use lightning::util::persist::read_channel_monitors;
-       use std::fs;
-       #[cfg(target_os = "windows")]
-       use {
-               lightning::get_event_msg,
-               lightning::ln::msgs::ChannelMessageHandler,
-       };
+       use std::str::FromStr;
 
        impl Drop for FilesystemStore {
                fn drop(&mut self) {
@@ -436,7 +430,7 @@ mod tests {
        }
 
        // Test that if the store's path to channel data is read-only, writing a
-       // monitor to it results in the store returning an InProgress.
+       // monitor to it results in the store returning an UnrecoverableError.
        // Windows ignores the read-only flag for folders, so this test is Unix-only.
        #[cfg(not(target_os = "windows"))]
        #[test]
@@ -455,10 +449,10 @@ mod tests {
                check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
                let mut added_monitors = nodes[1].chain_monitor.added_monitors.lock().unwrap();
                let update_map = nodes[1].chain_monitor.latest_monitor_update_id.lock().unwrap();
-               let update_id = update_map.get(&added_monitors[0].0.to_channel_id()).unwrap();
+               let update_id = update_map.get(&added_monitors[0].1.channel_id()).unwrap();
 
                // Set the store's directory to read-only, which should result in
-               // returning a permanent failure when we then attempt to persist a
+               // returning an unrecoverable failure when we then attempt to persist a
                // channel update.
                let path = &store.get_data_dir();
                let mut perms = fs::metadata(path).unwrap().permissions();
@@ -466,7 +460,7 @@ mod tests {
                fs::set_permissions(path, perms).unwrap();
 
                let test_txo = OutPoint {
-                       txid: Txid::from_hex("8984484a580b825b9972d7adb15050b3ab624ccd731946b3eeddb92f4e7ef6be").unwrap(),
+                       txid: Txid::from_str("8984484a580b825b9972d7adb15050b3ab624ccd731946b3eeddb92f4e7ef6be").unwrap(),
                        index: 0
                };
                match store.persist_new_channel(test_txo, &added_monitors[0].1, update_id.2) {
@@ -494,7 +488,7 @@ mod tests {
                check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
                let mut added_monitors = nodes[1].chain_monitor.added_monitors.lock().unwrap();
                let update_map = nodes[1].chain_monitor.latest_monitor_update_id.lock().unwrap();
-               let update_id = update_map.get(&added_monitors[0].0.to_channel_id()).unwrap();
+               let update_id = update_map.get(&added_monitors[0].1.channel_id()).unwrap();
 
                // Create the store with an invalid directory name and test that the
                // channel fails to open because the directories fail to be created. There
@@ -503,7 +497,7 @@ mod tests {
                let store = FilesystemStore::new(":<>/".into());
 
                let test_txo = OutPoint {
-                       txid: Txid::from_hex("8984484a580b825b9972d7adb15050b3ab624ccd731946b3eeddb92f4e7ef6be").unwrap(),
+                       txid: Txid::from_str("8984484a580b825b9972d7adb15050b3ab624ccd731946b3eeddb92f4e7ef6be").unwrap(),
                        index: 0
                };
                match store.persist_new_channel(test_txo, &added_monitors[0].1, update_id.2) {