Rename things to make it clearer
This commit is contained in:
42
server/modules/filter/cache/lrustorage.cc
vendored
42
server/modules/filter/cache/lrustorage.cc
vendored
@ -75,8 +75,8 @@ cache_result_t LRUStorage::do_get_value(const CACHE_KEY& key,
|
|||||||
uint32_t flags,
|
uint32_t flags,
|
||||||
GWBUF** ppvalue) const
|
GWBUF** ppvalue) const
|
||||||
{
|
{
|
||||||
NodesPerKey::iterator i = nodes_per_key_.find(key);
|
NodesByKey::iterator i = nodes_by_key_.find(key);
|
||||||
bool existed = (i != nodes_per_key_.end());
|
bool existed = (i != nodes_by_key_.end());
|
||||||
|
|
||||||
cache_result_t result = pstorage_->get_value(key, flags, ppvalue);
|
cache_result_t result = pstorage_->get_value(key, flags, ppvalue);
|
||||||
|
|
||||||
@ -118,8 +118,8 @@ cache_result_t LRUStorage::do_put_value(const CACHE_KEY& key, const GWBUF* pvalu
|
|||||||
|
|
||||||
Node* pnode = NULL;
|
Node* pnode = NULL;
|
||||||
|
|
||||||
NodesPerKey::iterator i = nodes_per_key_.find(key);
|
NodesByKey::iterator i = nodes_by_key_.find(key);
|
||||||
bool existed = (i != nodes_per_key_.end());
|
bool existed = (i != nodes_by_key_.end());
|
||||||
|
|
||||||
if (existed)
|
if (existed)
|
||||||
{
|
{
|
||||||
@ -135,12 +135,12 @@ cache_result_t LRUStorage::do_put_value(const CACHE_KEY& key, const GWBUF* pvalu
|
|||||||
MXS_NOTICE("New size %lu > max size %lu. Removing least recently used.",
|
MXS_NOTICE("New size %lu > max size %lu. Removing least recently used.",
|
||||||
new_size, max_size_);
|
new_size, max_size_);
|
||||||
|
|
||||||
pnode = free_lru(value_size);
|
pnode = vacate_lru(value_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ss_dassert(stats_.items == max_count_);
|
ss_dassert(stats_.items == max_count_);
|
||||||
pnode = free_lru();
|
pnode = vacate_lru();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -152,8 +152,8 @@ cache_result_t LRUStorage::do_put_value(const CACHE_KEY& key, const GWBUF* pvalu
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
std::pair<NodesPerKey::iterator, bool>
|
std::pair<NodesByKey::iterator, bool>
|
||||||
rv = nodes_per_key_.insert(std::make_pair(key, pnode));
|
rv = nodes_by_key_.insert(std::make_pair(key, pnode));
|
||||||
ss_dassert(rv.second);
|
ss_dassert(rv.second);
|
||||||
|
|
||||||
i = rv.first;
|
i = rv.first;
|
||||||
@ -201,8 +201,8 @@ cache_result_t LRUStorage::do_put_value(const CACHE_KEY& key, const GWBUF* pvalu
|
|||||||
|
|
||||||
cache_result_t LRUStorage::do_del_value(const CACHE_KEY& key)
|
cache_result_t LRUStorage::do_del_value(const CACHE_KEY& key)
|
||||||
{
|
{
|
||||||
NodesPerKey::iterator i = nodes_per_key_.find(key);
|
NodesByKey::iterator i = nodes_by_key_.find(key);
|
||||||
bool existed = (i != nodes_per_key_.end());
|
bool existed = (i != nodes_by_key_.end());
|
||||||
|
|
||||||
cache_result_t result = pstorage_->del_value(key);
|
cache_result_t result = pstorage_->del_value(key);
|
||||||
|
|
||||||
@ -284,11 +284,12 @@ cache_result_t LRUStorage::do_get_items(uint64_t* pItems) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free the data associated with the least recently used node.
|
* Free the data associated with the least recently used node,
|
||||||
|
* but not the node itself.
|
||||||
*
|
*
|
||||||
* @return The node itself, for reuse.
|
* @return The node itself, for reuse.
|
||||||
*/
|
*/
|
||||||
LRUStorage::Node* LRUStorage::free_lru()
|
LRUStorage::Node* LRUStorage::vacate_lru()
|
||||||
{
|
{
|
||||||
ss_dassert(ptail_);
|
ss_dassert(ptail_);
|
||||||
|
|
||||||
@ -306,11 +307,12 @@ LRUStorage::Node* LRUStorage::free_lru()
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Free the data associated with sufficient number of least recently used nodes,
|
* Free the data associated with sufficient number of least recently used nodes,
|
||||||
* to make the required space available.
|
* to make the required space available. All nodes themselves, but the last node
|
||||||
|
* are also freed.
|
||||||
*
|
*
|
||||||
* @return The last node whose data was freed, for reuse.
|
* @return The last node whose data was freed, for reuse.
|
||||||
*/
|
*/
|
||||||
LRUStorage::Node* LRUStorage::free_lru(size_t needed_space)
|
LRUStorage::Node* LRUStorage::vacate_lru(size_t needed_space)
|
||||||
{
|
{
|
||||||
Node* pnode = NULL;
|
Node* pnode = NULL;
|
||||||
|
|
||||||
@ -361,9 +363,9 @@ bool LRUStorage::free_node_data(Node* pnode)
|
|||||||
const CACHE_KEY* pkey = pnode->key();
|
const CACHE_KEY* pkey = pnode->key();
|
||||||
ss_dassert(pkey);
|
ss_dassert(pkey);
|
||||||
|
|
||||||
NodesPerKey::iterator i = nodes_per_key_.find(*pkey);
|
NodesByKey::iterator i = nodes_by_key_.find(*pkey);
|
||||||
|
|
||||||
if (i == nodes_per_key_.end())
|
if (i == nodes_by_key_.end())
|
||||||
{
|
{
|
||||||
ss_dassert(!true);
|
ss_dassert(!true);
|
||||||
MXS_ERROR("Item in LRU list was not found in key mapping.");
|
MXS_ERROR("Item in LRU list was not found in key mapping.");
|
||||||
@ -377,9 +379,9 @@ bool LRUStorage::free_node_data(Node* pnode)
|
|||||||
ss_dassert(!true);
|
ss_dassert(!true);
|
||||||
MXS_ERROR("Item in LRU list was not found in storage.");
|
MXS_ERROR("Item in LRU list was not found in storage.");
|
||||||
case CACHE_RESULT_OK:
|
case CACHE_RESULT_OK:
|
||||||
if (i != nodes_per_key_.end())
|
if (i != nodes_by_key_.end())
|
||||||
{
|
{
|
||||||
nodes_per_key_.erase(i);
|
nodes_by_key_.erase(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
ss_dassert(stats_.size >= pnode->size());
|
ss_dassert(stats_.size >= pnode->size());
|
||||||
@ -419,10 +421,10 @@ void LRUStorage::free_node(Node* pnode) const
|
|||||||
*
|
*
|
||||||
* @param i The map iterator.
|
* @param i The map iterator.
|
||||||
*/
|
*/
|
||||||
void LRUStorage::free_node(NodesPerKey::iterator& i) const
|
void LRUStorage::free_node(NodesByKey::iterator& i) const
|
||||||
{
|
{
|
||||||
free_node(i->second); // A Node
|
free_node(i->second); // A Node
|
||||||
nodes_per_key_.erase(i);
|
nodes_by_key_.erase(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
24
server/modules/filter/cache/lrustorage.hh
vendored
24
server/modules/filter/cache/lrustorage.hh
vendored
@ -170,19 +170,19 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const CACHE_KEY* pkey_; /*< Points at the key stored in nodes_per_key_ below. */
|
const CACHE_KEY* pkey_; /*< Points at the key stored in nodes_by_key_ below. */
|
||||||
size_t size_; /*< The size of the data referred to by pkey_. */
|
size_t size_; /*< The size of the data referred to by pkey_. */
|
||||||
Node* pnext_; /*< The next node in the LRU list. */
|
Node* pnext_; /*< The next node in the LRU list. */
|
||||||
Node* pprev_; /*< The previous node in the LRU list. */
|
Node* pprev_; /*< The previous node in the LRU list. */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::tr1::unordered_map<CACHE_KEY, Node*> NodesPerKey;
|
typedef std::tr1::unordered_map<CACHE_KEY, Node*> NodesByKey;
|
||||||
|
|
||||||
Node* free_lru();
|
Node* vacate_lru();
|
||||||
Node* free_lru(size_t space);
|
Node* vacate_lru(size_t space);
|
||||||
bool free_node_data(Node* pnode);
|
bool free_node_data(Node* pnode);
|
||||||
void free_node(Node* pnode) const;
|
void free_node(Node* pnode) const;
|
||||||
void free_node(NodesPerKey::iterator& i) const;
|
void free_node(NodesByKey::iterator& i) const;
|
||||||
void remove_node(Node* pnode) const;
|
void remove_node(Node* pnode) const;
|
||||||
void move_to_head(Node* pnode) const;
|
void move_to_head(Node* pnode) const;
|
||||||
|
|
||||||
@ -210,11 +210,11 @@ private:
|
|||||||
uint64_t evictions; /*< How many times an item has been evicted from the cache. */
|
uint64_t evictions; /*< How many times an item has been evicted from the cache. */
|
||||||
};
|
};
|
||||||
|
|
||||||
Storage* pstorage_; /*< The actual storage. */
|
Storage* pstorage_; /*< The actual storage. */
|
||||||
uint64_t max_count_; /*< The maximum number of items in the LRU list, */
|
uint64_t max_count_; /*< The maximum number of items in the LRU list, */
|
||||||
uint64_t max_size_; /*< The maximum size of all cached items. */
|
uint64_t max_size_; /*< The maximum size of all cached items. */
|
||||||
mutable Stats stats_; /*< Cache statistics. */
|
mutable Stats stats_; /*< Cache statistics. */
|
||||||
mutable NodesPerKey nodes_per_key_; /*< Mapping from cache keys to corresponding Node. */
|
mutable NodesByKey nodes_by_key_; /*< Mapping from cache keys to corresponding Node. */
|
||||||
mutable Node* phead_; /*< The node at the LRU list. */
|
mutable Node* phead_; /*< The node at the LRU list. */
|
||||||
mutable Node* ptail_; /*< The node at bottom of the LRU list.*/
|
mutable Node* ptail_; /*< The node at bottom of the LRU list.*/
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user