1
0
mirror of https://github.com/facebook/proxygen.git synced 2026-10-24 01:33:54 +03:00

15601 Commits

Author SHA1 Message Date
Hani Damlaj
d1df9a61ed remove HQSession::onPushPriority
Summary: removes `HQSession` logic to handle push priorities, continued efforts to remove all things http push related in proxygen/lib

Reviewed By: Carl-Elkhoury, jbeshay

Differential Revision: D124184174

fbshipit-source-id: 69b156dff3203d1190fcd9856fc6c53b9c3a7ac9
2026-10-18 10:36:38 -07:00
Hani Damlaj
db2f820ec4 remove HQSession::sendPushPriority
Summary: removes `HQSession` logic to send push priorities, continued efforts to remove all things http push related in proxygen/lib

Reviewed By: jbeshay, Carl-Elkhoury

Differential Revision: D124186600

fbshipit-source-id: fdeb6adf10332ea2ff408291d7c2e50b974e8ab3
2026-10-18 10:36:38 -07:00
Hani Damlaj
7904e9d25e remove HQSession::sendPushPromise
Summary: removes HQSession's logic to send push promises, continued efforts to remove all things http push related in proxygen/lib

Reviewed By: jbeshay, Carl-Elkhoury

Differential Revision: D124180502

fbshipit-source-id: 01cb5ecb731a81cbdd27fb5ac9cec799241f7f27
2026-10-18 10:36:38 -07:00
Open Source Bot
321b89a864 Updating hashes
Summary:
GitHub commits:

6ac09ceaf0
08e1a63d7f
c651deccd9
c517b06a4b
473f490101
ee01105d55
16e660e4c1
5af78bb633
1cc26977bc
7924cf1d5e

Reviewed By: sdwilsh

fbshipit-source-id: bfb4382715c82506fd868ed33062d2109330cd30
2026-10-18 09:33:22 -07:00
Open Source Bot
ee01105d55 Updating hashes
Summary:
GitHub commits:

1fddb80f07
d106a78648
6b327b9cfa
e1187330c6
070549fca8
aec59e832f
9616d3310a
4e602d5f49
b3e58d9131
58eb9f1feb
b62ec9d0ec
60f494d4e5

Reviewed By: sdwilsh

fbshipit-source-id: d6154b2290a865ce0efae7502ba3f0c67ca7004c
2026-10-17 09:33:59 -07:00
Keivaun Waugh
9616d3310a Stop worker loops from their own thread
Summary:
`TestShutdownWithIdleConns` flakes under TSAN: proxygend exits with status 66 after reporting a data race. All 36 of its failures in the last two weeks have the same report:

- Main thread: at the hard shutdown timeout, `Proxygen::forceStop()` calls `RequestWorkerThread::forceStop()`, which calls `EventBase::terminateLoopSoon()` on the worker's `EventBase`. That reads the plain `strictLoopThread_` field.
- Worker thread: observes `stop_`, exits its loop, and `IOThreadPoolExecutor::threadRun()` immediately destroys the `EventBase`. The first statement of `~EventBase()` writes `strictLoopThread_`.

`stop_` is a relaxed atomic, so nothing makes a cross-thread `terminateLoopSoon()` happen-before the destruction it triggers. It only shows up when the worker is busy and sees `stop_` before it consumes the wakeup message, hence the flakiness. `~EventBase()` requires every method call to happen before destruction starts, and `IOThreadPoolExecutor` serializes its own `terminateLoopSoon()` against destruction with `eventBaseShutdownMutex_`. `RequestWorkerThread::forceStop()` bypasses that.

Fix: post `terminateLoopSoon()` to the worker's own loop with `runInEventBaseThread()`. The loop thread then sets `stop_` itself, so the call is sequenced before the loop exit and the destructor on the same thread.

Why this is safe:
- The cross-thread part is now just `runInEventBaseThread()`: an atomic `loopTid_` load and a notification queue push (atomic CAS plus an eventfd write on fds set at construction). `~EventBase()` touches none of that state until all keepalives are released. `runImmediatelyOrRunInEventBaseThread()` would not work, since its `isInEventBaseThread()` check reads `strictLoopThread_`.
- The `EventBase` is alive while the message is posted. `Proxygen::forceStop()` holds `workersLock_`, and a worker only leaves `workers_` from its `VirtualEventBase` destruction callback, which runs inside `~EventBase()` before the `VirtualEventBase` releases its keepalive on the `EventBase`. `Proxygen` also holds `workerKeepAlives_` until after its main loop stops.
- The posted callback always runs. Normally it runs in the loop: proxygen's post-stop drain `loop()` is pinned by those keepalives and only exits through this stop. If the loop has already exited, `~EventBase()` runs it from its keepalive loop or `queue_->drain()`, which drains until empty, including messages enqueued while draining. `terminateLoopSoon()` is harmless there.
- The only behavior change is ordering: the stop now queues behind any work already posted to the worker, so that work runs in the loop instead of possibly being deferred to the destructor. The stop is delayed by at most a loop iteration.

The same race causes 9 of the 25 recent failures of `TestShutdownSendingrequestsDuringAfterShutdown`.

Differential Revision: D125544299

