milvus/pkg/util/metautil/binlog.go
jaime c9d0c157ec
Move some modules from internal to public package (#22572)
Signed-off-by: jaime <yun.zhang@zilliz.com>
2023-04-06 19:14:32 +08:00

63 lines
1.7 KiB
Go

package metautil
import (
"path"
"strconv"
"strings"
"github.com/milvus-io/milvus/pkg/common"
"github.com/milvus-io/milvus/pkg/util/typeutil"
)
const pathSep = "/"
func BuildInsertLogPath(rootPath string, collectionID, partitionID, segmentID, fieldID, logID typeutil.UniqueID) string {
k := JoinIDPath(collectionID, partitionID, segmentID, fieldID, logID)
return path.Join(rootPath, common.SegmentInsertLogPath, k)
}
func GetSegmentIDFromInsertLogPath(logPath string) typeutil.UniqueID {
return getSegmentIDFromPath(logPath, 3)
}
func BuildStatsLogPath(rootPath string, collectionID, partitionID, segmentID, fieldID, logID typeutil.UniqueID) string {
k := JoinIDPath(collectionID, partitionID, segmentID, fieldID, logID)
return path.Join(rootPath, common.SegmentStatslogPath, k)
}
func GetSegmentIDFromStatsLogPath(logPath string) typeutil.UniqueID {
return getSegmentIDFromPath(logPath, 3)
}
func BuildDeltaLogPath(rootPath string, collectionID, partitionID, segmentID, logID typeutil.UniqueID) string {
k := JoinIDPath(collectionID, partitionID, segmentID, logID)
return path.Join(rootPath, common.SegmentDeltaLogPath, k)
}
func GetSegmentIDFromDeltaLogPath(logPath string) typeutil.UniqueID {
return getSegmentIDFromPath(logPath, 2)
}
func getSegmentIDFromPath(logPath string, segmentIndex int) typeutil.UniqueID {
infos := strings.Split(logPath, pathSep)
l := len(infos)
if l < segmentIndex {
return 0
}
v, err := strconv.ParseInt(infos[l-segmentIndex], 10, 64)
if err != nil {
return 0
}
return v
}
// JoinIDPath joins ids to path format.
func JoinIDPath(ids ...typeutil.UniqueID) string {
idStr := make([]string, 0, len(ids))
for _, id := range ids {
idStr = append(idStr, strconv.FormatInt(id, 10))
}
return path.Join(idStr...)
}