Syncing a lot of messages causes a flood of GenerateOffer tasks
When syncing a forum with 100+ posts, every post that's received causes a MessageSharedEvent to be broadcast, which causes every DuplexOutgoingSession to queue a GenerateOffer task on the DatabaseExecutor. These tasks overload the executor and are still being run long after the last post is received, which hurts performance and wastes resources.
At minimum, DuplexOutgoingSession should check whether it already has a task that's been queued but not started. A more complete solution would involve sharing this logic between sessions with the same contact, and perhaps attaching information about the message's visibility to the event so unaffected sessions can avoid reacting to the event.