fbshipit-source-id: 1b2aae0a56c7b034dd7c1aa4bd51180a3430531d
2026-10-16 14:30:02 -07:00
Hani Damlaj
93a16f17f6 QuicWtSession::setHandler return early if nullptr
Summary: if the application invokes ::setHandler(nullptr) return early after invoking ::closeSession rather than falling thru to next instruction

Reviewed By: Carl-Elkhoury, gaurav-karna

Differential Revision: D125035603

fbshipit-source-id: 058366ea3954c4d03cd1c665828257c64253aa54
2026-10-16 12:20:13 -07:00
Neil Spring
a5b46534f8 Enable getdeps CI builds
Summary: Add getdeps CI for `metaroce`: a build manifest, a GitHub Actions workflow with sccache and a 180-minute timeout (cold builds take ~90 min), and a `BUILD_TESTS` CMake option for the leaf test suite. Folly, fmt, and glog are built shared for the preload interposer.

Reviewed By: bsorrells

Differential Revision: D125028728

fbshipit-source-id: 5d9416863c991727fd353e7cc272e0673ff86c01
2026-10-16 11:10:28 -07:00
Open Source Bot
a5e61134f2 Updating hashes
Summary:
GitHub commits:

667d74254d
66a77c3bc9
0a62667983
eefb7e1955
aea5ddfd37
aad203708d
d743643424
c5bd1160ed
a118c6052d
2f4233ab80
a0275e26f6
52f6d0bd38

Reviewed By: ajb85

fbshipit-source-id: e1a7674feb1690fce4103e561159daa0a8307bcb
2026-10-16 09:31:38 -07:00
Victor Zverovich
aad203708d Point the getdeps manifest at 1.9.5
Summary:
The fbthrift macOS GitHub workflow (`getdeps_mac.yml`) builds with Homebrew LLVM, now Clang 23.1.0, and has failed on every run since mid-September because Google Benchmark 1.8.0 doesn't compile with it:

```
benchmark.h:1408: error: '__COUNTER__' is a C2y extension [-Werror,-Wc2y-extensions]
```

Benchmark always builds itself with `-pedantic-errors`, so `BENCHMARK_ENABLE_WERROR=OFF` wouldn't help. Upstream fixed this in v1.9.5 (https://github.com/google/benchmark/pull/2108) by suppressing `-Wc2y-extensions` around the `__COUNTER__` check, so update the manifest to that release. The rest of the manifest is unchanged, and `.lfs-pointers` gains the entry for the new archive.

Fixing it here in `fbcode_builder` fixes every getdeps project, since `build/fbcode_builder` is synced from it. In fbthrift, benchmark is used only by `thrift/lib/cpp2/test/ProtocolBench.cpp`, which uses just the basic API.

Reviewed By: genevievehelsel

Differential Revision: D125518574

fbshipit-source-id: ca2d74ecf1902329db8e19ffabf223186e0a3acf
2026-10-15 17:39:22 -07:00
Open Source Bot
ef6ee6edeb Updating hashes
Summary:
GitHub commits:

9e38658e9a
a24370092f
48c488a5ce
38b5b8f7cd
9ed7d2edfb
b1c3de5c99
010d1fc689
26014c9818
1866dd599b
358d6affc6
9cd3486486
5524a3fc84
6ac92f4c35

Reviewed By: ajb85

fbshipit-source-id: 31582b701b9a591631018f84a90bae93eaf31095
2026-10-15 09:38:20 -07:00
Open Source Bot
010d1fc689 Updating hashes
Summary:
GitHub commits:

b0d519df42
26925e1796
a8ca8e6053
46cd26e436
8e18891812
adb297cb25
4d558e023a
6461cf9a84
96c352b915
72fe7cac4f
fc5207f6dc
297de5a7e4
9a47c28932
7ba43951b5
98806ccf4f

Reviewed By: ajb85

fbshipit-source-id: 7e3a7daf90044051746992712a03345e7b0a1e65
2026-10-14 21:39:20 -07:00
Hani Damlaj
ded06898e4 remove HTTPPushTransactionHandler & httpserver/PushHandler.h
Summary: removes all derived classes of HTTPPushTransactionHandler, as http push is no longer enabled / support in proxygen/lib

Reviewed By: Carl-Elkhoury, SUJP123

Differential Revision: D124177933

fbshipit-source-id: 27b25418085d95c04283cf3a995ef0cbc928eb7a
2026-10-14 21:31:15 -07:00
Hani Damlaj
e79598c3b3 remove HttpTxn::isPushed
Summary:
isPushed is always false now that we've removed push support in proxygen/lib
this simplifies all the gated conditions on isPushed

Reviewed By: jbeshay, Carl-Elkhoury

Differential Revision: D124175915

fbshipit-source-id: f8bb91d143da3051066e1c1bf585be0f8695471f
2026-10-14 21:31:15 -07:00
Indu Suresh
6461cf9a84 Fix libiberty install and shared glog for folly-python
Summary:
Fixes the two getdeps regressions that break the BGP++ OSS builds (`fboss-oss-build-bgp`, `fboss-oss-build-bgp-bb`) and FBOSS OSS builds that build dependencies from HEAD. They ship together because either fix alone still leaves `fboss-oss-build-ondiff` red on the other.

