Skip to content

[5.1] Remote: Postpone the block waiting in afterCommand to BlockWaitingModule #14833

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

brentleyjones
Copy link
Contributor

When implementing async upload, we introduced a block waiting behaviour in RemoteModule#afterCommand so that uploads happened in the background can be waited before the whole build complete.

However, there are other block waiting code in other module's afterCommand method (e.g. BES module). Block waiting in remote module will prevent other modules' afterCommand from executing until it's completed. This causes issues like #14576.

This PR adds a new module BlockWaitingModule whose sole purpose is to accept tasks submitted by other modules in afterCommand and block waiting all the tasks in its own afterCommand method. So those tasks can be executed in parallel.

This PR only updates RemoteModule's afterCommand method to submit block waiting task. Other modules should be updated to use BlockWaitingModule as well but that's beyond the scope this this PR.

This PR along with 73a76a8 fix #14576.

(cherry picked from commit 621649d)

Closes #14703.

@brentleyjones brentleyjones requested a review from a team as a code owner February 16, 2022 13:51
…Module`

When implementing async upload, we introduced a block waiting behaviour in `RemoteModule#afterCommand` so that uploads happened in the background can be waited before the whole build complete.

However, there are other block waiting code in other module's `afterCommand` method (e.g. BES module). Block waiting in remote module will prevent other modules' `afterCommand` from executing until it's completed. This causes issues like bazelbuild#14576.

This PR adds a new module `BlockWaitingModule` whose sole purpose is to accept tasks submitted by other modules in `afterCommand` and block waiting all the tasks in its own `afterCommand` method. So those tasks can be executed in parallel.

This PR only updates RemoteModule's `afterCommand` method to submit block waiting task. Other modules should be updated to use `BlockWaitingModule` as well but that's beyond the scope this this PR.

This PR along with 73a76a8 fix bazelbuild#14576.

Closes bazelbuild#14618.

PiperOrigin-RevId: 424295121
(cherry picked from commit 621649d)
@brentleyjones brentleyjones force-pushed the bj/remote-postpone-the-block-waiting-in-aftercommand-to-blockwaitingmodule branch from bb67d2e to 4032fed Compare February 16, 2022 13:51
@brentleyjones brentleyjones changed the title Remote: Postpone the block waiting in afterCommand to BlockWaitingModule [5.1] Remote: Postpone the block waiting in afterCommand to BlockWaitingModule Feb 16, 2022
@brentleyjones
Copy link
Contributor Author

@Wyverald

@Wyverald Wyverald merged commit 0c74741 into bazelbuild:release-5.1.0 Feb 16, 2022
@brentleyjones brentleyjones deleted the bj/remote-postpone-the-block-waiting-in-aftercommand-to-blockwaitingmodule branch March 1, 2022 13:54
@ShreeM01 ShreeM01 added the team-Remote-Exec Issues and PRs for the Execution (Remote) team label Dec 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
team-Remote-Exec Issues and PRs for the Execution (Remote) team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants