mirror of
https://github.com/TheFunny/TelegramTwitterMediaBot.git
synced 2026-09-26 23:52:05 +00:00
perf: stop the sweep stealing worker wakeups, retry-free inline fetch
- queue: the lease-expiry sweep waited on the workers' `Notify`. `notify_one` stores a permit, so a sweep wakeup could consume the one meant for a worker, which then blocked on `notified()` (it only waits when the table looked empty, i.e. indefinitely) with a due row sitting there. The sweep now has its own notify, woken only by stop. - x-media: split fetch's retry loop into `fetch` (3 attempts, unchanged) and `fetch_once` (1 attempt); inline queries use the latter — the 800ms debounce plus 1s/2s backoffs were outlasting the answer window of the query. - send: chunk_media_items now moves items out of the input Vec instead of requiring `T: Clone` and copying every payload. fmt/clippy clean, 55 + 69 tests pass.
This commit is contained in:
@@ -121,7 +121,9 @@ async fn answer_inline_query(bot: Bot, query: InlineQuery) -> Result<bool, Reque
|
||||
query.query,
|
||||
log_key(&query.query)
|
||||
);
|
||||
match x_media::site::fetch(&query.query).await {
|
||||
// No retries: the debounce plus a 1s/2s backoff would outlast the inline
|
||||
// query the answer belongs to.
|
||||
match x_media::site::fetch_once(&query.query).await {
|
||||
Ok(Some(fetched)) => {
|
||||
let mut results: Vec<InlineQueryResult> = Vec::new();
|
||||
// Inline results have the same 1024-char caption limit as regular
|
||||
|
||||
Reference in New Issue
Block a user