Skip to content

Commit 0d4cc74

Browse files
goffrieConvex, Inc.
authored andcommitted
Log a warning when scheduled job args are over 1MB (#42379)
We would like to put a limit on these; as a first step let's see how common it is. GitOrigin-RevId: e5936f68cad6e8304e7722bf55b28cede9475d14
1 parent b3a57d6 commit 0d4cc74

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

crates/common/src/knobs.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use std::{
2222
};
2323

2424
use cmd_util::env::env_config;
25+
use value::MAX_USER_SIZE;
2526

2627
use crate::fastrace_helpers::SamplingConfig;
2728

@@ -246,7 +247,14 @@ pub static TRANSACTION_MAX_NUM_SCHEDULED: LazyLock<usize> =
246247
pub static MAX_JOBS_CANCEL_BATCH: LazyLock<usize> =
247248
LazyLock::new(|| env_config("MAX_JOBS_CANCEL_BATCH", 1000));
248249

249-
/// Maximum size of the arguments to a scheduled function.
250+
/// Maximum size of a single scheduled function's arguments.
251+
/// This is not currently enforced.
252+
pub static MAX_SCHEDULED_JOB_ARGUMENT_SIZE_BYTES: LazyLock<usize> = LazyLock::new(|| {
253+
env_config("MAX_SCHEDULED_JOB_ARGUMENT_SIZE_BYTES", MAX_USER_SIZE) // 1 MiB
254+
});
255+
256+
/// Maximum total size of the arguments to all functions scheduled in a single
257+
/// transaction.
250258
pub static TRANSACTION_MAX_SCHEDULED_TOTAL_ARGUMENT_SIZE_BYTES: LazyLock<usize> =
251259
LazyLock::new(|| {
252260
env_config(

crates/model/src/scheduled_jobs/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use common::{
1414
},
1515
execution_context::ExecutionContext,
1616
knobs::{
17+
MAX_SCHEDULED_JOB_ARGUMENT_SIZE_BYTES,
1718
TRANSACTION_MAX_NUM_SCHEDULED,
1819
TRANSACTION_MAX_SCHEDULED_TOTAL_ARGUMENT_SIZE_BYTES,
1920
},
@@ -175,7 +176,6 @@ impl<'a, RT: Runtime> SchedulerModel<'a, RT> {
175176
)
176177
)
177178
);
178-
self.tx.scheduled_size.num_writes += 1;
179179
anyhow::ensure!(
180180
self.tx.scheduled_size.size + args.size()
181181
<= *TRANSACTION_MAX_SCHEDULED_TOTAL_ARGUMENT_SIZE_BYTES,
@@ -188,6 +188,10 @@ impl<'a, RT: Runtime> SchedulerModel<'a, RT> {
188188
)
189189
),
190190
);
191+
if args.size() > *MAX_SCHEDULED_JOB_ARGUMENT_SIZE_BYTES {
192+
tracing::warn!("Scheduling a job with argument size {}", args.size());
193+
}
194+
self.tx.scheduled_size.num_writes += 1;
191195
self.tx.scheduled_size.size += args.size();
192196
Ok(())
193197
}

0 commit comments

Comments
 (0)