ETCD后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

46 lines
830 B

package etcdv3
import (
"context"
clientv3 "go.etcd.io/etcd/client/v3"
"log"
"time"
)
const (
DEFAULT_DIR_VALUE = "etcdv3_dir_$2H#%gRe3*t"
)
// Restore 修复v1版本和e3w标记目录用的特殊key
func (sdk *EtcdV3Sdk) Restore() (err error) {
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
defer cancel()
// 查找出所有标记目录key
resp, err := sdk.cli.Get(ctx, "", clientv3.WithPrefix(), clientv3.WithKeysOnly())
if err != nil {
return
}
for _, v := range resp.Kvs {
key := string(v.Key)
log.Println(key)
txn := sdk.cli.Txn(ctx)
txn.If(
clientv3.Compare(
clientv3.Value(key),
"=",
DEFAULT_DIR_VALUE,
),
).Then(
clientv3.OpDelete(key),
)
rr, err := txn.Commit()
if err != nil {
return err
}
log.Println(rr.Succeeded)
}
return
}