libiberty: getdeps-built libiberty installs its headers but no `libiberty.a`, so `fbthrift-python` configure fails with `Could NOT find Libiberty (missing: LIBIBERTY_LIBRARY)`. `AutoconfBuilder` adds `--disable-shared` when a manifest passes neither shared flag, and libiberty's configure then empties `PICFLAG`, so `pic/libiberty.a` is never built and `libiberty_install_pic_lib.patch` copies nothing while the install still exits 0. The miss was silent until D125047475 renamed the package in `FindLibiberty.cmake` to `Libiberty`, which made `find_package(Libiberty REQUIRED)` in fbthrift enforce REQUIRED. Passing `--enable-shared` keeps `PICFLAG`; libiberty builds no shared library either way.

glog: since D124075105 made glog static by default, the `-python` shared libraries built on `folly-python` each embed a copy of glog, and every copy registers its flags with the one shared gflags, so test binaries abort with `linked both statically and dynamically`. glog's `[cmake.defines.feature_shared_libs=on]` could never turn on because glog declared no features. This declares `shared_libs` in glog and requests it from `folly-python`; getdeps unions features per project, so graphs that contain `folly-python` (`bgp`, `fboss`) get one shared glog, and graphs without it (`cachelib`, `mcrouter`, `folly`, `fbthrift`) keep static glog.

Reviewed By: yfeldblum, shitanshu-shah

Differential Revision: D125332467

fbshipit-source-id: 4ff0cb077de91afc86f79f09e1ab6b15fac2c7f0
2026-10-14 20:39:27 -07:00
generatedunixname1370418621882004
6a2cdc9f51 Add top-level oncall or cleanup: fbcode/proxygen
Reviewed By: Ben0mega

Differential Revision: D125198168

fbshipit-source-id: 4bf716bb57905d404cef44b37a6d35ed35bcedb3
2026-10-14 15:28:00 -07:00
Hani Damlaj
ffc10bcb6c remove HttpTxn::Transport::newPushedTransaction
Summary: As per the previous diff, no one invokes newPushedTransaction on the underlying transport (http/2 or http/3). This removes all derived implementations as we continue work to deprecate http PUSH in proxygen/lib

Reviewed By: rohilverma, Carl-Elkhoury

Differential Revision: D124150150

fbshipit-source-id: 16f1d167a1c287cbec95aa798a4c2ca829f69cb4
2026-10-13 21:07:47 -07:00
Hani Damlaj
7456d757cf remove HttpTxn::newPushedTransaction
Summary:
* continued efforts to remove all things http push related from proxygen/lib
* this changeset removes the HttpTxn::newPushedTransaction & co

Reviewed By: Carl-Elkhoury

Differential Revision: D124150143

fbshipit-source-id: 23c017cc2f4c728fb3201a7903c3e68b156eab5f
2026-10-13 21:07:47 -07:00
David Tolnay
ffbf131199 Raise getdeps to llvm 19
Reviewed By: fzakaria

Differential Revision: D125027819

fbshipit-source-id: ad7816188dcd2182737d288e4d881b72d7f89e7e
2026-10-13 20:43:29 -07:00
Victor Zverovich
ce10fdda8b Fix package name mismatch warnings in remaining CMake find modules
Summary:
Follow-up to the `FindZstd.cmake` fix. CMake emits an author warning when the package name passed to `find_package_handle_standard_args()` does not exactly (case-sensitively) match the name used in `find_package()`. Fix the remaining modules:

- folly: `FindSnappy`, `FindLibDwarf`, `FindLibAIO`, `FindLibUring`, `FindLibsodium`, `FindLibiberty`, `FindFmt`
- fbcode_builder: `FindGflags`, `FindRe2`, `FindLibiberty`

`find_package_handle_standard_args` also sets the upper-case `<NAME>_FOUND`, so `SNAPPY_FOUND`, `LIBDWARF_FOUND`, `LIBAIO_FOUND`, etc. are unchanged. The exception is `FindFmt`, which used `LIBFMT_FOUND`; it now checks `FMT_FOUND` (`LIBFMT_FOUND` had no other users). In `FindGflags` all exported `_FOUND` variables are derived from `GFLAGS_FOUND`, which is still set.

Reviewed By: genevievehelsel

Differential Revision: D125047475

fbshipit-source-id: 38b4eff058091525e249fc3cf39331582d396ba0
2026-10-13 17:35:52 -07:00
Konstantin Tsoy
b3ef3946ab Wait for subscription establishment in joining FETCH
Summary:
# Context
A joining FETCH can arrive while its SUBSCRIBE is still being established. With draft 18 request streams, it can also arrive before the SUBSCRIBE itself. Dispatching it immediately can lose the subscription's track and joining location.

# This Diff
Hold dependent FETCH requests until the subscription is established, fail them when it fails, and release them on cancellation. Bound the dependency queue and time out unseen draft 18 IDs; binding the SUBSCRIBE disarms that timeout. Enforce the older drafts' Largest Object subscription requirement. A FETCH held for a PUBLISH resumes only after the publisher's PUBLISH reply, so a relay has recorded the subscription before it is asked to serve the join.

