You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2015/12/05 19:19:54 UTC
trafficserver git commit: TS-4050 - Fixes cache_promote crash when
buckets=0
Repository: trafficserver
Updated Branches:
refs/heads/master 74ecfefb0 -> e37d0b0d1
TS-4050 - Fixes cache_promote crash when buckets=0
This also sets buckets default value to be 10. This closes #361.
Leif: I fixed typos in the comments, changed the default bucket size to a
minimum bucket size, and decided it'd be better to change to a debug assert.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/e37d0b0d
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/e37d0b0d
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/e37d0b0d
Branch: refs/heads/master
Commit: e37d0b0d1a49326a727fb3f52db33f5218da1805
Parents: 74ecfef
Author: Meera Mosale Nataraja <me...@gmail.com>
Authored: Thu Dec 3 15:31:00 2015 -0800
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Sat Dec 5 11:18:21 2015 -0700
----------------------------------------------------------------------
plugins/experimental/cache_promote/cache_promote.cc | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e37d0b0d/plugins/experimental/cache_promote/cache_promote.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/cache_promote/cache_promote.cc b/plugins/experimental/cache_promote/cache_promote.cc
index dab961d..3cf9028 100644
--- a/plugins/experimental/cache_promote/cache_promote.cc
+++ b/plugins/experimental/cache_promote/cache_promote.cc
@@ -32,6 +32,7 @@
#include "ts/remap.h"
#include "ts/ink_config.h"
+#define MINIMUM_BUCKET_SIZE 10
static const char *PLUGIN_NAME = "cache_promote";
TSCont gNocacheCont;
@@ -209,6 +210,11 @@ public:
switch (opt) {
case 'b':
_buckets = static_cast<unsigned>(strtol(optarg, NULL, 10));
+ if (_buckets < MINIMUM_BUCKET_SIZE) {
+ TSError("%s: Enforcing minimum LRU bucket size of %d", PLUGIN_NAME, MINIMUM_BUCKET_SIZE);
+ TSDebug(PLUGIN_NAME, "Enforcing minimum bucket size of %d", MINIMUM_BUCKET_SIZE);
+ _buckets = MINIMUM_BUCKET_SIZE;
+ }
break;
case 'h':
_hits = static_cast<unsigned>(strtol(optarg, NULL, 10));
@@ -249,6 +255,7 @@ public:
map_it = _map.find(&hash);
if (_map.end() != map_it) {
// We have an entry in the LRU
+ TSAssert(_list.size() > 0); // mismatch in the LRUs hash and list, shouldn't happen
if (++(map_it->second->second) >= _hits) {
// Promoted! Cleanup the LRU, and signal success. Save the promoted entry on the freelist.
TSDebug(PLUGIN_NAME, "saving the LRUEntry to the freelist");