Replies: 1 comment
|
30s sounds like a reasonable timeout for nearly every environment. The exceptionally low frequency of such reports and conditions like 'an HDD with an OS load average of 36" further reinforce this exact line of thinking. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
ra_log_meta's internalstore/deletecalls use a hardcoded 30s timeout with no way to override it, so on a sufficiently slow or momentarily-overloaded host, a node can fail to start entirely (rather than just start slowly) — even brand new, single-node, no prior data.Where
https://github.com/rabbitmq/ra/blob/v3.1.9/src/ra_log_meta.erl#L31-L34
Confirmed present, unchanged, in
ra3.1.9, which is what RabbitMQ 4.3.4 currently pins (rabbitmq-components.mk: dep_ra = hex 3.1.9) — so this isn't specific to an old release.What we hit
Via RabbitMQ (Khepri-enabled node,
rabbitmq:3.13-management-alpine, but the samera_log_metacode path), on a host under temporary memory/IO pressure (spinning-HDD-backed volume, load average ~36 on 4 cores):Once host load came back down, the exact same node started fine on the exact same (still slow) disk — the only thing that changed was whether the call landed inside or outside the fixed 30s window.
Ask
Make the
ra_log_metastore/delete timeout configurable (e.g. viara_systemconfig or an application env var), rather than a compile-time?TIMEOUTconstant. Related discussion, for a different (quorum-queue-recovery) scenario hitting the same constant: rabbitmq/rabbitmq-server#3745.All reactions