Before the FETCH data stream exists, a write that cannot open the stream is accepted and reports BLOCKED, matching how MoQCache treats BLOCKED; master dropped that write. Readiness before the first write is immediate, and only held writes wait for credit, because proxygen's HTTP/3 WebTransport cannot wait for stream credit; a write held on that transport still needs it. The held data goes out once uni stream credit arrives, whether or not the producer waits for readiness again, and a FETCH that is cancelled or reset gives up its credit wait. `MoQConsumers.h` now states that BLOCKED means the call was accepted and that accepted data is delivered. Forwarding a FETCH between sessions still ends it when the downstream consumer reports BLOCKED, as on master. Every credit wait on the session, including a track publisher's, shares one transport waiter, because a raw QUIC transport accepts only one at a time.

Use master's request cancellation machinery and retain its OperationCancelled contract. Extend the fake transport to test reordered request streams and blocked readiness.

# This Stack
1. Forwarding range and subgroup lifetime fixes.
2. **Session joining dependencies and FETCH readiness.**
3. Bounded group cache and paced replay.
4. MoQProxy integration and end-to-end joining tests.
5. MoQProxy server and end-to-end conformance runs.

Reviewed By: sharmafb

Differential Revision: D123890447

fbshipit-source-id: 4a9f70c10b825e529fdf0a3372b08bbac9774aec
2026-10-13 14:43:20 -07:00
Shoaib Meenai
96da6e9904 Remove from globals that need no dynamic initialization
Summary:
Once libc++ stops restoring the C++20-removed `std::allocator` members
(the next diff), short `std::string` globals become constant-initializable.
Together with `-fc++-static-destructors=thread-local`, which every
Android build uses, these globals then need no dynamic initialization at
all. `[[clang::lazy_init]]` on them did nothing useful, and for `const`
ones it was the cause of the runtime crashes in T292366087: clang
emitted the object into `.rodata` while its `.lazyinit` function still
constructed into it. The previous diff makes the lazy_init attribute a
compile error in these cases, and this diff removes all problematic
annotations in preparation for relanding the libc++ change.

Note that a few of these (e.g. `BaseState::EMPTY`, a `const std::shared_ptr`
initialized to `nullptr`) are constant-initialized even without the
libc++ change, so they were already emitted read-only with a `.lazyinit`
that writes to them.

Reviewed By: thevinster

Differential Revision: D124853598

fbshipit-source-id: 3a68867481bb09002cc0d86e406ec013e7d42c1c
2026-10-13 11:34:31 -07:00
Victor Zverovich
ba378419c5 Use fbcode_builder's FindZstd.cmake
Summary:
Like `FindXxhash.cmake` in the parent diff, `thrift/cmake/FindZstd.cmake` duplicated `build/fbcode_builder/CMake/FindZstd.cmake` but defined a `zstd::zstd` imported target. Move the target into the fbcode_builder module and remove thrift's copy. fbthrift now installs the fbcode_builder module next to `FBThriftConfig.cmake`.

The target takes its locations from `ZSTD_LIBRARY_RELEASE` and `ZSTD_LIBRARY_DEBUG`, not `ZSTD_LIBRARY`, because when both are found `ZSTD_LIBRARY` is an `optimized;...;debug;...` list, which isn't a valid `IMPORTED_LOCATION`.

The fbcode_builder module sets `ZSTD_INCLUDE_DIR` rather than `ZSTD_INCLUDE_DIRS`, so `thrift/lib/python` now reads that. It also has no `ZSTD_ROOT` hints; CMake's `<PackageName>_ROOT` handling covers that use (`Zstd_ROOT`, and `ZSTD_ROOT` from CMake 3.27).

folly, fizz and cachelib, the other users of the module, use the `ZSTD_*` variables and don't define `zstd::zstd`, so the guarded target doesn't affect them.

Reviewed By: iahs

Differential Revision: D123973126

fbshipit-source-id: 4621c354feef03db1af707bd33eef056ac96a43d
2026-10-13 11:10:55 -07:00
Open Source Bot
f54f608db5 Updating hashes
Summary:
GitHub commits:

2146915ec3
946cd147f9
964c21962e
ac550b8d96
003274b118
3d73f9d590
a6f9d731fa
9317fc6886
dccddb38ab
dbb1b2c822
7857dfb388
9fa5f430fc
667da3cf1f

Reviewed By: ajb85

fbshipit-source-id: e0a164a43e10b01e71a4af61204b7a109cfbb549
2026-10-13 09:33:57 -07:00
Hani Damlaj
a6f9d731fa fix ::makeHTTPRequestSource
Summary:
Order of arguments are unspecified and can be evaluated in any order. This fixes (and simplifies) ::makeHTTPRequestSource

reported by mavam on github in https://github.com/facebook/proxygen/issues/642

___

landed-with-radar-review

Differential Revision: D124836672

fbshipit-source-id: 1e92616c49480f3eecb15e746974cca616a4edda
2026-10-12 15:42:52 -07:00
Michel Lind
efd9a3db50 getdeps: EL 10 system packages, static glog by default
Summary:
CentOS Stream 10 and EPEL 10 carry nearly everything `cachelib`
needs, but the manifests only map most of these libraries for
`distro=fedora`, so `getdeps` builds `fmt`, `gflags`, `googletest`,
`benchmark` and `Boost` from source there for no reason. Two mappings
are also wrong for EL 10 rather than merely missing: it ships
`zlib-ng` under the compat names like Fedora, not the plain
`zlib-devel`/`zlib-static` the "not fedora" section assumes, and it has
no `lz4-static` at all, which the selector only excluded for EL 8
and 9.

