Skip to content

Commit 42e9337

Browse files
goffrieConvex, Inc.
authored andcommitted
Send derived secrets to funrun (#42319)
GitOrigin-RevId: 067e60624c6b0324df93c5fcb4c67345a9dc9703
1 parent 2f6dad5 commit 42e9337

File tree

14 files changed

+157
-102
lines changed

14 files changed

+157
-102
lines changed

crates/application/src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,12 @@ impl<RT: Runtime> Application<RT> {
10181018
let url = self
10191019
.file_storage
10201020
.transactional_file_storage
1021-
.generate_upload_url(&mut tx, self.key_broker(), issued_ts, component)
1021+
.generate_upload_url(
1022+
&mut tx,
1023+
&self.key_broker().function_runner_keybroker(),
1024+
issued_ts,
1025+
component,
1026+
)
10221027
.await?;
10231028

10241029
Ok(url)

crates/application/src/test_helpers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ impl<RT: Runtime> ApplicationTestExt<RT> for Application<RT> {
228228
let fetch_client = Arc::new(StaticFetchClient::new());
229229
let function_runner = Arc::new(InProcessFunctionRunner::new(
230230
DEV_INSTANCE_NAME.into(),
231-
DEV_SECRET.try_into()?,
231+
KeyBroker::new(DEV_INSTANCE_NAME, DEV_SECRET.try_into()?)?.function_runner_keybroker(),
232232
convex_origin.clone(),
233233
rt.clone(),
234234
persistence.reader(),

crates/file_storage/src/core.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ use headers::{
4343
ContentType,
4444
};
4545
use keybroker::{
46+
FunctionRunnerKeyBroker,
4647
Identity,
47-
KeyBroker,
4848
};
4949
use maplit::btreemap;
5050
use model::{
@@ -97,7 +97,7 @@ impl<RT: Runtime> TransactionalFileStorage<RT> {
9797
pub fn generate_upload_url_with_origin(
9898
&self,
9999
origin_override: Option<ConvexOrigin>,
100-
key_broker: &KeyBroker,
100+
key_broker: &FunctionRunnerKeyBroker,
101101
issued_ts: UnixTimestamp,
102102
component: ComponentId,
103103
) -> anyhow::Result<String> {
@@ -110,7 +110,7 @@ impl<RT: Runtime> TransactionalFileStorage<RT> {
110110
pub async fn generate_upload_url(
111111
&self,
112112
tx: &mut Transaction<RT>,
113-
key_broker: &KeyBroker,
113+
key_broker: &FunctionRunnerKeyBroker,
114114
issued_ts: UnixTimestamp,
115115
component: ComponentId,
116116
) -> anyhow::Result<String> {

crates/function_runner/src/in_process_function_runner.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ use futures::{
4949
};
5050
use isolate::ActionCallbacks;
5151
use keybroker::{
52+
FunctionRunnerKeyBroker,
5253
Identity,
53-
InstanceSecret,
5454
};
5555
use model::{
5656
config::types::ModuleConfig,
@@ -100,7 +100,7 @@ pub struct InProcessFunctionRunner<RT: Runtime> {
100100

101101
// Static information about the backend.
102102
instance_name: String,
103-
instance_secret: InstanceSecret,
103+
key_broker: FunctionRunnerKeyBroker,
104104
convex_origin: ConvexOrigin,
105105
database: Database<RT>,
106106
// Use Weak reference to avoid reference cycle between InProcessFunctionRunner
@@ -112,7 +112,7 @@ pub struct InProcessFunctionRunner<RT: Runtime> {
112112
impl<RT: Runtime> InProcessFunctionRunner<RT> {
113113
pub fn new(
114114
instance_name: String,
115-
instance_secret: InstanceSecret,
115+
keybroker: FunctionRunnerKeyBroker,
116116
convex_origin: ConvexOrigin,
117117
rt: RT,
118118
persistence_reader: Arc<dyn PersistenceReader>,
@@ -127,7 +127,7 @@ impl<RT: Runtime> InProcessFunctionRunner<RT> {
127127
server,
128128
persistence_reader,
129129
instance_name,
130-
instance_secret,
130+
key_broker: keybroker,
131131
convex_origin,
132132
database,
133133
action_callbacks: Arc::new(RwLock::new(None)),
@@ -239,7 +239,7 @@ impl<RT: Runtime> FunctionRunner<RT> for InProcessFunctionRunner<RT> {
239239

240240
let request_metadata = RunRequestArgs {
241241
instance_name: self.instance_name.clone(),
242-
instance_secret: self.instance_secret,
242+
key_broker: self.key_broker.clone(),
243243
reader: self.persistence_reader.clone(),
244244
convex_origin: self.convex_origin.clone(),
245245
bootstrap_metadata: self.database.bootstrap_metadata.clone(),

crates/function_runner/src/server.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,8 @@ use isolate::{
5858
IsolateClient,
5959
};
6060
use keybroker::{
61+
FunctionRunnerKeyBroker,
6162
Identity,
62-
InstanceSecret,
63-
KeyBroker,
6463
};
6564
use model::{
6665
config::types::ModuleConfig,
@@ -118,7 +117,7 @@ const MAX_ISOLATE_WORKERS: usize = 128;
118117

119118
pub struct RunRequestArgs {
120119
pub instance_name: String,
121-
pub instance_secret: InstanceSecret,
120+
pub key_broker: FunctionRunnerKeyBroker,
122121
pub reader: Arc<dyn PersistenceReader>,
123122
pub convex_origin: ConvexOrigin,
124123
pub bootstrap_metadata: BootstrapMetadata,
@@ -289,7 +288,7 @@ impl<RT: Runtime, S: StorageForInstance<RT>> FunctionRunnerCore<RT, S> {
289288
&self,
290289
RunRequestArgs {
291290
instance_name,
292-
instance_secret,
291+
key_broker,
293292
reader,
294293
convex_origin,
295294
bootstrap_metadata,
@@ -355,7 +354,6 @@ impl<RT: Runtime, S: StorageForInstance<RT>> FunctionRunnerCore<RT, S> {
355354
.storage_for_instance(&mut transaction, StorageUseCase::Modules)
356355
.await?;
357356

358-
let key_broker = KeyBroker::new(&instance_name, instance_secret)?;
359357
let environment_data = EnvironmentData {
360358
key_broker,
361359
default_system_env_vars,

crates/isolate/src/client.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ use futures::{
101101
},
102102
};
103103
use keybroker::{
104+
FunctionRunnerKeyBroker,
104105
Identity,
105-
KeyBroker,
106106
};
107107
use model::{
108108
config::types::ModuleConfig,
@@ -352,7 +352,7 @@ pub struct ActionRequestParams {
352352

353353
#[derive(Clone)]
354354
pub struct EnvironmentData<RT: Runtime> {
355-
pub key_broker: KeyBroker,
355+
pub key_broker: FunctionRunnerKeyBroker,
356356
pub default_system_env_vars: BTreeMap<EnvVarName, EnvVarValue>,
357357
pub file_storage: TransactionalFileStorage<RT>,
358358
pub module_loader: Arc<dyn ModuleCache<RT>>,

crates/isolate/src/environment/action/task_executor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ use futures::{
3232
StreamExt,
3333
};
3434
use keybroker::{
35+
FunctionRunnerKeyBroker,
3536
Identity,
36-
KeyBroker,
3737
};
3838
use parking_lot::Mutex;
3939
use serde_json::Value as JsonValue;
@@ -72,7 +72,7 @@ pub struct TaskExecutor<RT: Runtime> {
7272
pub action_callbacks: Arc<dyn ActionCallbacks>,
7373
pub fetch_client: Arc<dyn FetchClient>,
7474
pub _module_loader: Arc<dyn ModuleCache<RT>>,
75-
pub key_broker: KeyBroker,
75+
pub key_broker: FunctionRunnerKeyBroker,
7676
pub task_order: TaskOrder,
7777
pub task_retval_sender: mpsc::UnboundedSender<TaskResponse>,
7878
pub usage_tracker: FunctionUsageTracker,

crates/isolate/src/environment/udf/async_syscall.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ use errors::{
6161
ErrorMetadataAnyhowExt,
6262
};
6363
use itertools::Itertools;
64-
use keybroker::KeyBroker;
64+
use keybroker::FunctionRunnerKeyBroker;
6565
use model::{
6666
components::{
6767
handles::FunctionHandlesModel,
@@ -279,7 +279,7 @@ pub enum ManagedQuery<RT: Runtime> {
279279
pub trait AsyncSyscallProvider<RT: Runtime> {
280280
fn rt(&self) -> &RT;
281281
fn tx(&mut self) -> anyhow::Result<&mut Transaction<RT>>;
282-
fn key_broker(&self) -> &KeyBroker;
282+
fn key_broker(&self) -> &FunctionRunnerKeyBroker;
283283
fn context(&self) -> &ExecutionContext;
284284

285285
fn observe_identity(&mut self) -> anyhow::Result<()>;
@@ -348,7 +348,7 @@ impl<RT: Runtime> AsyncSyscallProvider<RT> for DatabaseUdfEnvironment<RT> {
348348
self.phase.component()
349349
}
350350

351-
fn key_broker(&self) -> &KeyBroker {
351+
fn key_broker(&self) -> &FunctionRunnerKeyBroker {
352352
&self.key_broker
353353
}
354354

crates/isolate/src/environment/udf/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ use deno_core::{
8585
};
8686
use errors::ErrorMetadata;
8787
use file_storage::TransactionalFileStorage;
88-
use keybroker::KeyBroker;
88+
use keybroker::FunctionRunnerKeyBroker;
8989
use rand::Rng;
9090
use rand_chacha::ChaCha12Rng;
9191
use serde_json::Value as JsonValue;
@@ -177,7 +177,7 @@ pub struct DatabaseUdfEnvironment<RT: Runtime> {
177177
query_manager: QueryManager<RT>,
178178

179179
persistence_version: PersistenceVersion,
180-
key_broker: KeyBroker,
180+
key_broker: FunctionRunnerKeyBroker,
181181
log_lines: LogLines,
182182

183183
/// Journal from a previous computation of this UDF used as an input to this

crates/isolate/src/isolate2/runner.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use database::{
4343
Transaction,
4444
};
4545
use errors::ErrorMetadata;
46-
use keybroker::KeyBroker;
46+
use keybroker::FunctionRunnerKeyBroker;
4747
use model::{
4848
config::module_loader::ModuleLoader,
4949
environment_variables::{
@@ -483,7 +483,7 @@ async fn run_request<RT: Runtime>(
483483
path_and_args: ValidatedPathAndArgs,
484484
shared: UdfShared<RT>,
485485
mut log_line_receiver: spsc::Receiver<LogLine>,
486-
key_broker: KeyBroker,
486+
key_broker: FunctionRunnerKeyBroker,
487487
execution_context: ExecutionContext,
488488
query_journal: QueryJournal,
489489
) -> anyhow::Result<UdfOutcome> {
@@ -808,7 +808,7 @@ struct Isolate2SyscallProvider<'a, RT: Runtime> {
808808

809809
syscall_trace: SyscallTrace,
810810

811-
key_broker: KeyBroker,
811+
key_broker: FunctionRunnerKeyBroker,
812812
context: ExecutionContext,
813813
}
814814

@@ -820,7 +820,7 @@ impl<'a, RT: Runtime> Isolate2SyscallProvider<'a, RT> {
820820
prev_journal: QueryJournal,
821821
is_system: bool,
822822
shared: UdfShared<RT>,
823-
key_broker: KeyBroker,
823+
key_broker: FunctionRunnerKeyBroker,
824824
context: ExecutionContext,
825825
) -> Self {
826826
Self {
@@ -853,7 +853,7 @@ impl<RT: Runtime> AsyncSyscallProvider<RT> for Isolate2SyscallProvider<'_, RT> {
853853
Ok(ComponentId::Root)
854854
}
855855

856-
fn key_broker(&self) -> &KeyBroker {
856+
fn key_broker(&self) -> &FunctionRunnerKeyBroker {
857857
&self.key_broker
858858
}
859859

@@ -989,7 +989,7 @@ async fn tokio_thread<RT: Runtime>(
989989
path_and_args: ValidatedPathAndArgs,
990990
shared: UdfShared<RT>,
991991
log_line_receiver: spsc::Receiver<LogLine>,
992-
key_broker: KeyBroker,
992+
key_broker: FunctionRunnerKeyBroker,
993993
execution_context: ExecutionContext,
994994
query_journal: QueryJournal,
995995
) {
@@ -1026,7 +1026,7 @@ pub async fn run_isolate_v2_udf<RT: Runtime>(
10261026
execution_time_seed: SeedData,
10271027
udf_type: UdfType,
10281028
path_and_args: ValidatedPathAndArgs,
1029-
key_broker: KeyBroker,
1029+
key_broker: FunctionRunnerKeyBroker,
10301030
context: ExecutionContext,
10311031
query_journal: QueryJournal,
10321032
) -> anyhow::Result<(Transaction<RT>, UdfOutcome)> {

0 commit comments

Comments
 (0)