The existing implementation triggered Session shutdown and then blocked on a std::future that would be unblocked by an on-shutdown callback that waitForShutdown had installed. Since there is no guarantee that this callback would be the last one run, the result was that waitForShutdown only guaranteed that it would not return until the shutdown sequence had started (rather than completed). This could have been fixed, but the Session destructor is already supposed to block until the Session can be safely destroyed, so a "working" waitForShutdown would be effectively redundant. Since it was also a potential footgun (calling it from an on-detach or on-shutdown callback could deadlock) it was safer to just remove it entirely. Some Session unit tests do rely on testing properties of the Session after the shutdown sequence has started, so a new utility has been added to SessionTests.cpp to support this.
10 KiB
10 KiB