Full scan in `queue.statistics()`
Nessuno ha ancora preso questa issue.
- Lingua principale
- Lua
- Stelle
- 244
- Fork
- 56
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
1 local function build_stats(space)
2 local stats = {tasks = {}, calls = {
3 ack = 0, bury = 0, delete = 0,
4 kick = 0, put = 0, release = 0,
5 take = 0, touch = 0,
6 -- for *ttl queues only
7 ttl = 0, ttr = 0, delay = 0,
8 }}
9
10 local st = rawget(queue.stat, space) or {}
11 local idx_tube = 1
12
13 -- add api calls stats
14 for name, value in pairs(st) do
15 if type(value) ~= 'function' and name ~= 'done' then
16 stats['calls'][name] = value
17 end
18 end
19
20 -- add total tasks count
21 stats['tasks']['total'] = box.space[space].index[idx_tube]:count()
22
23 -- add tasks by state count
24 for i, s in pairs(state) do
25 stats['tasks'][i:lower()] = box.space[space].index[idx_tube]:count(s)
26 end
27 stats['tasks']['done'] = st.done or 0
28
29 return stats
30 end
This function calls count() 6 times on each queue.statistics(). This could be a reason of very aggressive CPU usage if there are very many tasks in the queue.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da queue.statistics() e dalla sua implementazione locale build_stats(space) mostrata nell’issue; esegui il profiling delle chiamate ripetute a index:count() con code grandi per confermare l’impatto sulla CPU. Definisci e verifica una modifica che preservi i conteggi totali, per stato e delle attività completate, affrontando al contempo l’uso aggressivo segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- lua
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100