We've been observing that most meetings are not auto-stopping correctly. My theory is that I got too clever, and the SortedSet that has been acting as a queue for that stuff is getting confused by the fact that there are many items with the same end time.
So let's just drop that, and brute-force things with the map of currently-running items that we are also maintaining instead. In airy theory, this is less efficient; in reality, there are never more than half a dozen items at a time, so that is totally irrelevant.
We've been observing that most meetings are not auto-stopping correctly. My theory is that I got too clever, and the SortedSet that has been acting as a queue for that stuff is getting confused by the fact that there are many items with the same end time.
So let's just drop that, and brute-force things with the map of currently-running items that we are also maintaining instead. In airy theory, this is less efficient; in reality, there are never more than half a dozen items at a time, so that is totally irrelevant.
For the most part, this just simplifies the code.
Fixes #465 (I hope)