[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
1 file changed
tree: f61464e8f6ad2547524b498824def56f757a9019
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

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.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.