rafthttp: wait 1ms before enabling cancel

CancelRequest only effects on in-flight request, so we need to wait
for Do(request) called before enabling cancel.
This commit is contained in:
Yicheng Qin 2015-06-11 09:12:23 -07:00
parent cd629c9b44
commit 29dca49cb5

View File

@ -153,6 +153,7 @@ func (p *pipeline) post(data []byte) (err error) {
select {
case <-done:
case <-p.stopc:
waitSchedule()
stopped = true
if cancel, ok := p.tr.(canceler); ok {
cancel.CancelRequest(req)
@ -199,3 +200,6 @@ func (p *pipeline) post(data []byte) (err error) {
return fmt.Errorf("unexpected http status %s while posting to %q", http.StatusText(resp.StatusCode), req.URL.String())
}
}
// waitSchedule waits other goroutines to be scheduled for a while
func waitSchedule() { time.Sleep(time.Millisecond) }