MessagingService:SubscribeAsync() can yield forever

On random servers, entirely unpredictably, except possibly related to hitting MessagingService limits, SubscribeAsync is able to yield infinitely (>15 minutes was tested) without throwing an error. On that server, attempting to call SubscribeAsync again with the same topic consistently reproduces the issue. This seems to have appeared in the last couple weeks/one month, with our bug reports going back ~1-2 weeks.

On our game, this manifested as a random bug occurring for a very small percentage of the playerbase, and only on specific servers, due to a reliance on MessagingService and failing to account for it possibly yielding infinitely. Since it’s so random, I have no specific reproduction steps or repro code.

This seems to be highlighted in old bug reports (which was fixed), along with some newer bug reports in the past few weeks, though those only regard team test servers; while this issue is happening in live servers.

We seem to periodically get MessagingService limit errors, but it’s not entirely clear if hitting the limits is related to this infinite yielding issue; there is no error thrown for the topic the infinite yield occurs on.

Expected behavior

The developer documentation states that the function “yields until the subscription is properly registered and returns a connection object”, but it is entirely unclear that this includes yielding forever. Either the documentation should be updated to make this clear, or more likely it is unintentional that it yields forever without throwing an error on only one topic.

A private message is associated with this bug report

Thanks for the report! We’ll follow up when we have an update for you.