This diff selects on the `rhel` family rather than naming CentOS
Stream, spelling the mappings as "Fedora, or the `rhel` family other
than 8 and 9", so Alma, Rocky and RHEL itself get them and EL 11 needs
no further edit.

Two libraries stay unmapped outside Fedora because EPEL's versions are
too old for the revisions pinned here: `glog`, where EPEL 9 and 10 both
have 0.3.5 against a post-0.6.0 commit, and `fast_float`, where
EPEL 10's 6.1.6 lacks the `parse_options_t` constructor folly's
`Conv.cpp` uses (found by building:
https://koji.fedoraproject.org/koji/taskinfo?taskID=151005880).

`install-system-deps --dry-run --recursive cachelib` now asks for 35
packages on `centos_stream` 10, the Fedora list minus `glog-devel`,
`fast_float-devel` and `lz4-static`, and all of them exist in CentOS
Stream 10 or EPEL 10. The `centos_stream` 9 and 8 lists are unchanged:
9 still takes `zlib-devel` and `zlib-static` and builds the rest, 8
still takes the `boost169` compat packages.

The `glog` manifest also set `BUILD_SHARED_LIBS=ON` unconditionally,
while `folly` and `fbthrift` set it only under
`feature_shared_libs=on`. A static build therefore still linked a
shared `libglog`, and the manifest's own patchfile comment already
assumes the opposite ("default-visibility symbols in a static archive
are harmless for consumers that don't need the shared_libs feature").

It shows up downstream: the Fedora and EPEL packages of `cachelib` and
`mcrouter` ship executables with the whole stack linked statically and
no libraries at all, yet came out requiring `libglog.so.1`, which
nothing installs. On EPEL 10 that is not even satisfiable, since its
`glog` is 0.3.5 and provides `libglog.so.0`.

This diff moves the define under `feature_shared_libs=on`, as the
other two do, so `--shared-lib` still gets a shared `glog` and everyone
else gets a static one.

Origin: verified on fork branch `michel-slm/CacheLib`
`getdeps-el10-rpm-mappings`, commits `1aef1670` (EL 10 mappings) and
`6ad39916` (`glog` shared default); imported here for ShipIt export.

Reviewed By: yfeldblum

Differential Revision: D124075105

fbshipit-source-id: 4279b1bf9fe58165fcca44333ef3ac3250d16bcc
2026-10-12 15:25:58 -07:00
Huilin Chen
d527d18c74 Include cert verify logging directly in HTTPCoroConnector
Summary:
# If this diff is causing a binary size regression, use D124217395 to exclude the additional dependency.

Previously,
- the `CertVerifyLogFn` was set through [ConnectionParams](https://www.internalfb.com/code/fbsource/[46fc8abb7ed7755e15fdfe51a4be37085bbde2ce]/fbcode/proxygen/lib/http/coro/client/HTTPCoroConnector.h?lines=181) exposed to the client. The top level API [HttpService.cpp](https://www.internalfb.com/code/fbsource/[bb37dfa277d43b4f3b5957f6f8d7e5bba8379b0b]/fbcode/proxygen/facebook/lib/http/client/HttpService.cpp?lines=354-355) sets this field, because that's where this library on all internal the facebook dependencies.

This diff
- Makes use of the `CertVerificationHooks`, which has different content for
  - `coro/facebook/CertVerificationHooks.cpp` and
  - `coro/client/CertVerificationHooks.cpp`

- so `HTTPCoroConnector.cpp` can directly use facebook scuba logger for fbcode builds. This way all fbcode builds of this library will have scuba logging, not just the clients directly using `HttpService.cpp`, to prevent things like S713385 from happening.

This diff might cause some clients to have increase binary size because off added binary dependency. D124217395 allows clients to opt out from this dependency.
- This change is necessary for us to have comprehensive logging coverage.
- The usual trick of "weak symbol that is set in //common/init or pulled in through configerator" _may_ miss some things.

Reviewed By: mingtaoy

Differential Revision: D123730004

fbshipit-source-id: dc71bc8001a4c4f2480b267efda6d0b94c5f8738
2026-10-12 10:44:48 -07:00
Open Source Bot
31ab450ed7 Updating hashes
Summary:
GitHub commits:

ec7f3fa76e
2749a05b1e
74a05852ec
18701c1d9c
1499eef91c
63a8b496bb
fbef415272
98115c119d
4ca7910316
ecf8283107
c7a7b53dd4

Reviewed By: ajb85

fbshipit-source-id: 3e7f59c25f0b5e4d98d6f4c78160f23f153afb95
2026-10-12 09:35:51 -07:00
Open Source Bot
63a8b496bb Updating hashes
Summary:
GitHub commits:

5270c5b264
0c320adaa0
b391ed9fbc
e5bba517d0
4dda9bd122
79aaf09d53
0d3feead6d
30fbf77d96
b134806ed9
8aa064a76a
212e67d2f9
2b9da06ee7

Reviewed By: ajb85

fbshipit-source-id: 4b90bbebcf4e7a5a696841b25d70347865dc211b
v2026.10.12.00
2026-10-11 21:39:56 -07:00
Open Source Bot
0d3feead6d Updating hashes
Summary:
GitHub commits:

8865908dd8
05d189476d
dae5b45d0d
d177f95dc1
4b2bd89653
5eeaa5df57
cb0635d207
add48498ed
d56efcf24e
c185c5ab43

Reviewed By: ajb85

fbshipit-source-id: 4e75f169af60b1843d0b557a1ccca05a5369e99f
2026-10-11 09:32:44 -07:00
Open Source Bot
5eeaa5df57 Updating hashes
Summary:
GitHub commits:

2d34ab89a6
86d5f0eafa
5d10e08621
408fb7ab67
820aa0d4b5
f21cfe0290
555ed08028
9855cf3c2d
58401debb2
0368bec5f9
e7f58455d5
5a414808b8

Reviewed By: ajb85

fbshipit-source-id: 22553aec7ff5ed9321cd7dbd7b467da06193b7f7
2026-10-10 09:33:23 -07:00
Kainan Jiang
555ed08028 Fix clean Ubuntu builds
Summary:
Clean Ubuntu builds fail because `bpftool` needs `llvm-strip`, socket-lb retains an unused `<numa.h>` include and libnuma link dependency, and `FileLock.h` uses `nanosleep` without declaring it.

Install `llvm` through socket-lb's Debian package list, remove the unused libnuma dependency from its CMake/getdeps build, and include `<time.h>`. Regenerate the GitHub workflow to remove the obsolete NUMA fetch step and correct the dependency documentation. NUMA routing continues to use caller-supplied CPU-to-NUMA mappings; the internal BUCK dependency remains unchanged.

Failing GitHub job: https://github.com/facebookincubator/socket-lb/actions/runs/37864986872/job/113609474538

Reviewed By: dzhdhr

Differential Revision: D124231954

fbshipit-source-id: 59d39ab9bc3b351dfa5f4bfd30f27676d2fbc661
2026-10-09 11:56:05 -07:00
Open Source Bot
899c0d486b Updating hashes
Summary:
GitHub commits:

12ce5801ae
2446d6994d
28644cf848
59610f475b
7ba92f0e29
09d3bf2297
cb1cc4e204
86842c6cf0
357bf5cdf8
090d4bcbfb
a2ce7578f8
2a0e338ea2
643e6d78ee

Reviewed By: pranavcivi

fbshipit-source-id: 3015b657693f665bb6cbef64170b03246d37dd19
2026-10-09 09:33:36 -07:00
Victor Zverovich
86842c6cf0 Use fbcode_builder's FindXxhash.cmake
Summary:
`thrift/cmake/FindXxhash.cmake` duplicated `build/fbcode_builder/CMake/FindXxhash.cmake`, differing only in the `Xxhash::xxhash` imported target it defines. Move that target into the fbcode_builder module and remove thrift's copy. fbthrift now installs the fbcode_builder module next to `FBThriftConfig.cmake`, as it already does for `FindGflags`, `FindGlog` and `FindLibUnwind`.

The only other user of the fbcode_builder module, cachelib, reads `Xxhash_LIBRARY` and doesn't define `Xxhash::xxhash` itself, so the new target can't collide with it.

Reviewed By: createdbysk

Differential Revision: D123971195

fbshipit-source-id: 18474a61011d23d7374c04208b18febaee0ed1af
2026-10-09 07:05:09 -07:00
Max Noormohammadpour
3b30d4c6a7 Give packsim's GitHub workflow 300 minutes
Summary:
## What
- `opensource/fbcode_builder/manifests/packsim`: `[github.actions] timeout_minutes` goes from 180 to 300, and the comment above it gives the reason and drops the claim that openssl is built from source (its manifest uses the system package on Linux).
- `ai_simulation/.github/workflows/getdeps_linux.yml`: regenerated from the manifest with packsim's usual generator flags; the only change is `timeout-minutes: 300`.

## Why
A cold run builds boost, folly and fbthrift from source, then compiles every packsim unit test and runs all but the heavy ones. Scaled from local build times, that is estimated at 2 to 3 hours on a 2-core runner with an empty cache, too close to the old 180-minute limit. 300 stays under GitHub's 360-minute job limit and can be lowered once green runs report real figures.

Differential Revision: D124256112

fbshipit-source-id: edbee764fe837f5b4f8cd5356e2866813788f5b3
2026-10-08 22:08:15 -07:00
Nigel Haney
84717ad3ef Support in-memory PEM client cert in HTTPCoroConnector
Summary: Adds in-memory PEM alternatives to the file-path client cert/key fields in `HTTPCoroConnector::TLSParams`, so callers can supply client cert material that is already in memory (e.g. a per-connection client cert) without staging it on disk.

Reviewed By: jalopezsilva

Differential Revision: D112883930

fbshipit-source-id: 4675d0fd83df4e329a286aa983fc5d130e82be76
2026-10-08 18:11:47 -07:00
Kainan Jiang
5800e48db4 Fetch pinned bpftool tag in shallow clones
Summary:
A fresh socket-lb GitHub runner fails in `Fetch bpftool`: getdeps clones the default branch with `--depth=1`, then runs `git rev-parse v7.4.0` before fetching that tag. Set the manifest's `branch` to the existing `v7.4.0` pin so the initial shallow clone contains the requested release.

The dependency version and build configuration are unchanged.

Failing run: https://github.com/facebookincubator/socket-lb/actions/runs/37854893377/job/113576600015

Reviewed By: dzhdhr

Differential Revision: D124210806

fbshipit-source-id: a6822082eb5620b2eb27837e0289ded74a03c2da
2026-10-08 17:22:21 -07:00
Hani Damlaj
164f9033b2 delete HttpTxn::onPushedTransaction
Summary: all HttpTxnHandler::onPushedTransaction overrides have been removed from the codebase, so deleting the default no-op implementation in HttpTxnHandler base class

Differential Revision: D124145825

fbshipit-source-id: 2c9bdf1bc93b371bd28713958891faa641832b19
2026-10-08 14:46:16 -07:00
Scott Smith
4243177913 Fix FBThrift Python runtime packaging
Summary:
> Note: FBThriftPython is only used by FBOSS builds, so this diff does not affect any other existing getdeps projects.

# Context

`add_fb_thrift_python_executable()` discovers the FBThrift wheel through `thrift.__file__`, but `thrift` is a namespace package and has no concrete file. The helper also packages `thrift/python` without auditwheel's `thrift.libs`, so native extensions can fail to load their Folly dependencies.

# Mitigation

Locate site-packages through the concrete `thrift.python.types` module with `PYTHONPATH` unset. Validate and package both `thrift/python` and `thrift.libs`, and remove existing runtime links before recreating them so rebuilds remain safe.

Reviewed By: AarjunC

Differential Revision: D123128835

fbshipit-source-id: 66a371f4689b3a432e1d8c25a9bc97d51ccba248
2026-10-08 13:12:56 -07:00
Open Source Bot
7fa3c67e1e Updating hashes
Summary:
GitHub commits:

8cac6f7269
bad2b69540
4d9ac345b3
0b1c8f2328
1f1391f4e6
31b516b69b
5564e8c072
ef29c6c7f4
052b0dbb10
dee3b288f0
28094281ef
aac52e3aeb
db11889cad

Reviewed By: pranavcivi

fbshipit-source-id: 2ce754cabfb7ae1b372e495c27ec23f0fe8cf23d
2026-10-08 09:33:56 -07:00
Open Source Bot
ef29c6c7f4 Updating hashes
Summary:
GitHub commits:

ab104be641
ab1c8493c3
933b1a046f
24cd5eed7c
0c515a4048
4d739cf131
9db811c348
5649ee0f0b
875c8297a4
6ffb42d78e
d414bb898e
a12a7f07b9
5bf936ea42

Reviewed By: pranavcivi

fbshipit-source-id: 6f4e5b73e398b88f37b552804463ac82f8412e8d
2026-10-07 09:33:12 -07:00
Darrin D'Mello
5649ee0f0b Skip codec counters no session can record
Summary:
`TLHTTPCodecStats` creates every frame counter on every instance, but some frames can't occur for a given protocol or direction. `TLProxyStats` now passes the protocol and direction of each of its four instances, and the stats skip these:
- **HTTP/3:**
  - RST_STREAM, PING and WINDOW_UPDATE, which [HQ codecs leave to the QUIC transport](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/codec/HQFramedCodec.h?lines=160-166,178-191,205-211).
  - Ingress GOAWAY codes other than `NO_ERROR`, since HQ GOAWAY frames carry no code and [the control codec reports NO_ERROR](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/codec/HQControlCodec.cpp?lines=152).
  - Egress GOAWAY codes other than `NO_ERROR` ([HQSession](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/session/HQSession.cpp?lines=796-797)) and `PROTOCOL_ERROR` ([coro](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/coro/HTTPCoroSession.cpp?lines=1408-1412)).
  - Upstream ingress priority, since [only clients send PRIORITY_UPDATE](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/codec/HQControlCodec.cpp?lines=69-79).
- **Downstream:** ingress `syn_reply` and `push_promise`, and egress `syn_stream`. The filter counts all downstream ingress as `syn_stream` and all egress as `syn_reply` ([filter](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/stats/HTTPCodecStatsFilter.cpp?lines=33-43,102-115)), and codecs reject a PUSH_PROMISE sent to a server ([H2](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/codec/HTTP2Codec.cpp?lines=865-868), [HQ](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/codec/HQStreamCodec.cpp?lines=69-73)).
- **Upstream:** egress `syn_reply` and `push_promise`, since every push path checks `isDownstream()` ([HTTPSession](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/session/HTTPSession.cpp?lines=566), [coro](https://www.internalfb.com/code/fbsource/[335fa6e737ff6d5533dca2e6cd815835018d7d07]/fbcode/proxygen/lib/http/coro/HTTPCoroSession.cpp?lines=3732-3734)).

This also deletes the `ex_stream` counters from `TLHTTPCodecStats` and `AsyncHTTPCodecStats`; nothing calls `record{In,E}gressExStream`.

All 282 keys were 0 on every RevProxy task for the last 14 days ([receipts](https://www.internalfb.com/intern/paste/P2533245134/)). These are protocol facts, so EdgeTee, BigCache and reload_proxy2, which share `TLProxyStats`, lose the same counters. The one-argument constructor still creates everything. Recording a skipped counter anyway logs an error naming it, rate limited with `XLOG_EVERY_N(ERR, 1000)`, so a broken assumption shows up in the logs instead of silently dropping counts.

Fleet-wide for RevProxy this saves 150.1M per-task timeseries in ODS category 849 (`proxygen`) and 9.6M aggregate timeseries in category 272 (`traffic`), per `di.ods_gorilla_unique` on 2026-09-29. None of these keys are in category 2143 (`proxygen_customers`).

The H2 prospect stats tests checked that three of these counters stayed unchanged. This drops those checks.

Reviewed By: DavidLu1997

Differential Revision: D123138311

fbshipit-source-id: 44a18faed3c2ce974cd040622c9be9c34412af7c
2026-10-06 19:15:08 -07:00
Kevin Yakar
d8d72ad02c Add swig3 getdeps manifest for vendor SDK builds
Summary:
Some vendor SAI SDKs generate Python wrappers as part of their build and require SWIG 3, while distributions only package SWIG 4. This pins upstream SWIG 3.0.12 and backports the Python 3 fixes upstream only shipped in SWIG 4, so an SDK build can take it from getdeps rather than a hand-built copy.

Nothing depends on it; FBOSS itself does not need SWIG.

Reviewed By: srikrishnagopu

Differential Revision: D123481792

fbshipit-source-id: c72667ef03c8c1918e65810e7aaea3d6f8b394da
2026-10-06 17:11:01 -07:00
Hani Damlaj
272505a6a3 deprecate ResponseHandler::newPushedResponse
Summary:
Continuing the http/2 and http/3 PUSH deprecation in proxygen/lib --

This diff removes all overrides of ::newPushedResponse & adds a default implementation in ResponseHandler that returns a kUnknownError

Reviewed By: Jason-M-Fugate

Differential Revision: D121245124

fbshipit-source-id: 917b1434e5b3d390a2a8f6b5ffd7f7ed6d199db4
2026-10-06 12:51:52 -07:00
Alan Frindell
b40f5d6b76 Gate const c-ares callback buffer on 1.34.7 only (#650)
Summary:
Pull Request resolved: https://github.com/facebook/proxygen/pull/650

c-ares 1.34.7 made `ares_callback`'s buffer const; 1.34.8 reverted it (c-ares #1245). Only 1.34.7 has the const signature, so gate on it exactly rather than >=.

Fixes https://github.com/facebook/proxygen/issues/649

#proxygen

Reviewed By: sandarsh

Differential Revision: D123498859

fbshipit-source-id: 4debc027416932343df5e1178fba7e6c6833859e
2026-10-06 11:13:14 -07:00
Open Source Bot
d331b4bc0f Updating hashes
Summary:
GitHub commits:

d02b39afc2
188a00d7d0
ac07e92b65
7bd73258b7
70489ffb99
a1154cb46a
2fd43888e2
c707d7ec0f
86d94a4c79
31d92932f2
c2a16f5f33
2b66f4cfde
2b40941ee7

Reviewed By: pranavcivi

fbshipit-source-id: 5ebd5ce68a2a902ab89c0b11843eba4f5b24cc4a
2026-10-06 09:33:41 -07:00
generatedunixname898294613133534
c707d7ec0f Fix CQS signal facebook-hte-CArray in xplat/proxygen/lib/http
Differential Revision: D123384624

fbshipit-source-id: 44cfe5be09eac538014a6e7ff80fb2539695ae0e
2026-10-06 06:28:22 -07:00
Will Wang
d8891d339a Check URL bytes without an early return, so the scan vectorizes
Summary:
The result is the same for every input. This is effectively a refactor.

`proxygen::validateURL` (`lib/utils/UtilInl.h`) checked a URL one byte at a time and returned at the first control byte, space, DEL or, in `STRICT` mode, byte above 0x7f.

Thjs early return keeps clang from vectorizing the loop. Each mode now has its own loop that combines the per-byte test over the whole URL with `&` and returns once at the end, so both loops vectorize.

The only difference is that an invalid URL is scanned to its end, which is rare and still fast.

**Benchmark.** Temporary harness, not committed: `mode/opt` without a profile, 4,096 printable URL-like strings per length band, warm and interleaved, median of 7 runs.

| URL length | `STRICT`, old → new | `STRICT_COMPAT`, old → new |
|---|---|---|
| 20-40 B | 27.8 → 8.0 ns | 28.5 → 8.6 ns |
| 60-120 B | 70.8 → 9.6 ns | 71.3 → 10.6 ns |
| 120-300 B | 155.0 → 10.9 ns | 155.1 → 12.2 ns |
| 300-1000 B | 467.5 → 17.5 ns | 465.2 → 21.4 ns |

Reviewed By: bemasc

Differential Revision: D122863955

fbshipit-source-id: 4553ffe97210c9909fbc5a60735366bc561e6496
2026-10-06 05:59:38 -07:00
generatedunixname898294613133534
beba204d61 Fix CQS signal facebook-hte-CArray in xplat/proxygen/lib/utils
Differential Revision: D122968756

fbshipit-source-id: 86c102ea2b4f9f837b2a386712a3a7e1b04131d9
2026-10-05 15:37:53 -07:00
generatedunixname897482343032913
767c05e50f Fix CQS signal clang-diagnostic-shadow in xplat/proxygen/lib/http
Differential Revision: D123364067

fbshipit-source-id: 419302874cdfbe13416a3d21419ce54212aa57fa
2026-10-05 11:38:11 -07:00