2021-01-19 07:35:40 +00:00
|
|
|
package dataservice
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/zilliztech/milvus-distributed/internal/proto/internalpb2"
|
|
|
|
)
|
|
|
|
|
|
|
|
type statsHandler struct {
|
|
|
|
meta *meta
|
|
|
|
}
|
|
|
|
|
|
|
|
func newStatsHandler(meta *meta) *statsHandler {
|
|
|
|
return &statsHandler{
|
|
|
|
meta: meta,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-01-23 12:22:59 +00:00
|
|
|
func (handler *statsHandler) HandleSegmentStat(segStats *internalpb2.SegmentStatisticsUpdates) error {
|
2021-01-19 07:35:40 +00:00
|
|
|
segMeta, err := handler.meta.GetSegment(segStats.SegmentID)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2021-01-25 07:16:28 +00:00
|
|
|
if segStats.IsNewSegment {
|
|
|
|
segMeta.OpenTime = segStats.CreateTime
|
|
|
|
segMeta.StartPosition = append(segMeta.StartPosition, segStats.StartPositions...)
|
|
|
|
}
|
|
|
|
segMeta.SealedTime = segStats.EndTime
|
|
|
|
for _, pos := range segStats.EndPositions {
|
|
|
|
isNew := true
|
|
|
|
for _, epos := range segMeta.EndPosition {
|
|
|
|
if epos.ChannelName == pos.ChannelName {
|
|
|
|
epos.Timestamp = pos.Timestamp
|
|
|
|
epos.MsgID = pos.MsgID
|
|
|
|
isNew = false
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if isNew {
|
|
|
|
segMeta.EndPosition = append(segMeta.EndPosition, pos)
|
|
|
|
}
|
|
|
|
}
|
2021-01-19 07:35:40 +00:00
|
|
|
segMeta.NumRows = segStats.NumRows
|
|
|
|
segMeta.MemSize = segStats.MemorySize
|
|
|
|
|
|
|
|
return handler.meta.UpdateSegment(segMeta)
|
|
|
|
}
|