char outbuf[8192];
lua_logger_out(L, -2, outbuf, sizeof(outbuf),
- LUA_ESCAPE_UNPRINTABLE);
+ LUA_ESCAPE_UNPRINTABLE);
msg_err("cannot get %s upstreams for Redis fuzzy storage %s; table content: %s",
what, ctx->id, outbuf);
NULL,
0);
+ if (up == NULL) {
+ rspamd_fuzzy_redis_session_dtor(session, TRUE);
+ if (cb) {
+ memset(&rep, 0, sizeof(rep));
+ cb(&rep, ud);
+ }
+ return;
+ }
+
session->up = rspamd_upstream_ref(up);
addr = rspamd_upstream_addr_next(up);
g_assert(addr != NULL);
NULL,
0);
+ if (up == NULL) {
+ rspamd_fuzzy_redis_session_dtor(session, TRUE);
+ if (cb) {
+ cb(0, ud);
+ }
+ return;
+ }
+
session->up = rspamd_upstream_ref(up);
addr = rspamd_upstream_addr_next(up);
g_assert(addr != NULL);
NULL,
0);
+ if (up == NULL) {
+ rspamd_fuzzy_redis_session_dtor(session, TRUE);
+ if (cb) {
+ cb(0, ud);
+ }
+ return;
+ }
+
session->up = rspamd_upstream_ref(up);
addr = rspamd_upstream_addr_next(up);
g_assert(addr != NULL);
NULL,
0);
+ if (up == NULL) {
+ rspamd_fuzzy_redis_session_dtor(session, TRUE);
+ if (cb) {
+ cb(FALSE, 0, 0, 0, 0, ud);
+ }
+ return;
+ }
+
session->up = rspamd_upstream_ref(up);
addr = rspamd_upstream_addr_next(up);
g_assert(addr != NULL);
RSPAMD_UPSTREAM_LOCK(ups);
if (ups->alive->len == 0) {
- /* We have no upstreams alive */
- msg_warn("there are no alive upstreams left for %s, revive all of them",
- ups->ups_line);
- g_ptr_array_foreach(ups->ups, rspamd_upstream_restore_cb, ups);
+ /* No alive upstreams; do not force-revive to avoid tight retry loops */
+ RSPAMD_UPSTREAM_UNLOCK(ups);
+ return NULL;
}
RSPAMD_UPSTREAM_UNLOCK(ups);