Implement Week 7 Remote Origins with Oracle fixes

- Add credentials.rs with CredentialStore, redacted Debug (session_token shows [REDACTED])
- Add nfs.rs with ESTALE retry using Fn closure, 5s health timeout
- Add smb.rs with ENOTCONN retry handling, 5s health timeout
- Add s3.rs/sftp.rs feature-gated stubs with security documentation
- Add error variants: S3, Sftp, Timeout, Credential, NfsStaleHandle
- Fix delta.rs unused imports

Oracle fixes applied:
- SMB retry_on_disconnect for ENOTCONN (errno 107)
- session_token Debug shows [REDACTED] when Some, None otherwise
- NFS/SMB health checks wrapped with tokio::time::timeout(5s)

102 tests pass, 0 warnings.
This commit is contained in:
Alexander
2026-05-12 22:26:19 +02:00
parent d5ef68c9c9
commit 09f019730f
13 changed files with 691 additions and 3 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
use crate::cdc::CdcChunker;
use musicfs_core::{ChunkHash, FileId, FileMeta, OriginId, RealPath, VirtualPath};
use musicfs_core::{ChunkHash, FileId, FileMeta, OriginId};
use musicfs_origins::Origin;
use std::collections::{HashMap, HashSet};
use std::path::PathBuf;
@@ -224,7 +224,7 @@ pub enum DeltaError {
#[cfg(test)]
mod tests {
use super::*;
use musicfs_core::OriginId;
use musicfs_core::{OriginId, RealPath, VirtualPath};
use std::time::SystemTime;
fn make_file_meta(id: i64, path: &str, size: u64) -> FileMeta {