method: NewMethodQuery deadlocks when a sort argument contains a method call
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 85/100
Direzione di ricerca
Inizia in method.go e segui come NewMethodQuery cerca e invoca la factory registrata; l’issue identifica il lock mantenuto durante quella chiamata come causa del deadlock. Poi trova la tabella TestParseQuery e aggiungi il caso sort("count()") descritto nell’issue. Esegui i test del parser e conferma che la chiamata al metodo annidata termina senza bloccarsi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
NewMethodQuery (method.go) holds methodQueryMux while it calls the registered factory. NewSortQuery and NewRSortQuery parse their argument with ParseQuery, which calls NewMethodQuery again for any method inside it, so the second Lock never returns:
ParseQuery(sort("count()"))andParseQuery(rsort("has(""a"")"))hang forever.- The lock stays held, so every later method parse in the process hangs too.
This predates #174 (same on main).
Fix: look up the factory under the lock and call it after unlocking; a recursive RLock on an RWMutex would still block behind a waiting writer. Add sort("count()") as a TestParseQuery row.
- Lingua principale
- Go
- Stelle
- 7
- Fork
- 2
- Merge medio
- 12h 15m
- PR unite (30g)
- 38
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
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.
Altre issue di mojatter/tree
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
edit: Normalise the query into a writable path and error on steps that cannot write backForse già presa @mojatter l’ha presa 1 giorno fa. Apertabug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
mojatter/tree#152 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di mojatter/tree
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 61/100
I maintainer di solito rispondono entro 1 giorno
-
stage-fail
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
siyuan-note/bazaar#2405 ·
I maintainer di solito rispondono entro 1 giorno
-
bug priority: high workstream:cache
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
rossoctl/context-guru#707 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
prime-radiant-inc/evener#5028 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno