| commit | 976f404c29de014d75362ba160e56c75447b0940 | [log] [tgz] |
|---|---|---|
| author | Gary Bressler <geb@fuchsia.infra.roller.google.com> | Thu Apr 15 00:16:48 2021 +0000 |
| committer | Copybara-Service <copybara-worker@google.com> | Wed Apr 14 17:17:36 2021 -0700 |
| tree | f61464e8f6ad2547524b498824def56f757a9019 | |
| parent | 804e87326941f90db3252cf81ed43ad77f5cdc86 [diff] |
[roll] Roll fuchsia [component_manager] Fix destroy/create race This fixes a bug in component manager that can cause a created component to be incorrectly deleted if it was created just after another component with the same name was deleted. To be precise, the race is as follows: 1) Client calls DestroyChild. 2) component_manager schedules a DeleteChild action 3) DestroyChild returns. 4) Client calls CreateChild, with the same instance name. 5) Instance is created. 6) The DeleteChild action from #2 executes. It starts by scheduling a MarkDeleted action, which incorrectly marks the new instance deleted. The solution is for DeleteChild not to call MarkDeleted. Instead, code that handles instance destruction must explicitly call MarkDeleted first. This bug was causing `ffx session restart` to sometimes error with CreateComponentFailed (which actually was an error of failing to bind to the session component). Tested: Manually verified the fix works with `session_control`. Added an integration test which should flake if the issue is present. Unit test checks that MarkDeleted is not rescheduled. Multiply: destruction_integration_test: 200 Original-Fixed: 41967 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/511284 Original-Revision: 7a9ff485698894b49aebadbc6f66f0c14cedc934 GitOrigin-RevId: da23478f5bf8a21cec85d1a1695a25d72788127a Change-Id: I2af1e1e2f8ab3ac657d5113d03936e2e5c835e2b
This repository contains Fuchsia's Global Integration manifest files.
All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.
Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.