Skip to content

Commit ef9790b

Browse files
Sujay JayakarConvex, Inc.
authored andcommitted
Fix system error from invalid function handle (#29654)
GitOrigin-RevId: ba897bcf2514b587a94d6f1dbd36e00ba2baf79e
1 parent 3eafb89 commit ef9790b

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ impl<RT: Runtime> TaskExecutor<RT> {
115115
.await?
116116
},
117117
None => {
118-
let reference = parse_name_or_reference(name, reference)?;
118+
let reference = parse_name_or_reference("runQuery", name, reference)?;
119119
self.resolve_function(&reference)?
120120
},
121121
};
@@ -160,7 +160,7 @@ impl<RT: Runtime> TaskExecutor<RT> {
160160
.await?
161161
},
162162
None => {
163-
let reference = parse_name_or_reference(name, reference)?;
163+
let reference = parse_name_or_reference("runMutation", name, reference)?;
164164
self.resolve_function(&reference)?
165165
},
166166
};
@@ -202,7 +202,7 @@ impl<RT: Runtime> TaskExecutor<RT> {
202202
.await?
203203
},
204204
None => {
205-
let reference = parse_name_or_reference(name, reference)?;
205+
let reference = parse_name_or_reference("runAction", name, reference)?;
206206
self.resolve_function(&reference)?
207207
},
208208
};
@@ -246,9 +246,7 @@ impl<RT: Runtime> TaskExecutor<RT> {
246246
.await?
247247
},
248248
None => {
249-
let reference = with_argument_error("scheduler", || {
250-
parse_name_or_reference(name, reference).context(ArgName("name"))
251-
})?;
249+
let reference = parse_name_or_reference("scheduler", name, reference)?;
252250
self.resolve_function(&reference)?
253251
},
254252
};
@@ -425,7 +423,7 @@ impl<RT: Runtime> TaskExecutor<RT> {
425423
return Ok(serde_json::to_value(function_handle)?);
426424
},
427425
None => {
428-
let reference = parse_name_or_reference(name, reference)?;
426+
let reference = parse_name_or_reference("createFunctionHandle", name, reference)?;
429427
self.resolve_function(&reference)?
430428
},
431429
};
@@ -441,12 +439,13 @@ impl<RT: Runtime> TaskExecutor<RT> {
441439
}
442440

443441
pub fn parse_name_or_reference(
442+
function_name: &str,
444443
name: Option<String>,
445444
reference: Option<String>,
446445
) -> anyhow::Result<Reference> {
447-
match (name, reference) {
446+
with_argument_error(function_name, || match (name, reference) {
448447
(Some(name), _) => Ok(Reference::Function(name.parse()?)),
449448
(_, Some(reference)) => Ok(reference.parse()?),
450449
_ => anyhow::bail!("Missing required argument 'name'"),
451-
}
450+
})
452451
}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -873,9 +873,7 @@ impl<RT: Runtime, P: AsyncSyscallProvider<RT>> DatabaseSyscallsV1<RT, P> {
873873
provider.lookup_function_handle(handle).await?
874874
},
875875
None => {
876-
let reference = with_argument_error("scheduler", || {
877-
parse_name_or_reference(name, reference).context(ArgName("name"))
878-
})?;
876+
let reference = parse_name_or_reference("scheduler", name, reference)?;
879877
match provider.resolve(reference).await? {
880878
Resource::Value(v) => {
881879
anyhow::bail!(ErrorMetadata::bad_request(
@@ -1270,8 +1268,7 @@ impl<RT: Runtime, P: AsyncSyscallProvider<RT>> DatabaseSyscallsV1<RT, P> {
12701268
}
12711269
},
12721270
None => {
1273-
let reference =
1274-
parse_name_or_reference(name, reference).context(ArgName("name"))?;
1271+
let reference = parse_name_or_reference("runUdf", name, reference)?;
12751272
let resource = provider.resolve(reference).await?;
12761273
match resource {
12771274
Resource::ResolvedSystemUdf(path) => path,
@@ -1319,7 +1316,7 @@ impl<RT: Runtime, P: AsyncSyscallProvider<RT>> DatabaseSyscallsV1<RT, P> {
13191316
return Ok(serde_json::to_value(function_handle)?);
13201317
},
13211318
None => {
1322-
let reference = parse_name_or_reference(name, reference)?;
1319+
let reference = parse_name_or_reference("createFunctionHandle", name, reference)?;
13231320
match provider.resolve(reference).await? {
13241321
Resource::Function(path) => path,
13251322
Resource::ResolvedSystemUdf { .. } => {

0 commit comments

Comments
 (0)