xiaokang commented on code in PR #29537:
URL: https://github.com/apache/doris/pull/29537#discussion_r1443600889


##########
be/src/olap/options.cpp:
##########
@@ -235,7 +238,38 @@ Status parse_conf_cache_paths(const std::string& 
config_path, std::vector<CacheP
             return Status::InvalidArgument(
                     "total_size or query_limit should not less than or equal 
to zero");
         }
-        paths.emplace_back(std::move(path), total_size, query_limit_bytes);
+
+        // percent
+        auto get_percent_value = [&](const std::string& key, size_t& percent) {
+            auto& value = map.FindMember(key.c_str())->value;
+            if (value.IsUint()) {
+                percent = value.GetUint();
+            } else {
+                return Status::InvalidArgument("percent should be uint");
+            }
+            return Status::OK();
+        };
+
+        size_t normal_percent = 85;
+        size_t disposable_percent = 10;
+        size_t index_percent = 5;
+        bool has_normal_percent = map.HasMember(CACHE_NORMAL_PERCENT.c_str());
+        bool has_disposable_percent = 
map.HasMember(CACHE_DISPOSABLE_PERCENT.c_str());
+        bool has_index_percent = map.HasMember(CACHE_INDEX_PERCENT.c_str());
+        if (has_normal_percent && has_disposable_percent && has_index_percent) 
{
+            RETURN_IF_ERROR(get_percent_value(CACHE_NORMAL_PERCENT, 
normal_percent));
+            RETURN_IF_ERROR(get_percent_value(CACHE_DISPOSABLE_PERCENT, 
disposable_percent));
+            RETURN_IF_ERROR(get_percent_value(CACHE_INDEX_PERCENT, 
index_percent));
+        } else if (has_normal_percent || has_disposable_percent || 
has_index_percent) {
+            return Status::InvalidArgument(
+                    "percent configurations must either be all set or all 
unset.");
+        }
+        if ((normal_percent + disposable_percent + index_percent) != 100) {
+            return Status::InvalidArgument("the sum is not equal to 100.");

Review Comment:
   sum of cache percent config



##########
be/src/olap/options.cpp:
##########
@@ -235,7 +238,38 @@ Status parse_conf_cache_paths(const std::string& 
config_path, std::vector<CacheP
             return Status::InvalidArgument(
                     "total_size or query_limit should not less than or equal 
to zero");
         }
-        paths.emplace_back(std::move(path), total_size, query_limit_bytes);
+
+        // percent
+        auto get_percent_value = [&](const std::string& key, size_t& percent) {
+            auto& value = map.FindMember(key.c_str())->value;
+            if (value.IsUint()) {
+                percent = value.GetUint();
+            } else {
+                return Status::InvalidArgument("percent should be uint");
+            }
+            return Status::OK();
+        };
+
+        size_t normal_percent = 85;
+        size_t disposable_percent = 10;
+        size_t index_percent = 5;
+        bool has_normal_percent = map.HasMember(CACHE_NORMAL_PERCENT.c_str());
+        bool has_disposable_percent = 
map.HasMember(CACHE_DISPOSABLE_PERCENT.c_str());
+        bool has_index_percent = map.HasMember(CACHE_INDEX_PERCENT.c_str());
+        if (has_normal_percent && has_disposable_percent && has_index_percent) 
{
+            RETURN_IF_ERROR(get_percent_value(CACHE_NORMAL_PERCENT, 
normal_percent));
+            RETURN_IF_ERROR(get_percent_value(CACHE_DISPOSABLE_PERCENT, 
disposable_percent));
+            RETURN_IF_ERROR(get_percent_value(CACHE_INDEX_PERCENT, 
index_percent));
+        } else if (has_normal_percent || has_disposable_percent || 
has_index_percent) {
+            return Status::InvalidArgument(
+                    "percent configurations must either be all set or all 
unset.");

Review Comment:
   cache percent config



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to