Skip to content

sync: upstream moxygen d600e7d29660 - #384

Merged
omoq-sync-bot[bot] merged 5 commits into
mainfrom
sync/d600e7d29660
Aug 25, 2026
Merged

sync: upstream moxygen d600e7d29660#384
omoq-sync-bot[bot] merged 5 commits into
mainfrom
sync/d600e7d29660

Conversation

@omoq-sync-bot

@omoq-sync-bot omoq-sync-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown

Automated upstream sync.

  • Upstream commit: d600e7d29660
  • Upstream status: success (green)
  • Merge type: git merge (sync/d600e7d29660 → main)

The verify workflow will validate the standalone build. On success, this PR auto-merges.
Devs can push conflict-resolution commits to sync/d600e7d29660 if needed.

Created by omoq-upstream-sync workflow.


This change is Reviewable

Ido Shoshani and others added 5 commits August 24, 2026 07:27
Summary:
`MoQClientBase` already knows what a session ended up running over -- it holds
the QUIC socket, the `QuicWtSession`, and `negotiatedProtocol_` -- but all three
are protected, so a client can only report the transport its *config* asked for.
Those differ: the config is a request, and what the connect settles on is a
result.

This adds three `[[nodiscard]]` accessors alongside the existing
`getTransportConnectTime()` and `getMoQHandshakeTime()`:

| Accessor | Reports |
| --- | --- |
| `hasQuicTransport()` | whether a QUIC transport is established -- false before connect completes, and for non-QUIC transports such as QMUX |
| `usesQuicWtSession()` | whether the session runs over a `QuicWtSession` rather than the older `QuicWebTransport` path |
| `getNegotiatedProtocol()` | the negotiated ALPN, empty until the transport negotiates one |

TigonMoQ uses them to classify the established transport and to annotate its
session-establishment telemetry with both the requested and the negotiated ALPN,
so a negotiation that comes back empty -- or returns something outside the
requested set -- is visible rather than silent.

Additive and inline: no behaviour change, no existing caller affected.

Note that `MoQClientBase.h` exists in both `fbcode/` and `xplat/` and the two are
kept byte-identical, so both copies carry the change. The build uses the
`fbcode/` copy.

___

Differential Revision: D116791417

fbshipit-source-id: 1547bb6c76896cdb9f7de41447d3bb345182d244
Summary:
Remove standalone `# pyre-strict` and `# pyre-unsafe` mode headers from Python files under `fbcode/ti`.

Pyrefly type-checks all files in one consistent mode, so these legacy per-file mode headers no longer have an effect. Other Pyre directives and generated files are left unchanged.Pyrefly is now the default type checker across FBCode so this diff introduces no functional changes.
#pyreupgrade

Differential Revision: D117227662

fbshipit-source-id: 775efbba8038ee6238603b16d57d33851a5f8466
Summary:
Wires BGP++ to the `FBOSS_BUILD_PROFILE=fsdb_client` gate so building BGP++ no
longer compiles the FBOSS agent, SAI, qsfp, platform, led, cli and test trees.

BGP++ links ~90 FBOSS static archives, all of them in FBOSS's
`install(TARGETS ...)` export list, but getdeps builds every dependency with the
CMake `install` target and `install` depends on `all`. So BGP++ has been paying for
the entire FBOSS build: 4353 ninja edges against its own 285.

Uses the existing getdeps feature mechanism rather than a second manifest or a
separate FSDB repo. Same source tree, same manifest, same install dir - only the
target set changes, and it reverts by flipping one default.

`manifests/fboss` declares a `services` feature, on by default:

```ini
[features]
default = services
services =

[cmake.defines.feature_services=off]
FBOSS_BUILD_PROFILE=fsdb_client
```

`manifests/bgp` opts out:

```ini
fboss = !default, !services
```

The explicit `!services` prohibition alongside `!default` is deliberate.
`parse_dep_spec` records `!default` as `opt_out_default` and never adds it to the
prohibited set, so a bare `!default` would let a future manifest that consumes both
`fboss` and `bgp` contribute the default back and silently give BGP++ a full FBOSS.
The prohibition turns that into a hard error instead.

Polarity is opt-out rather than opt-in for the same reason. With opt-in, a consumer
of both projects would union to the reduced set and silently receive a *lite* FBOSS
- failing toward missing targets. Opt-out fails toward building too much, and the
genuinely dangerous case is loud.

Reviewed By: KevinYakar

Differential Revision: D116334077

fbshipit-source-id: 50b55a23f9954d8942d95774c38f32a269353282
Summary:
Move of the experimental EdenFS daemon tree from `fbcode/eden/fs2` to `fbcode/eden/fs/facebook/experimental` via `sl mv` (367 files, history preserved). No targets, crates, or identifiers are renamed in this commit — that follows in the rest of the stack.

Path references updated alongside the move:
1. Buck target/package paths embedded in the dod tooling (`tools/lib/env.rs`, `tools/lib/correctness.rs`, `tools/lib/thrift_gate.rs`) and `macos/build-ffi.sh`.
2. `fbcode/eden/fs2` paths in docs (`blueprint.md`, `dod-*.md`, `docs/architecture/README.md`, `third-party/pjdfstest/README.meta`).
3. `tools/arcanist/lint/fbsource-licenselint-config.toml`: the `!fbcode/eden/fs2/**` exclusion is dropped — the new location is already covered by `!fbcode/eden/**/{facebook,fb}/**`.
4. `fbcode/opensource/fbcode_builder/manifests/{eden,sapling}`: the `^fbcode/eden/fs2/.*$` shipit strip rule is rewritten to `^fbcode/eden/fs/facebook/experimental/.*$`, preserving the exact strip semantics in both `fb=on` and `fb=off` contexts (the `^.*/facebook/.*$` rule only applies under `fb=off`).

Build-configuration fixes the move makes necessary: the new location is inside the `scm_client_infra` citadel sanity-check scope, so the package is now built under `fbcode//mode/opt-win` and `fbcode//mode/opt-mac-arm64` — two configurations `fbcode/eden/fs2` was never exercised in.
1. Windows. The daemon, the library and the dod tooling are Unix-only by construction: `std::os::unix`, `std::os::fd`, `rustix::fs`, `rustix::process`, `signal_hook::iterator` and `tokio::net::UnixStream` have no Windows equivalents here. Every target now carries `compatible_with = LINUX_AND_MACOS`, except `fuse_abi` and `eden2d`, which stay `LINUX_ONLY` as before. Under `mode/opt-win` all 110 configured targets in the package are skipped as incompatible instead of failing to compile.
2. macOS. `lru` moves from the `ovr_config//os:linux` branch of `eden2-lib`'s `select` into the common `deps`: its users, `src/backing/sapling.rs` and `src/fs/fnfs.rs`, are OS-common, so the macOS build failed with `error[E0433]: cannot find module or crate lru`. Symmetrically, `sha1` moves into the Linux branch — its sole user is the Linux-gated `src/thrift/handler.rs`, so macOS flagged it as an unused dependency.

Reviewed By: genevievehelsel

Differential Revision: D117018989

fbshipit-source-id: 93a3d074cc9b7f340e57f21cf43ed61e30bf39c9

@gmarzot gmarzot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved by upstream sync workflow.

@omoq-sync-bot
omoq-sync-bot Bot merged commit c6808b5 into main Aug 25, 2026
6 checks passed
@omoq-sync-bot
omoq-sync-bot Bot deleted the sync/d600e7d29660 branch August 25, 2026 05:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants