[roll] Roll fuchsia Reland "[fdf] Wait for DFv2 node to be removed completely"

This is a reland of commit de7e754be1ae0886a590a890eb29a97165b18f60

Convert FIDL arguments for shutting down a DFv2 node into their natural
types before capturing them in a callback that is called at a later
point in the shutdown process. Originally, these arguments were wire
types and the underlying data was not owned by the callback that
captured them resulting in referencing data that was freed when the
callback was invoked.

Original change's description:
> [fdf] Wait for DFv2 node to be removed completely
>
> This CL addresses two issues related to shutting down DFv2 nodes. The
> first issue is that DFv2 nodes do not confirm that its associated
> component has been fully removed by the component manager before
> allowing another component to be created with the same configuration. If
> a new node is added after the old one is removed and the component
> manager hasn't had time to remove the old component then it may complain
> about duplicate components when the new node attempts to create a new
> component.
>
> In this CL, nodes will now send a `DestroyChild` request to the
> component manager during the node removal process and will only be
> considered fully removed when the FIDL request gets a response. This
> ensures that the associated component has been fully removed.
>
> The second issue is that DFv2 nodes can be added after another node with
> the same name has been requested to be removed but before it has been
> fully removed. The driver runner will complain that duplicate nodes
> exist when attempting to add the new node even if the old node is in the
> middle of being removed.
>
> In this CL, DFv2 nodes will now check if the duplicate node is in the
> middle of being removed and create a callback to create the new child
> node once the old node is removed.
>
> Both these issues are race conditions and so the test added in this CL
> may not fail every time. It usually failed every 1 out of 3 tests.
>
> Multiply: rebind_test
> Original-Bug: 121991
> Original-Bug: 121990
> Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/800764

Original-Bug: 121991
Original-Bug: 121990
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/813168
Original-Revision: 106bb540973d1c38cd8bf4cc62b2e6aa05b0e490
GitOrigin-RevId: 79f0574ac66e8618e178fe76406ffcc2de46b6ae
Change-Id: I9396eef856bb45a1e2def6de30208824ef6dff69
1 file changed
tree: 7ceb461a65b2a3bef8444215f87a3feaa654c19f
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
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.