mononoke: move enum ScrubAction to multiplexedblob

Summary: This doesn't need to be in metaconfig anymore, can move it to multiplexedblob

Reviewed By: krallin

Differential Revision: D25928061

fbshipit-source-id: 8aa6ce6aafa16f84730cf388ebf7eab6d5bf2c53
This commit is contained in:
Alex Hornby 2021-01-22 06:02:59 -08:00 committed by Facebook GitHub Bot
parent 7770133dbe
commit 5285dd1b3c
9 changed files with 39 additions and 36 deletions

View File

@ -21,10 +21,10 @@ use futures::{
};
use logblob::LogBlob;
use metaconfig_types::{
BlobConfig, BlobstoreId, DatabaseConfig, MultiplexId, MultiplexedStoreType, ScrubAction,
BlobConfig, BlobstoreId, DatabaseConfig, MultiplexId, MultiplexedStoreType,
ShardableRemoteDatabaseConfig,
};
use multiplexedblob::{MultiplexedBlobstore, ScrubBlobstore, ScrubOptions};
use multiplexedblob::{MultiplexedBlobstore, ScrubAction, ScrubBlobstore, ScrubOptions};
use packblob::{PackBlob, PackOptions};
use readonlyblob::ReadOnlyBlobstore;
use scuba_ext::MononokeScubaSampleBuilder;

View File

@ -15,6 +15,7 @@ mod sql;
pub use ::blobstore::{PutBehaviour, DEFAULT_PUT_BEHAVIOUR};
pub use cacheblob::CachelibBlobstoreOptions;
pub use chaosblob::ChaosOptions;
pub use multiplexedblob::ScrubAction;
pub use packblob::PackOptions;
pub use throttledblob::ThrottleOptions;

View File

@ -12,7 +12,9 @@ pub mod queue;
pub mod scrub;
pub use crate::queue::MultiplexedBlobstore;
pub use crate::scrub::{LoggingScrubHandler, ScrubBlobstore, ScrubHandler, ScrubOptions};
pub use crate::scrub::{
LoggingScrubHandler, ScrubAction, ScrubBlobstore, ScrubHandler, ScrubOptions,
};
#[cfg(test)]
mod test;

View File

