hashicorp / hashicorp/serf

'Query' function do not support concurrent invocation

Open
#522 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.