permission_checker: remove auto_impl for AclProvider

Summary:
Everywhere an `AclProvider` implementation is used, it is as an `Arc<dyn
AclProvider>`.  This means making these methods generic in terms of `impl
AclProvider` is pointless, as we can more simply accept `&dyn AclProvider` and
avoid the compile-time overhead.

Reviewed By: yancouto

Differential Revision: D40357645

fbshipit-source-id: 004eaaf7b2f69c262074e706f38453a05e782fc6
This commit is contained in:
Mark Juggurnauth-Thomas 2022-10-19 13:35:09 -07:00 committed by Facebook GitHub Bot
parent 1a3eb263f0
commit ea08914663
8 changed files with 12 additions and 15 deletions

View File

@ -19,7 +19,7 @@ pub struct ConnectionSecurityChecker {
}
impl ConnectionSecurityChecker {
pub async fn new(acl_provider: impl AclProvider, common_config: &CommonConfig) -> Result<Self> {
pub async fn new(acl_provider: &dyn AclProvider, common_config: &CommonConfig) -> Result<Self> {
let mut builder = PermissionCheckerBuilder::new();
if let Some(tier) = &common_config.trusted_parties_hipster_tier {

View File

@ -1425,7 +1425,7 @@ async fn hook_manager_repo(fb: FacebookInit, repo: &BasicTestRepo) -> HookManage
let content_manager = RepoFileContentManager::new(&repo);
HookManager::new(
ctx.fb,
DefaultAclProvider::new(fb),
DefaultAclProvider::new(fb).as_ref(),
Box::new(content_manager),
HookManagerParams {
disable_acl_checker: true,
@ -1456,7 +1456,7 @@ async fn hook_manager_inmem(fb: FacebookInit) -> HookManager {
HookManager::new(
ctx.fb,
DefaultAclProvider::new(fb),
DefaultAclProvider::new(fb).as_ref(),
Box::new(content_manager),
HookManagerParams {
disable_acl_checker: true,
@ -1494,7 +1494,7 @@ async fn test_verify_integrity_fast_failure(fb: FacebookInit) {
let mut hm = hook_manager_many_files_dirs_repo(fb).await;
load_hooks(
fb,
&DefaultAclProvider::new(fb),
DefaultAclProvider::new(fb).as_ref(),
&mut hm,
&config,
&hashset![],
@ -1527,7 +1527,7 @@ async fn test_load_hooks_bad_rust_hook(fb: FacebookInit) {
match load_hooks(
fb,
&DefaultAclProvider::new(fb),
DefaultAclProvider::new(fb).as_ref(),
&mut hm,
&config,
&hashset![],
@ -1556,7 +1556,7 @@ async fn test_load_disabled_hooks(fb: FacebookInit) {
load_hooks(
fb,
&DefaultAclProvider::new(fb),
DefaultAclProvider::new(fb).as_ref(),
&mut hm,
&config,
&hashset!["hook1".to_string()],
@ -1590,7 +1590,7 @@ async fn test_load_disabled_hooks_referenced_by_bookmark(fb: FacebookInit) {
load_hooks(
fb,
&DefaultAclProvider::new(fb),
DefaultAclProvider::new(fb).as_ref(),
&mut hm,
&config,
&hashset!["hook1".to_string()],
@ -1606,7 +1606,7 @@ async fn test_load_disabled_hooks_hook_does_not_exist(fb: FacebookInit) {
match load_hooks(
fb,
&DefaultAclProvider::new(fb),
DefaultAclProvider::new(fb).as_ref(),
&mut hm,
&config,
&hashset!["hook1".to_string()],

View File

@ -78,7 +78,7 @@ pub struct HookManager {
impl HookManager {
pub async fn new(
fb: FacebookInit,
acl_provider: impl AclProvider,
acl_provider: &dyn AclProvider,
content_manager: Box<dyn FileContentManager>,
hook_manager_params: HookManagerParams,
mut scuba: MononokeScubaSampleBuilder,

View File

@ -355,7 +355,7 @@ fn main(fb: FacebookInit) -> Result<(), Error> {
if let Some(tls_acceptor) = tls_acceptor {
let connection_security_checker =
ConnectionSecurityChecker::new(acl_provider, &common).await?;
ConnectionSecurityChecker::new(acl_provider.as_ref(), &common).await?;
serve::https(
logger,

View File

@ -10,7 +10,6 @@ license = "GPLv2+"
[dependencies]
anyhow = "1.0.65"
async-trait = "0.1.56"
auto_impl = "0.4"
fbinit = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "main" }
futures = { version = "0.3.22", features = ["async-await", "compat"] }
itertools = "0.10.3"

View File

@ -7,7 +7,6 @@
use anyhow::Result;
use async_trait::async_trait;
use auto_impl::auto_impl;
use crate::BoxMembershipChecker;
use crate::BoxPermissionChecker;
@ -17,7 +16,6 @@ use crate::BoxPermissionChecker;
/// These lists and groups control permissions to access various aspects of
/// Mononoke.
#[async_trait]
#[auto_impl(&, Arc, Box)]
pub trait AclProvider: Send + Sync {
/// Returns a permission checker for the access control list that
/// controls the named repository.

View File

@ -117,7 +117,7 @@ pub struct ProdRepoPermissionChecker {
impl ProdRepoPermissionChecker {
pub async fn new(
logger: &Logger,
acl_provider: impl AclProvider,
acl_provider: &dyn AclProvider,
repo_hipster_acl: Option<&str>,
service_hipster_acl: Option<&str>,
repo_region_hipster_acls: Vec<&str>,

View File

@ -219,7 +219,7 @@ fn main(fb: FacebookInit) -> Result<(), Error> {
};
let acl_provider = DefaultAclProvider::new(fb);
let security_checker = runtime.block_on(ConnectionSecurityChecker::new(
acl_provider,
acl_provider.as_ref(),
&app.repo_configs().common,
))?;
let source_control_server = source_control_impl::SourceControlServiceImpl::new(