method: NewMethodQuery deadlocks when a sort argument contains a method call
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 85/100
Hướng nghiên cứu
Bắt đầu trong method.go và theo dõi cách NewMethodQuery tìm và gọi factory đã đăng ký; issue xác định khóa được giữ trong khi gọi đó là nguyên nhân gây deadlock. Sau đó tìm bảng TestParseQuery và thêm trường hợp sort("count()") được mô tả trong issue. Chạy các bài kiểm tra parser và xác nhận lời gọi phương thức lồng nhau hoàn tất mà không bị treo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Go
- Star
- 7
- Fork
- 2
- Merge trung bình
- 10 giờ 2 phút
- Pull request đã merge (30 ngày)
- 56
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của mojatter/tree
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(edit): Report an intermediate step on a custom nil container instead of skipping itCó thể đã có người làm @mojatter đã nhận 2 ngày trước. Đang mở
mojatter/tree#213 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
refactor(node): Drop Append from EditorNode, keeping (*Array).AppendCó thể đã có người làm @mojatter đã nhận 2 ngày trước. Đang mở
mojatter/tree#211 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
docs(util): Note that Walk reuses the keys slice between WalkFunc callsCó thể đã có người làm @mojatter đã nhận 2 ngày trước. Đang mở
mojatter/tree#210 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ci: Test the examples moduleCó thể đã có người làm @mojatter đã nhận 4 ngày trước. Đang mở
mojatter/tree#206 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của mojatter/tree
Issue tương tự
-
agent-butler-finding chore
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
jordansmall/spindrift#6318 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Eyevinn/moqlivemock#166 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
JakeChampion/lang#14091 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
batcher: BAF send context leaks per batchCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
hyperledger/fabric-x-orderer#1409 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
get actions doesn't show the approval flag, and describe action shows it unformattedCó thể đã có người làm @kenokech đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày