You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by cm...@apache.org on 2025/07/28 21:36:59 UTC
(trafficserver) 01/02: cache_promote: Bugfix, don't repurpose policies without labels (#12374)
This is an automated email from the ASF dual-hosted git repository.
cmcfarlen pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 76a360cef2eec9abe9c07834bc1273d7d6f57d55
Author: Leif Hedstrom <zw...@apache.org>
AuthorDate: Wed Jul 23 09:19:55 2025 +0200
cache_promote: Bugfix, don't repurpose policies without labels (#12374)
(cherry picked from commit bcc3d6ca6b66b0c86fa52c8b6dba002f006b53c7)
---
plugins/cache_promote/cache_promote.cc | 4 ++--
plugins/cache_promote/configs.cc | 2 +-
plugins/cache_promote/lru_policy.h | 6 +++++-
plugins/cache_promote/policy.h | 15 +++++++--------
4 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/plugins/cache_promote/cache_promote.cc b/plugins/cache_promote/cache_promote.cc
index 37daceefa3..21cba7cadc 100644
--- a/plugins/cache_promote/cache_promote.cc
+++ b/plugins/cache_promote/cache_promote.cc
@@ -77,13 +77,13 @@ cont_handle_policy(TSCont contp, TSEvent event, void *edata)
// Do nothing, just let it handle the lookup.
DBG("cache-status is %d (hit), nothing to do", obj_status);
- if (config->getPolicy()->_stats_enabled) {
+ if (!config->getPolicy()->_stats_id.empty()) {
TSStatIntIncrement(config->getPolicy()->_cache_hits_id, 1);
}
break;
}
}
- if (config->getPolicy()->_stats_enabled) {
+ if (!config->getPolicy()->_stats_id.empty()) {
TSStatIntIncrement(config->getPolicy()->_total_requests_id, 1);
}
} else {
diff --git a/plugins/cache_promote/configs.cc b/plugins/cache_promote/configs.cc
index 471f467835..58907125c3 100644
--- a/plugins/cache_promote/configs.cc
+++ b/plugins/cache_promote/configs.cc
@@ -74,7 +74,7 @@ PromotionConfig::factory(int argc, char *argv[])
return false;
} else {
if (_policy && _policy->stats_add(optarg)) {
- _policy->_stats_enabled = true;
+ _policy->_stats_id = optarg;
DBG("stats collection is enabled");
}
}
diff --git a/plugins/cache_promote/lru_policy.h b/plugins/cache_promote/lru_policy.h
index c64ca31ee2..8632a7827a 100644
--- a/plugins/cache_promote/lru_policy.h
+++ b/plugins/cache_promote/lru_policy.h
@@ -120,8 +120,12 @@ public:
const std::string
id() const override
{
+ if (_label.empty()) {
+ return ""; // This will prevent the policy factory from coalescing this policy
+ }
+
return _label + ";LRU=b:" + std::to_string(_buckets) + ",h:" + std::to_string(_hits) + ",B:" + std::to_string(_bytes) +
- ",i:" + std::to_string(_internal_enabled);
+ ",i:" + std::to_string(_internal_enabled) + ",e:" + _stats_id;
}
void
diff --git a/plugins/cache_promote/policy.h b/plugins/cache_promote/policy.h
index b0cbfef15f..95fa1de752 100644
--- a/plugins/cache_promote/policy.h
+++ b/plugins/cache_promote/policy.h
@@ -63,7 +63,7 @@ public:
void
decrementStat(const int stat, const int amount)
{
- if (_stats_enabled) {
+ if (!_stats_id.empty()) {
TSStatIntDecrement(stat, amount);
}
}
@@ -71,7 +71,7 @@ public:
void
incrementStat(const int stat, const int amount)
{
- if (_stats_enabled) {
+ if (!_stats_id.empty()) {
TSStatIntIncrement(stat, amount);
}
}
@@ -127,12 +127,11 @@ public:
virtual void usage() const = 0;
virtual bool stats_add(const char *remap_id) = 0;
- // when true stats are incremented.
- bool _stats_enabled = false;
- bool _internal_enabled = false;
- int _cache_hits_id = -1;
- int _promoted_id = -1;
- int _total_requests_id = -1;
+ bool _internal_enabled = false;
+ int _cache_hits_id = -1;
+ int _promoted_id = -1;
+ int _total_requests_id = -1;
+ std::string _stats_id = "";
private:
float _sample = 0.0;