diff --git a/eden/mononoke/blobstore/redactedblobstore/src/lib.rs b/eden/mononoke/blobstore/redactedblobstore/src/lib.rs index a50a62c52c..2febc8bcd6 100644 --- a/eden/mononoke/blobstore/redactedblobstore/src/lib.rs +++ b/eden/mononoke/blobstore/redactedblobstore/src/lib.rs @@ -250,6 +250,7 @@ mod test { use maplit::hashmap; use memblob::Memblob; use prefixblob::PrefixBlobstore; + use std::sync::Arc; #[fbinit::test] async fn test_redacted_key(fb: FacebookInit) { @@ -261,12 +262,12 @@ mod test { borrowed!(ctx); let inner = Memblob::default(); - let redacted_pairs = RedactedBlobs::FromSql(hashmap! { + let redacted_pairs = RedactedBlobs::FromSql(Arc::new(hashmap! { redacted_key.to_owned() => RedactedMetadata { task: redacted_task.to_owned(), log_only: false, }, - }); + })); let blob = RedactedBlobstore::new( PrefixBlobstore::new(inner, "prefix"), @@ -322,12 +323,12 @@ mod test { borrowed!(ctx); let inner = Memblob::default(); - let redacted_pairs = RedactedBlobs::FromSql(hashmap! { + let redacted_pairs = RedactedBlobs::FromSql(Arc::new(hashmap! { redacted_log_only_key.to_owned() => RedactedMetadata { task: redacted_task.to_owned(), log_only: true, }, - }); + })); let blob = RedactedBlobstore::new( PrefixBlobstore::new(inner, "prefix"), diff --git a/eden/mononoke/blobstore/redactedblobstore/src/store.rs b/eden/mononoke/blobstore/redactedblobstore/src/store.rs index 43e13b78f4..0b9d63d353 100644 --- a/eden/mononoke/blobstore/redactedblobstore/src/store.rs +++ b/eden/mononoke/blobstore/redactedblobstore/src/store.rs @@ -12,6 +12,7 @@ use sql::{queries, Connection}; use sql_construct::{SqlConstruct, SqlConstructFromMetadataDatabaseConfig}; use sql_ext::SqlConnections; use std::collections::HashMap; +use std::sync::Arc; #[derive(Clone)] pub struct SqlRedactedContentStore { @@ -70,13 +71,13 @@ pub struct RedactedMetadata { #[derive(Debug, Clone)] pub enum RedactedBlobs { - FromSql(HashMap), + FromSql(Arc>), } impl RedactedBlobs { - pub fn redacted(&self) -> &HashMap { + pub fn redacted(&self) -> Arc> { match self { - Self::FromSql(hm) => &hm, + Self::FromSql(hm) => hm.clone(), } } } @@ -84,7 +85,7 @@ impl RedactedBlobs { impl SqlRedactedContentStore { pub async fn get_all_redacted_blobs(&self) -> Result { let redacted_blobs = GetAllRedactedBlobs::query(&self.read_connection).await?; - Ok(RedactedBlobs::FromSql( + Ok(RedactedBlobs::FromSql(Arc::new( redacted_blobs .into_iter() .map(|(key, task, log_only)| { @@ -95,7 +96,7 @@ impl SqlRedactedContentStore { (key, redacted_metadata) }) .collect(), - )) + ))) } pub async fn insert_redacted_blobs( diff --git a/eden/mononoke/lfs_server/src/batch.rs b/eden/mononoke/lfs_server/src/batch.rs index db5fe3197d..82f23da766 100644 --- a/eden/mononoke/lfs_server/src/batch.rs +++ b/eden/mononoke/lfs_server/src/batch.rs @@ -1037,12 +1037,12 @@ mod test { // Now, create a new blob repo with the same blob store, but with some data redacted. let repo = factory - .redacted(Some(RedactedBlobs::FromSql(hashmap! { + .redacted(Some(RedactedBlobs::FromSql(Arc::new(hashmap! { meta.content_id.blobstore_key() => RedactedMetadata { task: "test".to_string(), log_only: false, } - }))) + })))) .build()?; let ctx = RepositoryRequestContext::test_builder(fb)? diff --git a/eden/mononoke/lfs_server/src/download.rs b/eden/mononoke/lfs_server/src/download.rs index 69e138d261..fce8f34abc 100644 --- a/eden/mononoke/lfs_server/src/download.rs +++ b/eden/mononoke/lfs_server/src/download.rs @@ -218,6 +218,7 @@ mod test { use mononoke_types_mocks::contentid::ONES_CTID; use permission_checker::MononokeIdentity; use redactedblobstore::{RedactedBlobs, RedactedMetadata}; + use std::sync::Arc; use test_repo_factory::TestRepoFactory; #[fbinit::test] @@ -226,12 +227,12 @@ mod test { let reason = "test reason"; let repo = TestRepoFactory::new()? - .redacted(Some(RedactedBlobs::FromSql( + .redacted(Some(RedactedBlobs::FromSql(Arc::new( hashmap! { content_id.blobstore_key() => RedactedMetadata { task: reason.to_string(), log_only: false, }}, - ))) + )))) .build()?; let ctx = RepositoryRequestContext::test_builder(fb)?