-
Type:
Task
-
Resolution: Won't Fix
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Cluster Scalability
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
I was investigating uses of unsafeToInlineFuture in the code, and found that in AsyncWorkScheduler::_targetHostAsync, it looks like the intention is to run the continuation on an executor thread:
return targeter->findHost(readPref, CancellationToken::uncancelable()) .thenRunOn(_executor) .unsafeToInlineFuture() .then([shard = std::move(shard)](HostAndPort host) mutable -> HostAndShard { return {std::move(host), std::move(shard)}; });
However, based on recent discussion (linked in comments), .thenRunOn(...).unsafeToInlineFuture(...) will actually just run the continuation inline, not on the executor provided in thenRunOn.
This might not be a big deal in this function (if so, feel free to close as Won't Fix), but I wanted to raise it as it looks like the intended behavior doesn't match the actual behavior here.