Browse Source

[Minor] Minor debugging improvements

tags/3.3
Vsevolod Stakhov 1 year ago
parent
commit
58ce8ea685
No account linked to committer's email address
2 changed files with 19 additions and 10 deletions
  1. 18
    10
      src/libserver/symcache/symcache_impl.cxx
  2. 1
    0
      src/plugins/lua/url_redirector.lua

+ 18
- 10
src/libserver/symcache/symcache_impl.cxx View File

@@ -1221,13 +1221,14 @@ auto symcache::get_max_timeout(std::vector<std::pair<double, const cache_item *>
const cache_item *max_elt = nullptr;
for (const auto &it : vec) {
if (it->priority != saved_priority && max_elt != nullptr && max_timeout > 0) {
accumulated_timeout += max_timeout;
added_timeout += max_timeout;
msg_debug_cache_lambda("added %.2f to the timeout (%.2f) as the priority has changed (%d -> %d);"
"symbol: %s",
max_timeout, accumulated_timeout, saved_priority, it->priority,
it->symbol.c_str());
if (!seen_items.contains(max_elt)) {
accumulated_timeout += max_timeout;
added_timeout += max_timeout;

msg_debug_cache_lambda("added %.2f to the timeout (%.2f) as the priority has changed (%d -> %d); "
"symbol: %s",
max_timeout, accumulated_timeout, saved_priority, it->priority,
max_elt->symbol.c_str());
elts.emplace_back(max_timeout, max_elt);
seen_items.insert(max_elt);
}
@@ -1245,9 +1246,14 @@ auto symcache::get_max_timeout(std::vector<std::pair<double, const cache_item *>
}

if (max_elt != nullptr && max_timeout > 0) {
accumulated_timeout += max_timeout;
added_timeout += max_timeout;
if (!seen_items.contains(max_elt)) {
accumulated_timeout += max_timeout;
added_timeout += max_timeout;

msg_debug_cache_lambda("added %.2f to the timeout (%.2f) end of processing; "
"symbol: %s",
max_timeout, accumulated_timeout,
max_elt->symbol.c_str());
elts.emplace_back(max_timeout, max_elt);
seen_items.insert(max_elt);
}
@@ -1257,8 +1263,6 @@ auto symcache::get_max_timeout(std::vector<std::pair<double, const cache_item *>
};

auto prefilters_timeout = pre_postfilter_iter(this->prefilters);
auto postfilters_timeout = pre_postfilter_iter(this->postfilters);
auto idempotent_timeout = pre_postfilter_iter(this->idempotent);

/* For normal filters, we check the maximum chain of the dependencies
* This function might have O(N^2) complexity if all symbols are in a single
@@ -1278,6 +1282,10 @@ auto symcache::get_max_timeout(std::vector<std::pair<double, const cache_item *>
}

accumulated_timeout += max_filters_timeout;

auto postfilters_timeout = pre_postfilter_iter(this->postfilters);
auto idempotent_timeout = pre_postfilter_iter(this->idempotent);

/* Sort in decreasing order by timeout */
std::stable_sort(std::begin(elts), std::end(elts),
[](const auto &p1, const auto &p2) {

+ 1
- 0
src/plugins/lua/url_redirector.lua View File

@@ -356,6 +356,7 @@ if opts then
local id = rspamd_config:register_symbol{
name = 'URL_REDIRECTOR_CHECK',
type = 'callback,prefilter',
priority = lua_util.symbols_priorities.medium,
callback = url_redirector_handler,
-- In fact, the real timeout is nested_limit * timeout...
augmentations = {string.format("timeout=%f", settings.timeout)}

Loading…
Cancel
Save