mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-07 01:28:27 +08:00
36 lines
1.1 KiB
Go
36 lines
1.1 KiB
Go
package segment
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"github.com/milvus-io/milvus/internal/streamingnode/server/resource"
|
|
"github.com/milvus-io/milvus/internal/streamingnode/server/wal/interceptors"
|
|
"github.com/milvus-io/milvus/internal/streamingnode/server/wal/interceptors/segment/manager"
|
|
"github.com/milvus-io/milvus/pkg/v2/log"
|
|
"github.com/milvus-io/milvus/pkg/v2/util/syncutil"
|
|
)
|
|
|
|
func NewInterceptorBuilder() interceptors.InterceptorBuilder {
|
|
return &interceptorBuilder{}
|
|
}
|
|
|
|
type interceptorBuilder struct{}
|
|
|
|
func (b *interceptorBuilder) Build(param *interceptors.InterceptorBuildParam) interceptors.Interceptor {
|
|
assignManager := syncutil.NewFuture[*manager.PChannelSegmentAllocManager]()
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
segmentInterceptor := &segmentInterceptor{
|
|
ctx: ctx,
|
|
cancel: cancel,
|
|
logger: resource.Resource().Logger().With(
|
|
log.FieldComponent("segment-assigner"),
|
|
zap.Any("pchannel", param.ChannelInfo),
|
|
),
|
|
assignManager: assignManager,
|
|
}
|
|
go segmentInterceptor.recoverPChannelManager(param)
|
|
return segmentInterceptor
|
|
}
|