milvus/internal/writenode/write_node.go

60 lines
1.2 KiB
Go

package writenode
import (
"context"
etcdkv "github.com/zilliztech/milvus-distributed/internal/kv/etcd"
"go.etcd.io/etcd/clientv3"
)
type WriteNode struct {
ctx context.Context
WriteNodeID uint64
dataSyncService *dataSyncService
metaTable *metaTable
}
func NewWriteNode(ctx context.Context, writeNodeID uint64) (*WriteNode, error) {
node := &WriteNode{
ctx: ctx,
WriteNodeID: writeNodeID,
dataSyncService: nil,
}
etcdAddress := Params.EtcdAddress
etcdClient, err := clientv3.New(clientv3.Config{Endpoints: []string{etcdAddress}})
if err != nil {
return nil, err
}
etcdKV := etcdkv.NewEtcdKV(etcdClient, Params.MetaRootPath)
metaKV, err2 := NewMetaTable(etcdKV)
if err2 != nil {
return nil, err
}
node.metaTable = metaKV
return node, nil
}
func (node *WriteNode) Start() {
node.dataSyncService = newDataSyncService(node.ctx)
// node.statsService = newStatsService(node.ctx)
go node.dataSyncService.start()
// node.statsService.start()
}
func (node *WriteNode) Close() {
<-node.ctx.Done()
// close services
if node.dataSyncService != nil {
(*node.dataSyncService).close()
}
// if node.statsService != nil {
// (*node.statsService).close()
// }
}