[roll] Roll fuchsia [settings] Process Audio FIDL requests concurrently

Currently, the settings service processes incoming Audio FIDL requests
sequentially. It blocks reading from the FIDL channel until the
current request is fully processed.

During vigorous volume scrubbing (e.g., in the Now Playing screen),
clients like cast_agent send a high volume of Set requests in a
very short time. Because of the sequential processing, these requests
back up in the Zircon channel buffer, eventually overflowing it
(64KB limit). This causes the client to receive a ZX_ERR_SHOULD_WAIT
write error, leading it to permanently close and invalidate its
channel handle, causing subsequent volume adjustments to fail with
ZX_ERR_BAD_HANDLE.

This CL resolves the issue by wrapping RequestHandler in an Rc and
spawning an asynchronous local task for each incoming request. This
decouples request reading from request processing, allowing the main
FIDL stream loop to remain non-blocking. Requests are immediately
read and drained from the channel, preventing backlog accumulation.
Since the spawned tasks still dispatch to the single-threaded
AudioController queue, the actual volume adjustments are still
processed in the correct order.

Original-Original-Bug: 519826713
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1640526
Original-Original-Revision: 621b1a1a07d4e1b8cecaafba5cfe9ab62223ea49
GitOrigin-RevId: 67e0b4e68aeff6328a448cb9e9f59b7b4967022b
Change-Id: I6ca049b57c70e0b97b707f8f88f0d4e06849ab66
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1638989
Cr-Commit-Position: refs/heads/main@{#194264}
1 file changed
tree: 9222ee50a1a045bbb72ee409251024d1dddf71b6
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. 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 in one of the communication channels documented at get involved.

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.