2020-10-29 12:42:47 +00:00
|
|
|
package msgstream
|
|
|
|
|
|
|
|
import (
|
|
|
|
internalPb "github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
|
2020-11-03 06:53:36 +00:00
|
|
|
. "github.com/zilliztech/milvus-distributed/internal/util/typeutil"
|
2020-10-29 12:42:47 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type MsgType uint32
|
|
|
|
|
|
|
|
const (
|
2020-11-04 08:01:28 +00:00
|
|
|
kInsert MsgType = 400
|
|
|
|
kDelete MsgType = 401
|
|
|
|
kSearch MsgType = 500
|
|
|
|
kSearchResult MsgType = 1000
|
|
|
|
|
|
|
|
kSegmentStatics MsgType = 1100
|
|
|
|
kTimeTick MsgType = 1200
|
|
|
|
kTimeSync MsgType = 1201
|
2020-10-29 12:42:47 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type TsMsg interface {
|
2020-11-02 08:01:04 +00:00
|
|
|
SetTs(ts Timestamp)
|
|
|
|
BeginTs() Timestamp
|
|
|
|
EndTs() Timestamp
|
2020-10-29 12:42:47 +00:00
|
|
|
Type() MsgType
|
2020-11-02 08:01:04 +00:00
|
|
|
HashKeys() []int32
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////Insert//////////////////////////////////////////
|
|
|
|
type InsertTask struct {
|
2020-11-02 08:01:04 +00:00
|
|
|
HashValues []int32
|
2020-10-29 12:42:47 +00:00
|
|
|
internalPb.InsertRequest
|
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (it InsertTask) SetTs(ts Timestamp) {
|
|
|
|
// TODO::
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (it InsertTask) BeginTs() Timestamp {
|
|
|
|
timestamps := it.Timestamps
|
|
|
|
var beginTs Timestamp
|
|
|
|
for _, v := range timestamps {
|
|
|
|
beginTs = Timestamp(v)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
for _, v := range timestamps {
|
|
|
|
if beginTs > Timestamp(v) {
|
|
|
|
beginTs = Timestamp(v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return beginTs
|
|
|
|
}
|
|
|
|
|
|
|
|
func (it InsertTask) EndTs() Timestamp {
|
|
|
|
timestamps := it.Timestamps
|
|
|
|
var endTs Timestamp
|
|
|
|
for _, v := range timestamps {
|
|
|
|
endTs = Timestamp(v)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
for _, v := range timestamps {
|
|
|
|
if endTs < Timestamp(v) {
|
|
|
|
endTs = Timestamp(v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return endTs
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (it InsertTask) Type() MsgType {
|
2020-11-04 08:01:28 +00:00
|
|
|
if it.ReqType == internalPb.ReqType_kTimeTick {
|
|
|
|
return kTimeSync
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
2020-11-04 08:01:28 +00:00
|
|
|
return kInsert
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (it InsertTask) HashKeys() []int32 {
|
|
|
|
return it.HashValues
|
|
|
|
}
|
|
|
|
|
2020-10-29 12:42:47 +00:00
|
|
|
/////////////////////////////////////////Delete//////////////////////////////////////////
|
|
|
|
type DeleteTask struct {
|
2020-11-02 08:01:04 +00:00
|
|
|
HashValues []int32
|
2020-10-29 12:42:47 +00:00
|
|
|
internalPb.DeleteRequest
|
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (dt DeleteTask) SetTs(ts Timestamp) {
|
|
|
|
// TODO::
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (dt DeleteTask) BeginTs() Timestamp {
|
|
|
|
timestamps := dt.Timestamps
|
|
|
|
var beginTs Timestamp
|
|
|
|
for _, v := range timestamps {
|
|
|
|
beginTs = Timestamp(v)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
for _, v := range timestamps {
|
|
|
|
if beginTs > Timestamp(v) {
|
|
|
|
beginTs = Timestamp(v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return beginTs
|
|
|
|
}
|
|
|
|
|
|
|
|
func (dt DeleteTask) EndTs() Timestamp {
|
|
|
|
timestamps := dt.Timestamps
|
|
|
|
var endTs Timestamp
|
|
|
|
for _, v := range timestamps {
|
|
|
|
endTs = Timestamp(v)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
for _, v := range timestamps {
|
|
|
|
if endTs < Timestamp(v) {
|
|
|
|
endTs = Timestamp(v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return endTs
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (dt DeleteTask) Type() MsgType {
|
2020-11-04 08:01:28 +00:00
|
|
|
if dt.ReqType == internalPb.ReqType_kTimeTick {
|
|
|
|
return kTimeSync
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
2020-11-04 08:01:28 +00:00
|
|
|
return kDelete
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (dt DeleteTask) HashKeys() []int32 {
|
|
|
|
return dt.HashValues
|
|
|
|
}
|
|
|
|
|
2020-10-29 12:42:47 +00:00
|
|
|
/////////////////////////////////////////Search//////////////////////////////////////////
|
|
|
|
type SearchTask struct {
|
2020-11-02 08:01:04 +00:00
|
|
|
HashValues []int32
|
2020-10-29 12:42:47 +00:00
|
|
|
internalPb.SearchRequest
|
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (st SearchTask) SetTs(ts Timestamp) {
|
2020-10-29 12:42:47 +00:00
|
|
|
st.Timestamp = uint64(ts)
|
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (st SearchTask) BeginTs() Timestamp {
|
|
|
|
return Timestamp(st.Timestamp)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (st SearchTask) EndTs() Timestamp {
|
|
|
|
return Timestamp(st.Timestamp)
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (st SearchTask) Type() MsgType {
|
2020-11-04 08:01:28 +00:00
|
|
|
if st.ReqType == internalPb.ReqType_kTimeTick {
|
|
|
|
return kTimeSync
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
2020-11-04 08:01:28 +00:00
|
|
|
return kSearch
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (st SearchTask) HashKeys() []int32 {
|
|
|
|
return st.HashValues
|
|
|
|
}
|
|
|
|
|
2020-10-29 12:42:47 +00:00
|
|
|
/////////////////////////////////////////SearchResult//////////////////////////////////////////
|
|
|
|
type SearchResultTask struct {
|
2020-11-02 08:01:04 +00:00
|
|
|
HashValues []int32
|
2020-10-29 12:42:47 +00:00
|
|
|
internalPb.SearchResult
|
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (srt SearchResultTask) SetTs(ts Timestamp) {
|
2020-10-29 12:42:47 +00:00
|
|
|
srt.Timestamp = uint64(ts)
|
|
|
|
}
|
|
|
|
|
2020-11-03 06:53:36 +00:00
|
|
|
func (srt SearchResultTask) BeginTs() Timestamp {
|
2020-11-02 08:01:04 +00:00
|
|
|
return Timestamp(srt.Timestamp)
|
|
|
|
}
|
|
|
|
|
2020-11-03 06:53:36 +00:00
|
|
|
func (srt SearchResultTask) EndTs() Timestamp {
|
2020-11-02 08:01:04 +00:00
|
|
|
return Timestamp(srt.Timestamp)
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (srt SearchResultTask) Type() MsgType {
|
2020-11-04 08:01:28 +00:00
|
|
|
return kSearchResult
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-02 08:01:04 +00:00
|
|
|
func (srt SearchResultTask) HashKeys() []int32 {
|
|
|
|
return srt.HashValues
|
|
|
|
}
|
|
|
|
|
2020-10-29 12:42:47 +00:00
|
|
|
/////////////////////////////////////////TimeSync//////////////////////////////////////////
|
2020-11-04 08:01:28 +00:00
|
|
|
type TimeSyncTask struct {
|
2020-11-02 08:01:04 +00:00
|
|
|
HashValues []int32
|
2020-11-03 08:38:16 +00:00
|
|
|
internalPb.TimeTickMsg
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-04 08:01:28 +00:00
|
|
|
func (tst TimeSyncTask) SetTs(ts Timestamp) {
|
2020-10-29 12:42:47 +00:00
|
|
|
tst.Timestamp = uint64(ts)
|
|
|
|
}
|
|
|
|
|
2020-11-04 08:01:28 +00:00
|
|
|
func (tst TimeSyncTask) BeginTs() Timestamp {
|
2020-11-02 08:01:04 +00:00
|
|
|
return Timestamp(tst.Timestamp)
|
|
|
|
}
|
|
|
|
|
2020-11-04 08:01:28 +00:00
|
|
|
func (tst TimeSyncTask) EndTs() Timestamp {
|
2020-11-02 08:01:04 +00:00
|
|
|
return Timestamp(tst.Timestamp)
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-04 08:01:28 +00:00
|
|
|
func (tst TimeSyncTask) Type() MsgType {
|
|
|
|
return kTimeSync
|
2020-10-29 12:42:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-04 08:01:28 +00:00
|
|
|
func (tst TimeSyncTask) HashKeys() []int32 {
|
2020-11-02 08:01:04 +00:00
|
|
|
return tst.HashValues
|
|
|
|
}
|
|
|
|
|
2020-10-29 12:42:47 +00:00
|
|
|
///////////////////////////////////////////Key2Seg//////////////////////////////////////////
|
|
|
|
//type Key2SegTask struct {
|
|
|
|
// internalPb.Key2SegMsg
|
|
|
|
//}
|
|
|
|
//
|
|
|
|
////TODO::Key2SegMsg don't have timestamp
|
2020-11-02 08:01:04 +00:00
|
|
|
//func (k2st Key2SegTask) SetTs(ts Timestamp) {}
|
2020-10-29 12:42:47 +00:00
|
|
|
//
|
2020-11-02 08:01:04 +00:00
|
|
|
//func (k2st Key2SegTask) Ts() Timestamp {
|
|
|
|
// return Timestamp(0)
|
2020-10-29 12:42:47 +00:00
|
|
|
//}
|
|
|
|
//
|
|
|
|
//func (k2st Key2SegTask) Type() MsgType {
|
|
|
|
// return
|
|
|
|
//}
|