Skip to content

Commit f691b91

Browse files
author
Cory Schwartz
committed
wait for lock to be acquired
1 parent 8cebcf3 commit f691b91

File tree

3 files changed

+39
-30
lines changed

3 files changed

+39
-30
lines changed

cmd/filecoin-chain-archiver/cmds/locker.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"time"
1212

1313
"github.com/filecoin-project/go-jsonrpc"
14-
"github.com/filecoin-project/lotus/cli/util"
14+
cliutil "github.com/filecoin-project/lotus/cli/util"
1515
"github.com/urfave/cli/v2"
1616
"golang.org/x/xerrors"
1717

@@ -87,8 +87,14 @@ var cmdService = &cli.Command{
8787
},
8888
{
8989
Name: "lock",
90-
Usage: "list current locks",
91-
Flags: []cli.Flag{},
90+
Usage: "acquire a lock",
91+
Flags: []cli.Flag{
92+
&cli.BoolFlag{
93+
Name: "wait",
94+
Aliases: []string{"w"},
95+
Value: false,
96+
},
97+
},
9298
Action: func(cctx *cli.Context) error {
9399
ctx := context.Background()
94100

@@ -98,17 +104,20 @@ var cmdService = &cli.Command{
98104
return err
99105
}
100106

101-
fmt.Println(cctx.Args().Get(0))
102-
fmt.Println(cctx.Args().Get(1))
103-
104-
lock, err := api.Lock(ctx, cctx.Args().Get(0), cctx.Args().Get(1))
105-
if err != nil {
106-
return err
107+
for {
108+
lock, err := api.Lock(ctx, cctx.Args().Get(0), cctx.Args().Get(1))
109+
if err != nil {
110+
return err
111+
}
112+
fmt.Printf("peerid:%s, acquired:%t, expiry:%s\n", lock.PeerID, lock.Acquired, lock.Expiry)
113+
if lock.Acquired {
114+
return nil
115+
} else if !lock.Acquired && !cctx.Bool("wait") {
116+
err = fmt.Errorf("lock not aquired")
117+
return err
118+
}
119+
time.Sleep(10 * time.Second)
107120
}
108-
109-
fmt.Printf("%s, %T, %s", lock.PeerID, lock.Aquired, lock.Expiry)
110-
111-
return nil
112121
},
113122
},
114123
{

pkg/nodelocker/client/nodelocker.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import (
55
"math/rand"
66
"time"
77

8-
"github.com/filecoin-project/lotus/cli/util"
98
"github.com/filecoin-project/filecoin-chain-archiver/pkg/nodelocker"
109
"github.com/filecoin-project/filecoin-chain-archiver/pkg/nodelocker/api/apiclient"
10+
cliutil "github.com/filecoin-project/lotus/cli/util"
1111
)
1212

1313
const charset = "abcdefghijklmnopqrstuvwxyz"
@@ -46,7 +46,7 @@ func (nl *NodeLock) Renew(ctx context.Context) (bool, error) {
4646

4747
nl.expiry = lock.Expiry
4848

49-
return lock.Aquired, nil
49+
return lock.Acquired, nil
5050
}
5151

5252
func (nl *NodeLock) Expiry() time.Time {

pkg/nodelocker/nodelocker.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import (
1212
var logger = log.Logger("filecoin-chain-archiver/pkg/nodelocker")
1313

1414
type NodeLock struct {
15-
PeerID string
16-
Expiry time.Time
17-
Aquired bool
15+
PeerID string
16+
Expiry time.Time
17+
Acquired bool
1818
}
1919

2020
type nodeLock struct {
@@ -59,9 +59,9 @@ func (snl *NodeLocker) FetchLocks(ctx context.Context) ([]NodeLock, error) {
5959
for e := snl.locks.Front(); e != nil; e = e.Next() {
6060
lock := e.Value.(nodeLock)
6161
locks = append(locks, NodeLock{
62-
PeerID: lock.peerID,
63-
Expiry: lock.expiry,
64-
Aquired: true,
62+
PeerID: lock.peerID,
63+
Expiry: lock.expiry,
64+
Acquired: true,
6565
})
6666
}
6767

@@ -86,16 +86,16 @@ func (snl *NodeLocker) Lock(ctx context.Context, peerID, secret string) (NodeLoc
8686

8787
logger.Infow("updated lock", "expiry", lock.expiry, "peer", lock.peerID, "secret", lock.secret)
8888
return NodeLock{
89-
PeerID: lock.peerID,
90-
Expiry: lock.expiry,
91-
Aquired: true,
89+
PeerID: lock.peerID,
90+
Expiry: lock.expiry,
91+
Acquired: true,
9292
}, nil
9393
} else {
9494
logger.Infow("lock failed", "expiry", lock.expiry, "peer", lock.peerID, "secret", lock.secret)
9595
return NodeLock{
96-
PeerID: lock.peerID,
97-
Expiry: lock.expiry,
98-
Aquired: false,
96+
PeerID: lock.peerID,
97+
Expiry: lock.expiry,
98+
Acquired: false,
9999
}, nil
100100
}
101101
}
@@ -112,8 +112,8 @@ func (snl *NodeLocker) Lock(ctx context.Context, peerID, secret string) (NodeLoc
112112
snl.locks.PushBack(lock)
113113

114114
return NodeLock{
115-
PeerID: lock.peerID,
116-
Expiry: lock.expiry,
117-
Aquired: true,
115+
PeerID: lock.peerID,
116+
Expiry: lock.expiry,
117+
Acquired: true,
118118
}, nil
119119
}

0 commit comments

Comments
 (0)