Sequential rotation was used just to rotate all upstreams in the loop (e.g. when you need to do some action for all upstreams). Allowing to specify it as a user defined algorithm was a mistake as it breaks upstreams API expectations. See #4043tags/3.2
@@ -1241,10 +1241,6 @@ rspamd_upstreams_parse_line_len (struct upstream_list *ups, | |||
ups->rot_alg = RSPAMD_UPSTREAM_HASHED; | |||
p += sizeof ("hash:") - 1; | |||
} | |||
else if (RSPAMD_LEN_CHECK_STARTS_WITH(p, len, "sequential:")) { | |||
ups->rot_alg = RSPAMD_UPSTREAM_SEQUENTIAL; | |||
p += sizeof ("sequential:") - 1; | |||
} | |||
while (p < end) { | |||
span_len = rspamd_memcspn (p, separators, end - p); |