dendrite/setup/jetstream
Neil 117ed66037
Update NATS to 2.10.20, use SyncAlways (#3418)
The internal NATS instance is definitely convenient but it does have one
problem: its lifecycle is tied to the Dendrite process. That means if
Dendrite panics or OOMs, it takes out NATS with it. I suspect this is
sometimes contributing to what people see with stuck streams, as some
operations or state might not be written to disk fully before it gets
interrupted.

Using `SyncAlways` means that NATS will effectively use `O_SYNC` and
block writes on flushes, which should improve resiliency against this
kind of failure considerably. It might affect performance a little but
shouldn't be significant.

Also updates NATS to 2.10.20 as there have been all sorts of fixes since
2.10.7, including better `SyncAlways` handling.

Signed-off-by: Neil Alexander <git@neilalexander.dev>

---------

Signed-off-by: Neil Alexander <git@neilalexander.dev>
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2024-09-10 20:54:38 +02:00
..
helpers.go Use t.TempDir for SQLite databases, so tests don't rip out each others databases (#2950) 2023-01-23 13:17:15 +01:00
log.go Unify logging by using logrus for jetstream logs (#2976) 2023-02-24 08:56:53 +01:00
nats.go Update NATS to 2.10.20, use SyncAlways (#3418) 2024-09-10 20:54:38 +02:00
streams.go Introduce a new stream for the appservice consumer (#3277) 2023-12-12 12:13:55 +01:00