Skip to content

Commit f27864c

Browse files
nipunn1313Convex, Inc.
authored andcommitted
Properly classify errors from serde deserialization of args (#41612)
Need to classify them at a number of a callsites. GitOrigin-RevId: 019e9644371096c07dc05a5071890f9475d4c82b
1 parent 0630169 commit f27864c

File tree

10 files changed

+28
-5
lines changed

10 files changed

+28
-5
lines changed

crates/application/src/api.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ use udf::{
5959
HttpActionResponseStreamer,
6060
};
6161
use value::{
62+
serialized_args_ext::SerializedArgsExt,
6263
sha256::Sha256Digest,
6364
DeveloperDocumentId,
6465
};

crates/application/src/application_function_runner/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ use usage_tracking::{
185185
use value::{
186186
id_v6::DeveloperDocumentId,
187187
identifier::Identifier,
188+
serialized_args_ext::SerializedArgsExt,
188189
JsonPackedValue,
189190
TableNamespace,
190191
};

crates/convex/sync_types/src/types.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,6 @@ impl SerializedArgs {
127127
pub fn from_slice(value: &[u8]) -> Result<Self, serde_json::Error> {
128128
Ok(Self(serde_json::from_slice(value)?))
129129
}
130-
131-
pub fn into_args(self) -> anyhow::Result<Vec<JsonValue>> {
132-
Ok(serde_json::from_str(self.0.get())?)
133-
}
134130
}
135131

136132
#[derive(Clone, Debug, Eq, PartialEq, AsRefStr)]

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ use udf::{
9494
use value::{
9595
heap_size::HeapSize,
9696
id_v6::DeveloperDocumentId,
97+
serialized_args_ext::SerializedArgsExt,
9798
ConvexArray,
9899
ConvexObject,
99100
TableName,

crates/isolate/src/ops/validate_args.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ use serde_json::{
88
json,
99
Value as JsonValue,
1010
};
11-
use value::ConvexArray;
11+
use value::{
12+
serialized_args_ext::SerializedArgsExt,
13+
ConvexArray,
14+
};
1215

1316
use super::OpProvider;
1417
use crate::helpers::UdfArgsJson;

crates/isolate/src/test_helpers.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ use udf::{
151151
use usage_tracking::FunctionUsageStats;
152152
use value::{
153153
id_v6::DeveloperDocumentId,
154+
serialized_args_ext::SerializedArgsExt,
154155
ConvexArray,
155156
ConvexObject,
156157
TableName,

crates/local_backend/src/dashboard.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ use serde_json::json;
4444
use utoipa::ToSchema;
4545
use utoipa_axum::router::OpenApiRouter;
4646
use value::{
47+
serialized_args_ext::SerializedArgsExt,
4748
TableName,
4849
TableNamespace,
4950
};

crates/local_backend/src/node_action_callbacks.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ use usage_tracking::FunctionUsageTracker;
6565
use value::{
6666
export::ValueFormat,
6767
id_v6::DeveloperDocumentId,
68+
serialized_args_ext::SerializedArgsExt,
6869
};
6970
use vector::{
7071
VectorSearch,

crates/value/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ mod metrics;
2222
pub mod numeric;
2323
mod object;
2424
pub mod serde;
25+
pub mod serialized_args_ext;
2526
mod set;
2627
pub mod sha256;
2728
mod size;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
use anyhow::Context;
2+
use errors::ErrorMetadata;
3+
use serde_json::Value as JsonValue;
4+
use sync_types::types::SerializedArgs;
5+
6+
pub trait SerializedArgsExt {
7+
fn into_args(self) -> anyhow::Result<Vec<JsonValue>>;
8+
}
9+
10+
impl SerializedArgsExt for SerializedArgs {
11+
fn into_args(self) -> anyhow::Result<Vec<JsonValue>> {
12+
serde_json::from_str(self.0.get()).context(ErrorMetadata::bad_request(
13+
"InvalidArguments",
14+
"Invalid arguments provided",
15+
))
16+
}
17+
}

0 commit comments

Comments
 (0)