@ -10,7 +10,7 @@ use crate::{
queue::MultiplexedBlobstore,
};
use anyhow::Result;
use anyhow::{anyhow, Error, Result};
use async_trait::async_trait;
use blobstore::{
Blobstore, BlobstoreGetData, BlobstoreMetadata, BlobstorePutOps, OverwriteStatus, PutBehaviour,
@ -19,7 +19,7 @@ use blobstore_sync_queue::BlobstoreSyncQueue;
use chrono::Duration as ChronoDuration;
use context::CoreContext;
use futures::stream::{FuturesUnordered, TryStreamExt};
use metaconfig_types::{BlobstoreId, MultiplexId, ScrubAction};
use metaconfig_types::{BlobstoreId, MultiplexId};
use mononoke_types::{BlobstoreBytes, DateTime};
use once_cell::sync::OnceCell;
use scuba_ext::MononokeScubaSampleBuilder;
@ -27,11 +27,33 @@ use slog::{info, warn};
use std::collections::HashMap;
use std::fmt;
use std::num::{NonZeroU64, NonZeroUsize};
use std::str::FromStr;
use std::sync::{atomic::AtomicUsize, Arc};
static DEFAULT_HEAL_MAX_BACKLOG_DAYS: i64 = 7;
static HEAL_MAX_BACKLOG: OnceCell<ChronoDuration> = OnceCell::new();
/// What to do when the ScrubBlobstore finds a problem
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
pub enum ScrubAction {
/// Log items needing repair
ReportOnly,
/// Do repairs
Repair,
}
impl FromStr for ScrubAction {
type Err = Error;
fn from_str(string: &str) -> Result<Self, Self::Err> {
match string {
"ReportOnly" => Ok(ScrubAction::ReportOnly),
"Repair" => Ok(ScrubAction::Repair),
_ => Err(anyhow!("Unable to parse {} as {}", string, "ScrubAction")),
}
}
}
#[derive(Clone, Debug)]
pub struct ScrubOptions {
pub scrub_action: ScrubAction,

View File

@ -15,7 +15,7 @@ use std::{
use crate::base::{MultiplexedBlobstoreBase, MultiplexedBlobstorePutHandler};
use crate::queue::MultiplexedBlobstore;
use crate::scrub::{LoggingScrubHandler, ScrubBlobstore, ScrubHandler, ScrubOptions};
use crate::scrub::{LoggingScrubHandler, ScrubAction, ScrubBlobstore, ScrubHandler, ScrubOptions};
use anyhow::{bail, Result};
use async_trait::async_trait;
use blobstore::{Blobstore, BlobstoreGetData, BlobstorePutOps, OverwriteStatus, PutBehaviour};
@ -34,7 +34,7 @@ use futures::{
};
use lock_ext::LockExt;
use memblob::Memblob;
use metaconfig_types::{BlobstoreId, MultiplexId, ScrubAction};
use metaconfig_types::{BlobstoreId, MultiplexId};
use mononoke_types::{BlobstoreBytes, DateTime};
use nonzero_ext::nonzero;
use readonlyblob::ReadOnlyBlobstore;

View File

@ -15,14 +15,14 @@ use fbinit::FacebookInit;
use futures::{compat::Future01CompatExt, future::try_join};
use blobstore::{Blobstore, BlobstoreGetData};
use blobstore_factory::{make_blobstore, BlobstoreOptions, ReadOnlyStorage};
use blobstore_factory::{make_blobstore, BlobstoreOptions, ReadOnlyStorage, ScrubAction};
use cacheblob::{new_memcache_blobstore, CacheBlobstoreExt};
use cached_config::ConfigStore;
use cmdlib::args::{self, MononokeMatches};
use context::CoreContext;
use git_types::Tree as GitTree;
use mercurial_types::{HgChangesetEnvelope, HgFileEnvelope, HgManifestEnvelope};
use metaconfig_types::{BlobConfig, BlobstoreId, Redaction, ScrubAction, StorageConfig};
use metaconfig_types::{BlobConfig, BlobstoreId, Redaction, StorageConfig};
use mononoke_types::{FileContents, RepositoryId};
use prefixblob::PrefixBlobstore;
use redactedblobstore::{

View File

@ -18,10 +18,9 @@ use tokio::{
io::{stdin, AsyncBufReadExt, AsyncWriteExt, BufReader},
};
use blobstore_factory::make_blobstore;
use blobstore_factory::{make_blobstore, ScrubAction};
use cmdlib::args;
use context::CoreContext;
use metaconfig_types::ScrubAction;
mod scrub;

View File

@ -726,27 +726,6 @@ pub struct StorageConfig {
pub metadata: MetadataDatabaseConfig,
}
/// What to do when the ScrubBlobstore finds a problem
#[derive(Debug, Clone, Copy, Eq, PartialEq, Deserialize, Hash)]
pub enum ScrubAction {
/// Log items needing repair
ReportOnly,
/// Do repairs
Repair,
}
impl FromStr for ScrubAction {
type Err = Error;
fn from_str(string: &str) -> Result<Self, Self::Err> {
match string {
"ReportOnly" => Ok(ScrubAction::ReportOnly),
"Repair" => Ok(ScrubAction::Repair),
_ => Err(anyhow!("Unable to parse {} as {}", string, "ScrubAction")),
}
}
}
/// Whether we should read from this blobstore normally in a Multiplex,
/// or only read from it in Scrub or when it's our last chance to find the blob
#[derive(Debug, Clone, Copy, Eq, PartialEq, Deserialize, Hash)]

View File

@ -20,7 +20,9 @@ use crate::walk::{OutgoingEdge, RepoWalkParams};
use ::blobstore::Blobstore;
use anyhow::{format_err, Context, Error};
use blobrepo_factory::{open_blobrepo_given_datasources, Caching, ReadOnlyStorage};
use blobstore_factory::{make_metadata_sql_factory, CachelibBlobstoreOptions, MetadataSqlFactory};
use blobstore_factory::{
make_metadata_sql_factory, CachelibBlobstoreOptions, MetadataSqlFactory, ScrubAction,
};
use bookmarks::BookmarkName;
use clap::{App, Arg, ArgMatches, SubCommand, Values};
use cmdlib::args::{
@ -33,9 +35,7 @@ use futures::compat::Future01CompatExt;
use itertools::{process_results, Itertools};
use maplit::hashset;
use mercurial_derived_data::MappedHgChangesetId;
use metaconfig_types::{
BlobConfig, CensoredScubaParams, MetadataDatabaseConfig, Redaction, ScrubAction,
};
use metaconfig_types::{BlobConfig, CensoredScubaParams, MetadataDatabaseConfig, Redaction};
use multiplexedblob::{ScrubHandler, ScrubOptions};
use once_cell::sync::Lazy;
use samplingblob::SamplingHandler;