'Query' function do not support concurrent invocation
- Dominant language
- Go
- Stars
- 6.1k
- Forks
- 609
- Avg merge
- 15h 1m
- Merged PRs (30d)
- 3
Description
'Query' function in serf.go is not reentrant, for ltime of queryresponse is retrieved from queryClock, and will increment in 'handleQuery' function, and it will be used as the key of queryresponse, in some case, two or more query may get the same ltime, and the final one will overwrite the queryresponse with the same ltime in queryResponse queue, so the response from other node will mismatch the id of queryresponse, and it will result in waiting on the response channal timeout, is it an issue?
2018/07/03 17:29:48 [WARN] serf: query reply ID mismatch (Local: 191936041, Response: 251185027)
2018/07/03 17:29:48 [WARN] serf: query reply ID mismatch (Local: 191936041, Response: 251185027)
2018/07/03 17:32:48 [WARN] serf: query reply ID mismatch (Local: 2102129985, Response: 2068071263)
2018/07/03 17:32:48 [WARN] serf: query reply ID mismatch (Local: 2102129985, Response: 2068071263)
2018/07/03 17:35:48 [WARN] serf: query reply ID mismatch (Local: 2066585276, Response: 767028623)
Contributor guide
Assessment
This issue has not been assessed yet.