Commits
Gil authored and GitHub committed f83f3418db7
Avoid destroying the Task's operation while holding a lock (#5658) This prevents deadlock that can occur if the currently executing task happens hold the last `shared_ptr<Firestore>` for an instance. The deadlock looked like this: the destruction of the closure would trigger the destruction of the instance, which would dispose the executor, triggering cancellation of all tasks, including the currently executing one. Since the `operation_` member was reassigned while holding the task's lock, the `Cancel` operation would block trying to acquire it. This fixes the deadlock by forcing all interaction with the `operation_` outside the lock.