mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-29 23:15:28 +08:00
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package reader
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func (node *QueryNode) SegmentsManagement() {
|
|
node.queryNodeTimeSync.UpdateTSOTimeSync()
|
|
var timeNow = node.queryNodeTimeSync.TSOTimeSync
|
|
for _, collection := range node.Collections {
|
|
for _, partition := range collection.Partitions {
|
|
for _, oldSegment := range partition.OpenedSegments {
|
|
// TODO: check segment status
|
|
if timeNow >= oldSegment.SegmentCloseTime {
|
|
// start new segment and add it into partition.OpenedSegments
|
|
// TODO: get segmentID from master
|
|
var segmentID int64 = 0
|
|
var newSegment = partition.NewSegment(segmentID)
|
|
newSegment.SegmentCloseTime = timeNow + SegmentLifetime
|
|
partition.OpenedSegments = append(partition.OpenedSegments, newSegment)
|
|
node.SegmentsMap[segmentID] = newSegment
|
|
|
|
// close old segment and move it into partition.ClosedSegments
|
|
// TODO: check status
|
|
var _ = oldSegment.Close()
|
|
partition.ClosedSegments = append(partition.ClosedSegments, oldSegment)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func (node *QueryNode) SegmentService() {
|
|
for {
|
|
time.Sleep(200 * time.Millisecond)
|
|
node.SegmentsManagement()
|
|
fmt.Println("do segments management in 200ms")
|
|
}
|
|
}
|