Skip to content

Commit 86e70f6

Browse files
author
Алексей Тихомиров
committed
fix: clear site option cache in getQueue() to prevent job loss on rapid additions
1 parent f235892 commit 86e70f6

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

src/Queue/DatabaseQueue.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ public function isEmpty(string $queue = 'default'): bool
118118
*/
119119
protected function getQueue(string $queue): array
120120
{
121+
// Clear cache to ensure we get fresh data from DB
122+
wp_cache_delete($this->queueKey($queue), 'site-options');
123+
121124
return get_site_option($this->queueKey($queue), []);
122125
}
123126

@@ -149,7 +152,7 @@ protected function store(string $queue, JobInterface $job, int $availableAt): vo
149152

150153
protected function queueKey(string $queue): string
151154
{
152-
return self::PREFIX.'jobs_'.$queue;
155+
return self::PREFIX . 'jobs_' . $queue;
153156
}
154157

155158
/**
@@ -163,14 +166,14 @@ protected function getAllQueues(): array
163166
return ['default'];
164167
}
165168

166-
$prefix = self::PREFIX.'jobs_';
169+
$prefix = self::PREFIX . 'jobs_';
167170
$results = $wpdb->get_col(
168171
$wpdb->prepare(
169172
"SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s",
170-
$prefix.'%',
173+
$prefix . '%',
171174
),
172175
);
173176

174-
return array_map(fn ($key) => str_replace($prefix, '', $key), $results);
177+
return array_map(fn($key) => str_replace($prefix, '', $key), $results);
175178
}
176179
}

0 commit comments

Comments
 (0)