fix: Release compaction task lock when return function (#38856)

issue: #38851

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
pull/38865/head
cai.zhang 2024-12-30 22:44:49 +08:00 committed by GitHub
parent 43a50d71bd
commit af0315f190
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 6 deletions

View File

@ -212,12 +212,6 @@ func (c *compactionPlanHandler) schedule() []CompactionTask {
slots map[int64]int64
)
c.executingGuard.Lock()
if len(c.executingTasks) >= parallelism {
return selected
}
c.executingGuard.Unlock()
l0ChannelExcludes := typeutil.NewSet[string]()
mixChannelExcludes := typeutil.NewSet[string]()
clusterChannelExcludes := typeutil.NewSet[string]()
@ -225,6 +219,11 @@ func (c *compactionPlanHandler) schedule() []CompactionTask {
clusterLabelExcludes := typeutil.NewSet[string]()
c.executingGuard.RLock()
if len(c.executingTasks) >= parallelism {
c.executingGuard.RUnlock()
return selected
}
for _, t := range c.executingTasks {
switch t.GetTaskProto().GetType() {
case datapb.CompactionType_Level0DeleteCompaction: