Skip to content

don't renew nameplate when CLAIM gets CROWDED #80

Description

@warner

In looking at the mailbox server today, I noticed a nameplate in the "crowded" state (three or more sides have attempted to claim it) that has been lingering for over 25 minutes, despite the fact that nobody is currently conencted to it. It looks like the sender disconnected immediately, the first receiver connected later (and submitted a message) but disconnected shortly thereafter, a few minutes later a second receiver connected (getting error=CROWDED) and disconnected, and then more receivers arrived, 3-10 minutes apart, each one getting error=CROWDED.

I'm thinking that an attempt to claim a nameplate which fails should not update the timestamp on the nameplate that keeps it alive. A stream of error=CROWDED should not be able to keep the nameplate alive indefinitely. This ties into #19 where we need CROWDED to be a bit more aggressive in erroring or disconnecting clients.

I'm not sure how to implement this, though. We don't exactly have a "this nameplate is crowded" flag: we represent that by having three or more nameplate_sides rows. And the keepalive/timeout is calculated by looking at the highest timestamp of all those rows. So if we refrain from adding a row (to avoid extending the lifetime) then we're also discarding the information how just how crowded it is.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions