fix(schedules): enqueue delay telemetry in wrong format (#9749)

This commit is contained in:
Fabian Gruber 2025-05-13 13:03:09 +02:00 committed by GitHub
parent 7c229ad878
commit 40642b2aad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 12 additions and 13 deletions

View file

@ -202,10 +202,8 @@ abstract class ScheduleBase extends Action
Console::success("{$total} resources were loaded in " . $duration . " seconds");
}
protected function recordEnqueueDelay(string $expectedExecutionSchedule): void
protected function recordEnqueueDelay(\DateTime $expectedExecutionSchedule): void
{
$now = strtotime('now');
$scheduledAt = strtotime($expectedExecutionSchedule);
$this->enqueueDelayTelemetry->record($now - $scheduledAt, ['resourceType' => static::getSupportedResource()]);
$this->enqueueDelayTelemetry->record(time() - $expectedExecutionSchedule->getTimestamp(), ['resourceType' => static::getSupportedResource()]);
}
}

View file

@ -59,7 +59,7 @@ class ScheduleExecutions extends ScheduleBase
$this->updateProjectAccess($schedule['project'], $dbForPlatform);
\go(function () use ($queueForFunctions, $schedule, $delay, $data) {
\go(function () use ($queueForFunctions, $schedule, $scheduledAt, $delay, $data) {
Co::sleep($delay);
$queueForFunctions->setType('schedule')
@ -75,7 +75,7 @@ class ScheduleExecutions extends ScheduleBase
->setUserId($data['userId'] ?? '')
->trigger();
$this->recordEnqueueDelay($schedule['schedule']);
$this->recordEnqueueDelay($scheduledAt);
});
$dbForPlatform->deleteDocument(

View file

@ -66,17 +66,18 @@ class ScheduleFunctions extends ScheduleBase
$delayedExecutions[$delay] = [];
}
$delayedExecutions[$delay][] = $key;
$delayedExecutions[$delay][] = ['key' => $key, 'nextDate' => $nextDate];
}
foreach ($delayedExecutions as $delay => $scheduleKeys) {
\go(function () use ($delay, $scheduleKeys, $pools, $dbForPlatform) {
foreach ($delayedExecutions as $delay => $schedules) {
\go(function () use ($delay, $schedules, $pools, $dbForPlatform) {
\sleep($delay); // in seconds
$queue = $pools->get('publisher')->pop();
$connection = $queue->getResource();
foreach ($scheduleKeys as $scheduleKey) {
foreach ($schedules as $delayConfig) {
$scheduleKey = $delayConfig['key'];
// Ensure schedule was not deleted
if (!\array_key_exists($scheduleKey, $this->schedules)) {
return;
@ -96,7 +97,7 @@ class ScheduleFunctions extends ScheduleBase
->setProject($schedule['project'])
->trigger();
$this->recordEnqueueDelay($schedule['schedule']);
$this->recordEnqueueDelay($delayConfig['nextDate']);
}
$queue->reclaim();

View file

@ -40,7 +40,7 @@ class ScheduleMessages extends ScheduleBase
continue;
}
\go(function () use ($schedule, $pools, $dbForPlatform) {
\go(function () use ($schedule, $scheduledAt, $pools, $dbForPlatform) {
$queue = $pools->get('publisher')->pop();
$connection = $queue->getResource();
$queueForMessaging = new Messaging($connection);
@ -59,7 +59,7 @@ class ScheduleMessages extends ScheduleBase
);
$queue->reclaim();
$this->recordEnqueueDelay($schedule['schedule']);
$this->recordEnqueueDelay($scheduledAt);
unset($this->schedules[$schedule['$internalId']]);
});
}