[roll] Roll fuchsia [cm] Remove WeakModelContext

Component instances stored a weak reference to ModelContext
and as a result, has to deal with the possibility of the
context not existing which means an extra enum in ModelError.

This CL changes ComponentInstance to keep a strong reference
to the ModelContext instead.

This is expected to be safe because:
1. ModelContext is an object created at the start of
   component manager's lifecycle and will exist until
   component manager stops.
2. There is no ownership cycle between ModelContext and
   ComponentInstance.
3. When component manager is asked to stop gracefully, all
   components go through their lifecycle destruction and
   eventual removal from the topology. Doing so will remove
   the ComponentInstance object and decrement the counter
   of the Arc<ModelContext>.
4. Once all components are destroyed, the last reference to
   ModelContext should be in the Model object.
5. We are assuming that there are no async tasks holding on
   to the ComponentInstance or ModelContext indefinitely.

Original-Bug: 116855
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/787766
Original-Revision: 10fecf8e1c8a19e13cbe964d31f43dd6a5d0955c
GitOrigin-RevId: 26cd783516cce6f1956c041e33500fb1af758e3b
Change-Id: If36be1ada144f8a3e1aea524f6292217d82c15e3
1 file changed
tree: f4f3449e5be419b180912376745f2f1435ea1c22
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. 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.