move_binlog_path_helper.go 1.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
package main

import (
	"flag"
	"fmt"
	"os"
	"strings"

	"github.com/milvus-io/milvus/internal/datacoord"
	etcdkv "github.com/milvus-io/milvus/internal/kv/etcd"
	"github.com/milvus-io/milvus/internal/log"
	"go.uber.org/zap"
)

type etcdEndPoints []string

func (i *etcdEndPoints) String() string {
	return strings.Join(*i, ",")
}

func (i *etcdEndPoints) Set(value string) error {
	*i = append(*i, value)
	return nil
}
func main() {
	var etcdEndPoints etcdEndPoints
	var metaRootPath, segmentBinlogSubPath string
	flagSet := flag.NewFlagSet(os.Args[0], flag.ExitOnError)

	flagSet.Var(&etcdEndPoints, "etcdEndPoints", "endpoints of etcd")
	flagSet.StringVar(&metaRootPath, "metaRootPath", "", "root path of meta on etcd")
	flagSet.StringVar(&segmentBinlogSubPath, "segmentBinlogSubPath", "", "binlog path prefix on etcd")
	flagSet.Usage = func() {
		fmt.Fprintf(flagSet.Output(), "All flags is optional. If you did not change it in config files, you do not need to set the flag.\n")
		flagSet.PrintDefaults()
	}

	if len(os.Args) > 0 {
		flagSet.Parse(os.Args[1:])
	}

	datacoord.Params.Init()
	if len(etcdEndPoints) != 0 {
		datacoord.Params.EtcdEndpoints = etcdEndPoints
	}
	if len(metaRootPath) != 0 {
		datacoord.Params.MetaRootPath = metaRootPath
	}
	if len(segmentBinlogSubPath) != 0 {
		datacoord.Params.SegmentBinlogSubPath = segmentBinlogSubPath
	}

	etcdKV, err := etcdkv.NewEtcdKV(datacoord.Params.EtcdEndpoints, datacoord.Params.MetaRootPath)
	if err != nil {
		log.Error("failed to connect to etcd", zap.Error(err))
		return
	}

	meta, err := datacoord.NewMeta(etcdKV)
	if err != nil {
		log.Error("failed to create meta", zap.Error(err))
		return
	}

	helper := datacoord.NewMoveBinlogPathHelper(etcdKV, meta)
	if err = helper.Execute(); err != nil {
		return
	}

	log.Info("finished")
}