mirror of https://github.com/milvus-io/milvus.git
48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package dataservice
|
|
|
|
import "fmt"
|
|
|
|
type (
|
|
channelRange []string
|
|
insertChannelMapper struct {
|
|
channelRanges []channelRange
|
|
}
|
|
)
|
|
|
|
func (cr channelRange) Contains(channelName string) bool {
|
|
for _, name := range cr {
|
|
if name == channelName {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func newInsertChannelMapper() *insertChannelMapper {
|
|
mapper := &insertChannelMapper{channelRanges: make([]channelRange, Params.QueryNodeNum)}
|
|
channelNames, numOfChannels, numOfQueryNodes := Params.InsertChannelNames, len(Params.InsertChannelNames), Params.QueryNodeNum
|
|
div, rem := numOfChannels/numOfQueryNodes, numOfChannels%numOfQueryNodes
|
|
for i, j := 0, 0; i < numOfChannels; j++ {
|
|
numOfRange := div
|
|
if j < rem {
|
|
numOfRange++
|
|
}
|
|
cRange := channelRange{}
|
|
k := i + numOfRange
|
|
for ; i < k; i++ {
|
|
cRange = append(cRange, channelNames[i])
|
|
}
|
|
mapper.channelRanges = append(mapper.channelRanges, cRange)
|
|
}
|
|
return mapper
|
|
}
|
|
|
|
func (mapper *insertChannelMapper) GetChannelRange(channelName string) (channelRange, error) {
|
|
for _, cr := range mapper.channelRanges {
|
|
if cr.Contains(channelName) {
|
|
return cr, nil
|
|
}
|
|
}
|
|
return nil, fmt.Errorf("channel name %s not found", channelName)
|
|
}
|