[roll] Roll fuchsia [fidl][cpp] Transport writes don't surface peer-closed (behavior change)

Today one-way calls may fail because the remote server closed their
endpoint. However this is a source of race conditions because one-way
calls are not synchronization/rendezvous points between the client and
server. One-way calls are used to stream values without waiting. In this
CL the FIDL C++ bindings stops exposing peer-closed errors in one-way
calls, event sending, and server reply sending. In short, all writes
don't surface peer-closed errors.

A common example is methods that involve `component::Open` (or the
underlying fuchsia.io/Directory.Open calls). Sometimes the caller wanted
to handle the error where the Open call fails because the remote
endpoint is closed, so they code up some error handling logic that
checks the one-way result of Open. However, that ignores the case where
the remote endpoint closed just after sending Open, at which point the
pipelined protocol is still closed, but Open appears to succeed.
Usually, people should use the same error handling logic for those two
cases, because in production it'll happen racily. But having Open return
peer-closed forces the error to be handled in two places (and quite
often the second place is forgotten). So this is a pragmatic trade-off
to converge errors to one place.

C++ generated interface for two-way calls don't return anything to the
user, so there is no behavior change in those functions.

Tested via new cases in the client/server suite.

Original-Bug: 113160
Run-All-Tests: True
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/780723
Original-Revision: a3223fd266abd57e10c6863620333fd1e4785811
GitOrigin-RevId: a44d95f37d0a58ba9f583ccf618dcb1e0536a6c1
Change-Id: Ie4ac32d28871ab56a2ad888836d56975a801f6b1
1 file changed
tree: adbed8996170a8b3cf55efaa65dfd76925a20432
  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.