enable collection rate limit when only global limit set (#24452)

Signed-off-by: Wei Liu <wei.liu@zilliz.com>
pull/24559/head
wei liu 2023-05-31 16:47:29 +08:00 committed by GitHub
parent 19164ea753
commit 71f2012488
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 7 deletions

View File

@ -344,7 +344,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
}
// [0, inf)
if rate < 0 {
return max
return p.DMLMaxInsertRate.GetValue()
}
return fmt.Sprintf("%f", rate)
},
@ -432,7 +432,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
}
// [0, inf)
if rate < 0 {
return max
return p.DMLMaxDeleteRate.GetValue()
}
return fmt.Sprintf("%f", rate)
},
@ -520,7 +520,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
}
// [0, inf)
if rate < 0 {
return max
return p.DMLMaxBulkLoadRate.GetValue()
}
return fmt.Sprintf("%f", rate)
},
@ -612,7 +612,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
}
// [0, inf)
if getAsFloat(v) < 0 {
return max
return p.DQLMaxSearchRate.GetValue()
}
return v
},
@ -692,7 +692,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
}
// [0, inf)
if getAsFloat(v) < 0 {
return max
return p.DQLMaxQueryRate.GetValue()
}
return v
},
@ -950,7 +950,7 @@ When memory usage < memoryLowWaterLevel, no action.`,
level := getAsFloat(v)
// (0, +inf)
if level <= 0 {
level = getAsFloat(quota)
return max
}
// megabytes to bytes
return fmt.Sprintf("%f", megaBytes2Bytes(level))
@ -971,7 +971,7 @@ When memory usage < memoryLowWaterLevel, no action.`,
level := getAsFloat(v)
// (0, +inf)
if level <= 0 {
level = getAsFloat(quota)
return p.DiskQuota.GetValue()
}
// megabytes to bytes
return fmt.Sprintf("%f", megaBytes2Bytes(level))

View File

@ -81,6 +81,34 @@ func TestQuotaParam(t *testing.T) {
assert.Equal(t, float64(1)*1024*1024, params.QuotaConfig.DMLMinDeleteRatePerCollection.GetAsFloat())
assert.Equal(t, float64(10)*1024*1024, params.QuotaConfig.DMLMaxBulkLoadRatePerCollection.GetAsFloat())
assert.Equal(t, float64(1)*1024*1024, params.QuotaConfig.DMLMinBulkLoadRatePerCollection.GetAsFloat())
// test only set global rate limit
params.Save(params.QuotaConfig.DMLMaxInsertRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DMLMinInsertRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DMLMaxDeleteRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DMLMinDeleteRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DMLMaxBulkLoadRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DMLMinBulkLoadRatePerCollection.Key, "-1")
assert.Equal(t, params.QuotaConfig.DMLMaxInsertRate.GetAsFloat(), params.QuotaConfig.DMLMaxInsertRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DMLMinInsertRatePerCollection.GetAsFloat())
assert.Equal(t, params.QuotaConfig.DMLMaxDeleteRate.GetAsFloat(), params.QuotaConfig.DMLMaxDeleteRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DMLMinDeleteRatePerCollection.GetAsFloat())
assert.Equal(t, params.QuotaConfig.DMLMaxBulkLoadRate.GetAsFloat(), params.QuotaConfig.DMLMaxBulkLoadRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DMLMinBulkLoadRatePerCollection.GetAsFloat())
// test invalid config value
params.Save(params.QuotaConfig.DMLMaxInsertRatePerCollection.Key, "1")
params.Save(params.QuotaConfig.DMLMinInsertRatePerCollection.Key, "5")
params.Save(params.QuotaConfig.DMLMaxDeleteRatePerCollection.Key, "1")
params.Save(params.QuotaConfig.DMLMinDeleteRatePerCollection.Key, "5")
params.Save(params.QuotaConfig.DMLMaxBulkLoadRatePerCollection.Key, "1")
params.Save(params.QuotaConfig.DMLMinBulkLoadRatePerCollection.Key, "5")
assert.Equal(t, float64(1*1024*1024), params.QuotaConfig.DMLMaxInsertRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DMLMinInsertRatePerCollection.GetAsFloat())
assert.Equal(t, float64(1*1024*1024), params.QuotaConfig.DMLMaxDeleteRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DMLMinDeleteRatePerCollection.GetAsFloat())
assert.Equal(t, float64(1*1024*1024), params.QuotaConfig.DMLMaxBulkLoadRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DMLMinBulkLoadRatePerCollection.GetAsFloat())
})
t.Run("test dql", func(t *testing.T) {
@ -107,6 +135,26 @@ func TestQuotaParam(t *testing.T) {
assert.Equal(t, float64(1), params.QuotaConfig.DQLMinSearchRatePerCollection.GetAsFloat())
assert.Equal(t, float64(10), params.QuotaConfig.DQLMaxQueryRatePerCollection.GetAsFloat())
assert.Equal(t, float64(1), params.QuotaConfig.DQLMinQueryRatePerCollection.GetAsFloat())
// test only config global value
params.Save(params.QuotaConfig.DQLMaxSearchRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DQLMinSearchRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DQLMaxQueryRatePerCollection.Key, "-1")
params.Save(params.QuotaConfig.DQLMinQueryRatePerCollection.Key, "-1")
assert.Equal(t, params.QuotaConfig.DQLMaxSearchRate.GetAsFloat(), params.QuotaConfig.DQLMaxSearchRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DQLMinSearchRatePerCollection.GetAsFloat())
assert.Equal(t, params.QuotaConfig.DQLMaxQueryRate.GetAsFloat(), params.QuotaConfig.DQLMaxQueryRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DQLMinQueryRatePerCollection.GetAsFloat())
// test invalid config
params.Save(params.QuotaConfig.DQLMaxSearchRatePerCollection.Key, "1")
params.Save(params.QuotaConfig.DQLMinSearchRatePerCollection.Key, "5")
params.Save(params.QuotaConfig.DQLMaxQueryRatePerCollection.Key, "1")
params.Save(params.QuotaConfig.DQLMinQueryRatePerCollection.Key, "5")
assert.Equal(t, float64(1), params.QuotaConfig.DQLMaxSearchRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DQLMinSearchRatePerCollection.GetAsFloat())
assert.Equal(t, float64(1), params.QuotaConfig.DQLMaxQueryRatePerCollection.GetAsFloat())
assert.Equal(t, float64(0), params.QuotaConfig.DQLMinQueryRatePerCollection.GetAsFloat())
})
t.Run("test limits", func(t *testing.T) {
@ -139,4 +187,14 @@ func TestQuotaParam(t *testing.T) {
assert.Equal(t, defaultMax, qc.MaxReadResultRate.GetAsFloat())
assert.Equal(t, 0.9, qc.CoolOffSpeed.GetAsFloat())
})
t.Run("test disk quota", func(t *testing.T) {
assert.Equal(t, defaultMax, qc.DiskQuota.GetAsFloat())
assert.Equal(t, defaultMax, qc.DiskQuotaPerCollection.GetAsFloat())
// test invalid config
params.Save(params.QuotaConfig.DiskQuotaPerCollection.Key, "-1")
assert.Equal(t, qc.DiskQuota.GetAsFloat(), qc.DiskQuotaPerCollection.GetAsFloat())
})
}