Merge pull request #1705 from ipfs-cluster/pintracker-wrong-status

pintracker: fix status objects missing or having wrong fields
This commit is contained in:
Hector Sanjuan 2022-06-20 21:12:20 +02:00 committed by GitHub
commit bc54fd60a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 9 deletions

View File

@ -154,9 +154,12 @@ func (opt *OperationTracker) SetError(ctx context.Context, c api.Cid, err error)
func (opt *OperationTracker) unsafePinInfo(ctx context.Context, op *Operation, ipfs api.IPFSID) api.PinInfo {
if op == nil {
return api.PinInfo{
Cid: api.CidUndef,
Peer: opt.pid,
Name: "",
Cid: api.CidUndef,
Name: "",
Peer: opt.pid,
Origins: nil,
//Created: 0,
Metadata: nil,
PinInfoShort: api.PinInfoShort{
PeerName: opt.peerName,
IPFS: "",
@ -169,9 +172,13 @@ func (opt *OperationTracker) unsafePinInfo(ctx context.Context, op *Operation, i
}
}
return api.PinInfo{
Cid: op.Cid(),
Peer: opt.pid,
Name: op.Pin().Name,
Cid: op.Cid(),
Name: op.Pin().Name,
Peer: opt.pid,
Allocations: op.Pin().Allocations,
Origins: op.Pin().Origins,
Created: op.Pin().Timestamp,
Metadata: op.Pin().Metadata,
PinInfoShort: api.PinInfoShort{
PeerName: opt.peerName,
IPFS: ipfs.ID,

View File

@ -612,11 +612,23 @@ func (spt *Tracker) Recover(ctx context.Context, c api.Cid) (api.PinInfo, error)
}
func (spt *Tracker) recoverWithPinInfo(ctx context.Context, pi api.PinInfo) (api.PinInfo, error) {
var err error
st, err := spt.getState(ctx)
if err != nil {
logger.Error(err)
return api.PinInfo{}, err
}
var pin api.Pin
switch pi.Status {
case api.TrackerStatusPinError, api.TrackerStatusUnexpectedlyUnpinned:
pin, err = st.Get(ctx, pi.Cid)
if err != nil { // ignore error - in case pin was removed while recovering
logger.Warn(err)
return spt.Status(ctx, pi.Cid), nil
}
logger.Infof("Restarting pin operation for %s", pi.Cid)
err = spt.enqueue(ctx, api.PinCid(pi.Cid), optracker.OperationPin)
err = spt.enqueue(ctx, pin, optracker.OperationPin)
case api.TrackerStatusUnpinError:
logger.Infof("Restarting unpin operation for %s", pi.Cid)
err = spt.enqueue(ctx, api.PinCid(pi.Cid), optracker.OperationUnpin)

View File

@ -513,7 +513,7 @@ func TestAttemptCountAndPriority(t *testing.T) {
normalPin2 := api.PinWithOpts(test.Cid4, pinOpts)
errPin := api.PinWithOpts(pinErrCid, pinOpts)
spt := testStatelessPinTracker(t, normalPin, normalPin2)
spt := testStatelessPinTracker(t, normalPin, normalPin2, errPin)
defer spt.Shutdown(ctx)
st := spt.Status(ctx, test.Cid1)