Merge pull request #4 from mailgun/thrawn/develop

Remove() now inits peers if needed
This commit is contained in:
Derrick J. Wippler 2019-05-23 15:17:25 -05:00 committed by GitHub
commit 9dade9087a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View File

@ -241,6 +241,8 @@ func (g *Group) Get(ctx Context, key string, dest Sink) error {
// Remove clears the key from our cache then forwards the remove
// request to all peers.
func (g *Group) Remove(ctx Context, key string) error {
g.peersOnce.Do(g.initPeers)
_, err := g.removeGroup.Do(key, func() (interface{}, error) {
// Remove from key owner first
@ -250,7 +252,7 @@ func (g *Group) Remove(ctx Context, key string) error {
return nil, err
}
}
// Remove from our cache first in case we are owner
// Remove from our cache next
g.localRemove(key)
wg := sync.WaitGroup{}
errs := make(chan error)

10
http.go
View File

@ -20,6 +20,7 @@ import (
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
"strings"
@ -273,9 +274,14 @@ func (h *httpGetter) Remove(ctx Context, in *pb.GetRequest) error {
if err := h.makeRequest(ctx, http.MethodDelete, in, &res); err != nil {
return err
}
res.Body.Close()
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
return fmt.Errorf("server returned: %v", res.Status)
body, err := ioutil.ReadAll(res.Body)
if err != nil {
return fmt.Errorf("while reading body response: %v", res.Status)
}
return fmt.Errorf("server returned status %d: %s", res.StatusCode, body)
}
return nil
}