element-hq / dendrite

Dendrite is a second-generation Matrix homeserver written in Go!
https://element-hq.github.io/dendrite/
GNU Affero General Public License v3.0
3 stars 2 forks source link

nats: account requires a stream config to have max bytes set #3417

Open matrixbot opened 1 week ago

matrixbot commented 1 week ago

This issue was originally created by @paigeadelethompson at https://github.com/matrix-org/dendrite/issues/3417.

This is an issue that came up while trying to use a SaaS NATS provider:

time="2024-09-10T14:40:05.105105731Z" level=fatal msg="Unable to add in-memory stream" error="nats: account requires a stream config to have max bytes set" stream=DendriteInputRoomEvent subjects="[DendriteInputRoomEvent DendriteInputRoomEvent.>]"

I believe it refers to the StreamConfig specified in:

https://github.com/matrix-org/dendrite/blob/main/setup/jetstream/streams.go#L48

Also something else that I'm noticing about the StreamConfig is that a few of them explicitly indicate memory for the storage type:

{
Name:      OutputTypingEvent,
Retention: nats.InterestPolicy,
Storage:   nats.MemoryStorage,
MaxAge:    time.Second * 60,
},

which would also afaik be a problem for the SaaS provider wile using the free tier

matrixbot commented 1 week ago

This comment was originally posted by @paigeadelethompson at https://github.com/matrix-org/dendrite/issues/3417#issuecomment-2341843711.

I've started testing this by simply adding MaxBytes: 1048576 to all of the streams, however the SaaS provider I found only gives me 10 streams at the moment and I Need 12 to test this properly. I've reached out to them to ask if they wouldn't mind allocating 2 more. I also set OutputTypingEvent to use nats.FileStorage until somebody has a better suggestion for what to do with that given that the provider doesn't allow memory storage for the service tier.