未验证 提交 71f20124 编写于 作者: W wei liu 提交者: GitHub

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

Signed-off-by: NWei Liu <wei.liu@zilliz.com>
上级 19164ea7
...@@ -344,7 +344,7 @@ The maximum rate will not be greater than ` + "max" + `.`, ...@@ -344,7 +344,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
} }
// [0, inf) // [0, inf)
if rate < 0 { if rate < 0 {
return max return p.DMLMaxInsertRate.GetValue()
} }
return fmt.Sprintf("%f", rate) return fmt.Sprintf("%f", rate)
}, },
...@@ -432,7 +432,7 @@ The maximum rate will not be greater than ` + "max" + `.`, ...@@ -432,7 +432,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
} }
// [0, inf) // [0, inf)
if rate < 0 { if rate < 0 {
return max return p.DMLMaxDeleteRate.GetValue()
} }
return fmt.Sprintf("%f", rate) return fmt.Sprintf("%f", rate)
}, },
...@@ -520,7 +520,7 @@ The maximum rate will not be greater than ` + "max" + `.`, ...@@ -520,7 +520,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
} }
// [0, inf) // [0, inf)
if rate < 0 { if rate < 0 {
return max return p.DMLMaxBulkLoadRate.GetValue()
} }
return fmt.Sprintf("%f", rate) return fmt.Sprintf("%f", rate)
}, },
...@@ -612,7 +612,7 @@ The maximum rate will not be greater than ` + "max" + `.`, ...@@ -612,7 +612,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
} }
// [0, inf) // [0, inf)
if getAsFloat(v) < 0 { if getAsFloat(v) < 0 {
return max return p.DQLMaxSearchRate.GetValue()
} }
return v return v
}, },
...@@ -692,7 +692,7 @@ The maximum rate will not be greater than ` + "max" + `.`, ...@@ -692,7 +692,7 @@ The maximum rate will not be greater than ` + "max" + `.`,
} }
// [0, inf) // [0, inf)
if getAsFloat(v) < 0 { if getAsFloat(v) < 0 {
return max return p.DQLMaxQueryRate.GetValue()
} }
return v return v
}, },
...@@ -950,7 +950,7 @@ When memory usage < memoryLowWaterLevel, no action.`, ...@@ -950,7 +950,7 @@ When memory usage < memoryLowWaterLevel, no action.`,
level := getAsFloat(v) level := getAsFloat(v)
// (0, +inf) // (0, +inf)
if level <= 0 { if level <= 0 {
level = getAsFloat(quota) return max
} }
// megabytes to bytes // megabytes to bytes
return fmt.Sprintf("%f", megaBytes2Bytes(level)) return fmt.Sprintf("%f", megaBytes2Bytes(level))
...@@ -971,7 +971,7 @@ When memory usage < memoryLowWaterLevel, no action.`, ...@@ -971,7 +971,7 @@ When memory usage < memoryLowWaterLevel, no action.`,
level := getAsFloat(v) level := getAsFloat(v)
// (0, +inf) // (0, +inf)
if level <= 0 { if level <= 0 {
level = getAsFloat(quota) return p.DiskQuota.GetValue()
} }
// megabytes to bytes // megabytes to bytes
return fmt.Sprintf("%f", megaBytes2Bytes(level)) return fmt.Sprintf("%f", megaBytes2Bytes(level))
......
...@@ -81,6 +81,34 @@ func TestQuotaParam(t *testing.T) { ...@@ -81,6 +81,34 @@ func TestQuotaParam(t *testing.T) {
assert.Equal(t, float64(1)*1024*1024, params.QuotaConfig.DMLMinDeleteRatePerCollection.GetAsFloat()) 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(10)*1024*1024, params.QuotaConfig.DMLMaxBulkLoadRatePerCollection.GetAsFloat())
assert.Equal(t, float64(1)*1024*1024, params.QuotaConfig.DMLMinBulkLoadRatePerCollection.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) { t.Run("test dql", func(t *testing.T) {
...@@ -107,6 +135,26 @@ func TestQuotaParam(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(1), params.QuotaConfig.DQLMinSearchRatePerCollection.GetAsFloat())
assert.Equal(t, float64(10), params.QuotaConfig.DQLMaxQueryRatePerCollection.GetAsFloat()) assert.Equal(t, float64(10), params.QuotaConfig.DQLMaxQueryRatePerCollection.GetAsFloat())
assert.Equal(t, float64(1), params.QuotaConfig.DQLMinQueryRatePerCollection.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) { t.Run("test limits", func(t *testing.T) {
...@@ -139,4 +187,14 @@ func TestQuotaParam(t *testing.T) { ...@@ -139,4 +187,14 @@ func TestQuotaParam(t *testing.T) {
assert.Equal(t, defaultMax, qc.MaxReadResultRate.GetAsFloat()) assert.Equal(t, defaultMax, qc.MaxReadResultRate.GetAsFloat())
assert.Equal(t, 0.9, qc.CoolOffSpeed.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())
})
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册