node/hack/findmissing: add simple script to find all missing messages

This is different from "admin find-missing-messages" insofar as
having a hardcoded list of emitters.

commit-id:b934f672
This commit is contained in:
Leo 2022-02-14 17:13:56 +01:00 committed by Evan Gray
parent 8bf1176401
commit de7cfe6cc7
1 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,74 @@
package main
import (
"context"
"flag"
"fmt"
"github.com/certusone/wormhole/node/pkg/common"
nodev1 "github.com/certusone/wormhole/node/pkg/proto/node/v1"
"github.com/certusone/wormhole/node/pkg/vaa"
"google.golang.org/grpc"
"log"
)
var (
adminRPC = flag.String("adminRPC", "/run/guardiand/admin.socket", "Admin RPC address")
shouldBackfill = flag.Bool("backfill", true, "Backfill missing sequences")
onlyChain = flag.String("only", "", "Only check this chain")
)
func getAdminClient(ctx context.Context, addr string) (*grpc.ClientConn, error, nodev1.NodePrivilegedServiceClient) {
conn, err := grpc.DialContext(ctx, fmt.Sprintf("unix:///%s", addr), grpc.WithInsecure())
if err != nil {
log.Fatalf("failed to connect to %s: %v", addr, err)
}
c := nodev1.NewNodePrivilegedServiceClient(conn)
return conn, err, c
}
func main() {
flag.Parse()
ctx := context.Background()
conn, err, admin := getAdminClient(ctx, *adminRPC)
defer conn.Close()
if err != nil {
log.Fatalf("failed to get admin client: %v", err)
}
var only vaa.ChainID
if *onlyChain != "" {
only, err = vaa.ChainIDFromString(*onlyChain)
if err != nil {
log.Fatalf("failed to parse chain id: %v", err)
}
}
for _, emitter := range common.KnownEmitters {
if only != vaa.ChainIDUnset {
if emitter.ChainID != only {
continue
}
}
log.Printf("requesting missing sequences for %v %s", emitter.ChainID, emitter.Emitter)
msg := nodev1.FindMissingMessagesRequest{
EmitterChain: uint32(emitter.ChainID),
EmitterAddress: emitter.Emitter,
RpcBackfill: *shouldBackfill,
BackfillNodes: common.PublicRPCEndpoints,
}
resp, err := admin.FindMissingMessages(ctx, &msg)
if err != nil {
log.Fatalf("failed to run find FindMissingMessages RPC: %v", err)
}
for _, id := range resp.MissingMessages {
fmt.Println(id)
}
}
}