Selaa lähdekoodia

[Fix] Fix learn error propagation

tags/3.8.1
Vsevolod Stakhov 5 kuukautta sitten
vanhempi
commit
c7c901ef4b
No account linked to committer's email address
1 muutettua tiedostoa jossa 20 lisäystä ja 4 poistoa
  1. 20
    4
      src/libstat/backends/redis_backend.cxx

+ 20
- 4
src/libstat/backends/redis_backend.cxx Näytä tiedosto

#include "libserver/mempool_vars_internal.h" #include "libserver/mempool_vars_internal.h"
#include "fmt/core.h" #include "fmt/core.h"


#include "libutil/cxx/error.hxx"

#include <string> #include <string>
#include <cstdint> #include <cstdint>
#include <vector> #include <vector>
int id; int id;
std::vector<std::pair<int, T>> *results = nullptr; std::vector<std::pair<int, T>> *results = nullptr;
bool need_redis_call = true; bool need_redis_call = true;
std::optional<rspamd::util::error> err;


using result_type = std::vector<std::pair<int, T>>; using result_type = std::vector<std::pair<int, T>>;


} }
else { else {
/* Error message is on index 3 */ /* Error message is on index 3 */
const auto *err_msg = lua_tostring(L, 3);
rt->err = rspamd::util::error(err_msg, 500);
msg_err_task("cannot classify task: %s", msg_err_task("cannot classify task: %s",
lua_tostring(L, 3));
err_msg);
} }


return 0; return 0;
rspamd_redis_finalize_process(struct rspamd_task *task, gpointer runtime, rspamd_redis_finalize_process(struct rspamd_task *task, gpointer runtime,
gpointer ctx) gpointer ctx)
{ {
return TRUE;
auto *rt = REDIS_RUNTIME(runtime);

return !rt->err.has_value();
} }




} }
else { else {
/* Error message is on index 3 */ /* Error message is on index 3 */
msg_err_task("cannot learn task: %s",
lua_tostring(L, 3));
const auto *err_msg = lua_tostring(L, 3);
rt->err = rspamd::util::error(err_msg, 500);
msg_err_task("cannot learn task: %s", err_msg);
} }


return 0; return 0;
rspamd_redis_finalize_learn(struct rspamd_task *task, gpointer runtime, rspamd_redis_finalize_learn(struct rspamd_task *task, gpointer runtime,
gpointer ctx, GError **err) gpointer ctx, GError **err)
{ {
auto *rt = REDIS_RUNTIME(runtime);

if (rt->err.has_value()) {
rt->err->into_g_error_set(rspamd_redis_stat_quark(), err);

return FALSE;
}

return TRUE; return TRUE;
} }



Loading…
Peruuta
Tallenna