mirror of https://github.com/milvus-io/milvus.git
fix: grant ManualCompact api doesn't work (#38096)
issue: #38086 cause ManualCompact api pass collection id in request, but RBAC requires to check collection name, so grant ManualCompact api doesn't work. This PR refine the ManualCompact api to accpet collection name in request. Signed-off-by: Wei Liu <wei.liu@zilliz.com>pull/38167/head
parent
a5e0a56a8e
commit
e09f431891
2
go.mod
2
go.mod
|
@ -23,7 +23,7 @@ require (
|
|||
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
|
||||
github.com/klauspost/compress v1.17.9
|
||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20241120015424-93892e628c69
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.5.0-beta.0.20241129033252-5d0b09587056
|
||||
github.com/minio/minio-go/v7 v7.0.73
|
||||
github.com/pingcap/log v1.1.1-0.20221015072633-39906604fb81
|
||||
github.com/prometheus/client_golang v1.14.0
|
||||
|
|
4
go.sum
4
go.sum
|
@ -632,6 +632,10 @@ github.com/milvus-io/gorocksdb v0.0.0-20220624081344-8c5f4212846b h1:TfeY0NxYxZz
|
|||
github.com/milvus-io/gorocksdb v0.0.0-20220624081344-8c5f4212846b/go.mod h1:iwW+9cWfIzzDseEBCCeDSN5SD16Tidvy8cwQ7ZY8Qj4=
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20241120015424-93892e628c69 h1:Qt0Bv2Fum3EX3OlkuQYHJINBzeU4oEuHy2lXSfB/gZw=
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20241120015424-93892e628c69/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs=
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.5.0-beta.0.20241129024423-3911e6ebd8a6 h1:TrGZtojfj84Rdd1XAaGULCWZqO3rJMiGS8vxFXHT7G4=
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.5.0-beta.0.20241129024423-3911e6ebd8a6/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs=
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.5.0-beta.0.20241129033252-5d0b09587056 h1:o2uJgfwTOg8bu/E9n6TvmFT2XPrPm1v0XFhc6XXcFoE=
|
||||
github.com/milvus-io/milvus-proto/go-api/v2 v2.5.0-beta.0.20241129033252-5d0b09587056/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs=
|
||||
github.com/milvus-io/pulsar-client-go v0.12.1 h1:O2JZp1tsYiO7C0MQ4hrUY/aJXnn2Gry6hpm7UodghmE=
|
||||
github.com/milvus-io/pulsar-client-go v0.12.1/go.mod h1:dkutuH4oS2pXiGm+Ti7fQZ4MRjrMPZ8IJeEGAWMeckk=
|
||||
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs=
|
||||
|
|
|
@ -265,6 +265,11 @@ func fillDatabase(ctx context.Context, req interface{}) (context.Context, interf
|
|||
r.DbName = GetCurDBNameFromContextOrDefault(ctx)
|
||||
}
|
||||
return ctx, r
|
||||
case *milvuspb.ManualCompactionRequest:
|
||||
if r.DbName == "" {
|
||||
r.DbName = GetCurDBNameFromContextOrDefault(ctx)
|
||||
}
|
||||
return ctx, r
|
||||
default:
|
||||
}
|
||||
return ctx, req
|
||||
|
|
|
@ -94,6 +94,7 @@ func TestDatabaseInterceptor(t *testing.T) {
|
|||
&milvuspb.ListImportTasksRequest{},
|
||||
&milvuspb.OperatePrivilegeRequest{Entity: &milvuspb.GrantEntity{}},
|
||||
&milvuspb.SelectGrantRequest{Entity: &milvuspb.GrantEntity{}},
|
||||
&milvuspb.ManualCompactionRequest{},
|
||||
}
|
||||
|
||||
md := metadata.Pairs(util.HeaderDBName, "db")
|
||||
|
@ -117,7 +118,6 @@ func TestDatabaseInterceptor(t *testing.T) {
|
|||
&milvuspb.CalcDistanceRequest{},
|
||||
&milvuspb.FlushAllRequest{},
|
||||
&milvuspb.GetCompactionStateRequest{},
|
||||
&milvuspb.ManualCompactionRequest{},
|
||||
&milvuspb.GetCompactionPlansRequest{},
|
||||
&milvuspb.GetFlushAllStateRequest{},
|
||||
&milvuspb.GetImportStateRequest{},
|
||||
|
|
|
@ -4620,6 +4620,7 @@ func (node *Proxy) ManualCompaction(ctx context.Context, req *milvuspb.ManualCom
|
|||
defer sp.End()
|
||||
|
||||
log := log.Ctx(ctx).With(
|
||||
zap.String("collectionName", req.GetCollectionName()),
|
||||
zap.Int64("collectionID", req.GetCollectionID()))
|
||||
|
||||
log.Info("received ManualCompaction request")
|
||||
|
@ -4629,6 +4630,16 @@ func (node *Proxy) ManualCompaction(ctx context.Context, req *milvuspb.ManualCom
|
|||
return resp, nil
|
||||
}
|
||||
|
||||
// before v2.4.18, manual compact request only pass collectionID, should correct sdk's behavior to pass collectionName
|
||||
if req.GetCollectionName() != "" {
|
||||
var err error
|
||||
req.CollectionID, err = globalMetaCache.GetCollectionID(ctx, req.GetDbName(), req.GetCollectionName())
|
||||
if err != nil {
|
||||
resp.Status = merr.Status(err)
|
||||
return resp, nil
|
||||
}
|
||||
}
|
||||
|
||||
resp, err := node.dataCoord.ManualCompaction(ctx, req)
|
||||
log.Info("received ManualCompaction response",
|
||||
zap.Any("resp", resp),
|
||||
|
|
Loading…
Reference in New Issue