Skip to content

Commit 1807534

Browse files
authored
Fix activities per second config mixup (#1005)
1 parent 83a41c8 commit 1807534

2 files changed

Lines changed: 43 additions & 2 deletions

File tree

core/src/core_tests/activity_tasks.rs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use std::{
1919
Arc,
2020
atomic::{AtomicBool, AtomicUsize, Ordering},
2121
},
22-
time::Duration,
22+
time::{Duration, Instant},
2323
};
2424
use temporal_sdk_core_api::{
2525
Worker as WorkerTrait, errors::CompleteActivityError, worker::PollerBehavior,
@@ -634,6 +634,47 @@ async fn max_tq_acts_set_passed_to_poll_properly() {
634634
worker.poll_activity_task().await.unwrap();
635635
}
636636

637+
#[tokio::test]
638+
async fn max_worker_acts_per_second_respected() {
639+
let mut mock_client = mock_worker_client();
640+
mock_client
641+
.expect_poll_activity_task()
642+
.returning(move |_, _| {
643+
Ok(PollActivityTaskQueueResponse {
644+
task_token: vec![1],
645+
activity_id: "some-id".to_string(),
646+
..Default::default()
647+
})
648+
});
649+
mock_client
650+
.expect_complete_activity_task()
651+
.returning(|_, _| Ok(RespondActivityTaskCompletedResponse::default()));
652+
653+
let cfg = test_worker_cfg()
654+
.activity_task_poller_behavior(PollerBehavior::SimpleMaximum(1_usize))
655+
.max_outstanding_activities(10_usize)
656+
.max_worker_activities_per_second(1.0)
657+
.build()
658+
.unwrap();
659+
let worker = Worker::new_test(cfg, mock_client);
660+
let start = Instant::now();
661+
let mut received = 0;
662+
while start.elapsed().as_millis() < 900 {
663+
let at = worker.poll_activity_task().await.unwrap();
664+
received += 1;
665+
worker
666+
.complete_activity_task(ActivityTaskCompletion {
667+
task_token: at.task_token,
668+
result: Some(ActivityExecutionResult::ok("hi".into())),
669+
})
670+
.await
671+
.unwrap();
672+
}
673+
// Two will be allowed because of the initial request. Without ratelimit in effect, this number
674+
// would be comically high due to the mocks responding very fast.
675+
assert_eq!(received, 2);
676+
}
677+
637678
#[rstest::rstest]
638679
#[tokio::test]
639680
async fn no_eager_activities_requested_when_worker_options_disable_it(

core/src/worker/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ impl Worker {
393393
shutdown_token.child_token(),
394394
Some(move |np| act_metrics.record_num_pollers(np)),
395395
ActivityTaskOptions {
396-
max_worker_acts_per_second: config.max_task_queue_activities_per_second,
396+
max_worker_acts_per_second: config.max_worker_activities_per_second,
397397
max_tps: config.max_task_queue_activities_per_second,
398398
},
399399
);

0 commit comments

Comments
 (0)