Improve handling of errors in GlobalPinInfo

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
This commit is contained in:
Hector Sanjuan 2017-01-24 01:09:27 +01:00
parent b3039b85d5
commit e9698490b0
3 changed files with 21 additions and 12 deletions

View File

@ -486,24 +486,29 @@ func (c *Cluster) globalPinInfoSlice(method string) ([]GlobalPinInfo, error) {
}
}
erroredPeers := make(map[peer.ID]string)
for i, r := range replies {
if e := errs[i]; e != nil {
logger.Errorf("%s: error in broadcast response from %s: %s ", c.host.ID(), members[i], e)
i := []PinInfo{
PinInfo{
CidStr: "*",
Peer: members[i],
IPFS: ClusterError,
TS: time.Now(),
Error: e.Error(),
},
}
mergePins(i)
erroredPeers[members[i]] = e.Error()
} else {
mergePins(r)
}
}
// Merge any errors
for p, msg := range erroredPeers {
for c, _ := range fullMap {
fullMap[c].Status[p] = PinInfo{
CidStr: c,
Peer: p,
IPFS: ClusterError,
TS: time.Now(),
Error: msg,
}
}
}
for _, v := range fullMap {
infos = append(infos, v)
}

View File

@ -94,6 +94,8 @@ func (st IPFSStatus) String() string {
switch st {
case Bug:
return "bug"
case ClusterError:
return "cluster_error"
case PinError:
return "pin_error"
case UnpinError:

View File

@ -78,7 +78,8 @@ type unpinResp struct {
}
type statusInfo struct {
IPFS string `json:"ipfs"`
IPFS string `json:"ipfs"`
Error string `json:"error,omitempty"`
}
type statusCidResp struct {
@ -420,7 +421,8 @@ func transformPinToStatusCid(p GlobalPinInfo) statusCidResp {
s.Status = make(map[string]statusInfo)
for k, v := range p.Status {
s.Status[k.Pretty()] = statusInfo{
IPFS: v.IPFS.String(),
IPFS: v.IPFS.String(),
Error: v.Error,
}
}
return s