Browse Source

[Minor] Try to fix stats for the virtual symbols

tags/3.3
Vsevolod Stakhov 1 year ago
parent
commit
08516775de
No account linked to committer's email address

+ 4
- 2
src/libmime/scan_result.c View File

@@ -586,7 +586,8 @@ rspamd_task_insert_result_full (struct rspamd_task *task,
/* Process cache item */
if (symbol_result && task->cfg->cache && symbol_result->sym && symbol_result->nshots == 1) {
rspamd_symcache_inc_frequency (task->cfg->cache,
symbol_result->sym->cache_item);
symbol_result->sym->cache_item,
symbol_result->sym->name);
}
}
else if (new_symbol) {
@@ -610,7 +611,8 @@ rspamd_task_insert_result_full (struct rspamd_task *task,
/* Process cache item */
if (symbol_result && task->cfg->cache && symbol_result->sym && symbol_result->nshots == 1) {
rspamd_symcache_inc_frequency (task->cfg->cache,
symbol_result->sym->cache_item);
symbol_result->sym->cache_item,
symbol_result->sym->name);
}
}
}

+ 2
- 1
src/libserver/rspamd_symcache.h View File

@@ -231,7 +231,8 @@ void* rspamd_symcache_start_refresh (struct rspamd_symcache *cache,
* @param symbol
*/
void rspamd_symcache_inc_frequency (struct rspamd_symcache *_cache,
struct rspamd_symcache_item *item);
struct rspamd_symcache_item *item,
const gchar *sym_name);

/**
* Add delayed dependency that is resolved on cache post-load routine

+ 3
- 2
src/libserver/symcache/symcache_c.cxx View File

@@ -214,12 +214,13 @@ rspamd_symcache_start_refresh(struct rspamd_symcache *cache,
}

void
rspamd_symcache_inc_frequency(struct rspamd_symcache *_cache, struct rspamd_symcache_item *item)
rspamd_symcache_inc_frequency(struct rspamd_symcache *_cache, struct rspamd_symcache_item *item,
const char *sym_name)
{
auto *real_item = C_API_SYMCACHE_ITEM(item);

if (real_item) {
real_item->inc_frequency();
real_item->inc_frequency(sym_name);
}
}


+ 10
- 1
src/libserver/symcache/symcache_item.hxx View File

@@ -343,8 +343,17 @@ public:
/**
* Increase frequency for a symbol
*/
auto inc_frequency() -> void {
auto inc_frequency(const char *sym_name) -> void {
g_atomic_int_inc(&st->hits);

if (sym_name && symbol != sym_name && !is_virtual()) {
/* Likely a callback symbol with some virtual symbol that needs to be adjusted */
for (const auto &cld : get_children().value().get()) {
if (cld->get_name() == sym_name) {
cld->inc_frequency(sym_name);
}
}
}
}

/**

Loading…
Cancel
Save