forked from TrueCloudLab/monza
[#1] Add '-f' flag to overwrite local cache
Sometimes multiple environments have blockchains with the same magic number. In this case, user should not reuse cached chain, because cache contains magic number to identify different chains. With new '-f' flag user will be able to repopulate cache with new data for the chain with the same magic number. Signed-off-by: Alex Vanin <a.vanin@yadro.com>
This commit is contained in:
parent
db7464d2d3
commit
4fc7478e1e
5 changed files with 16 additions and 4 deletions
|
@ -57,7 +57,7 @@ func explorer(c *cli.Context) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
endpoint := c.String(endpointFlagKey)
|
endpoint := c.String(endpointFlagKey)
|
||||||
blockchain, err := chain.Open(ctx, cacheDir, endpoint)
|
blockchain, err := chain.Open(ctx, cacheDir, endpoint, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot initialize remote blockchain client: %w", err)
|
return fmt.Errorf("cannot initialize remote blockchain client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
7
flags.go
7
flags.go
|
@ -21,6 +21,7 @@ const (
|
||||||
workersFlagKey = "workers"
|
workersFlagKey = "workers"
|
||||||
disableProgressBarFlagKey = "disable-progress-bar"
|
disableProgressBarFlagKey = "disable-progress-bar"
|
||||||
stutterThresholdFlagKey = "threshold"
|
stutterThresholdFlagKey = "threshold"
|
||||||
|
forceCacheRewriteKey = "force"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -78,6 +79,12 @@ var (
|
||||||
Usage: "duration limit between block timestamps",
|
Usage: "duration limit between block timestamps",
|
||||||
Value: 20 * time.Second,
|
Value: 20 * time.Second,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
forceCacheRewriteFlag = &cli.BoolFlag{
|
||||||
|
Name: forceCacheRewriteKey,
|
||||||
|
Aliases: []string{"f"},
|
||||||
|
Usage: "force blockchain cache rewrite",
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func parseNotifications(notifications []string, cli *rpcclient.Client) (map[string]*util.Uint160, error) {
|
func parseNotifications(notifications []string, cli *rpcclient.Client) (map[string]*util.Uint160, error) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
@ -27,7 +28,7 @@ var (
|
||||||
logsBucket = []byte("logs")
|
logsBucket = []byte("logs")
|
||||||
)
|
)
|
||||||
|
|
||||||
func Open(ctx context.Context, dir, endpoint string) (*Chain, error) {
|
func Open(ctx context.Context, dir, endpoint string, rewrite bool) (*Chain, error) {
|
||||||
cli, err := rpcclient.New(ctx, endpoint, rpcclient.Options{})
|
cli, err := rpcclient.New(ctx, endpoint, rpcclient.Options{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("rpc connection: %w", err)
|
return nil, fmt.Errorf("rpc connection: %w", err)
|
||||||
|
@ -44,6 +45,9 @@ func Open(ctx context.Context, dir, endpoint string) (*Chain, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
dbPath := path.Join(dir, strconv.Itoa(int(v.Protocol.Network))+".db")
|
dbPath := path.Join(dir, strconv.Itoa(int(v.Protocol.Network))+".db")
|
||||||
|
if rewrite {
|
||||||
|
_ = os.Remove(dbPath) // ignore error if file does not exist, etc.
|
||||||
|
}
|
||||||
|
|
||||||
db, err := bbolt.Open(dbPath, 0600, nil)
|
db, err := bbolt.Open(dbPath, 0600, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
3
main.go
3
main.go
|
@ -35,6 +35,7 @@ func main() {
|
||||||
cacheFlag,
|
cacheFlag,
|
||||||
workersFlag,
|
workersFlag,
|
||||||
disableProgressBarFlag,
|
disableProgressBarFlag,
|
||||||
|
forceCacheRewriteFlag,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -84,7 +85,7 @@ func monza(c *cli.Context) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blockchain, err := chain.Open(ctx, cacheDir, c.String(endpointFlagKey))
|
blockchain, err := chain.Open(ctx, cacheDir, c.String(endpointFlagKey), c.Bool(forceCacheRewriteKey))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot initialize remote blockchain client: %w", err)
|
return fmt.Errorf("cannot initialize remote blockchain client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ func stutter(c *cli.Context) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blockchain, err := chain.Open(ctx, cacheDir, c.String(endpointFlagKey))
|
blockchain, err := chain.Open(ctx, cacheDir, c.String(endpointFlagKey), false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot initialize remote blockchain client: %w", err)
|
return fmt.Errorf("cannot initialize remote blockchain client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue