4 of 6 standards met
Part of the difficulty in building mcrouter as a third party stems from the fact that it uses an autotools-based build system. While other Meta OSS projects have adopted to make it easier to build a project with all required dependencies, this tool was primarily written with CMake in mind and unfortunately wouldn't work with mcrouter's build system without making mcrouter-specific accommodations (e.g. explicitly passing in the Thrift compiler path and so on). So, introduce a CMake-based build system for mcrouter and wire it up with . This also allows for the tests (which had been nonfunctional in the autotools build for years) to be run in OSS CI via CMake/CTest, after some fixes for the GH Actions environment and disabling Meta-specific functionality in an OSS context. There are no changes to non-test/build files apart from the elimination of the generated . Use globbing extensively for generating source file lists in CMake files. While this may be a controversial approach, I think in this specific case the benefits outweigh the drawbacks, since this project doesn't use CMake internally so globbing can reduce the amount of times the OSS build needs to be fixed after the fact because a new source file wasn't added to it. To assist reviewing, I've attempted to break this change into reasonable commits. The very first commit simply adds a vendored copy of from a recent Folly checkout, hence the large diff size. I've not yet removed autotools paraphernalia to reduce the amount of changes in this PRβthat can be done as a followup.
Repository: facebook/mcrouter. Description: Mcrouter is a memcached protocol router for scaling memcached deployments. Stars: 3333, Forks: 551. Primary language: C++. Languages: C++ (91.9%), Python (3.7%), C (1.1%), M4 (1%), Thrift (0.6%). License: MIT. Latest release: v0.41.0-release (6y ago). Open PRs: 21, open issues: 97. Last activity: 1d ago. Community health: 75%. Top contributors: andreazevedo, jmswen, stuclar, alikhtarov, spalamarchuk, disylh, glamtechie, yfeldblum, ngoyal, int and others.
Last 12 weeks Β· 41 commits
Summary Upgrade GitHub Actions to their latest versions to ensure compatibility with Node 24, as Node 20 will reach end-of-life in April 2026. Changes Context Per GitHub's announcement, Node 20 is being deprecated and runners will begin using Node 24 by default starting March 4th, 2026. Why this matters Node 20 EOL: April 2026 Node 24 default: March 4th, 2026 Action**: Update to latest action versions that support Node 24 Security Note Actions that were previously pinned to commit SHAs remain pinned to SHAs (updated to the latest release SHA) to maintain the security benefits of immutable references. Testing These changes only affect CI/CD workflow configurations and should not impact application functionality. The workflows should be tested by running them on a branch before merging.
Since D73554883, mcrouter no longer converts GET errors to misses, which necessitates updating some relevant tests: Update test_mcrouter_serialized and test_mcrouter_states to expect an error response instead of a miss where necessary. Update CarbonRouterClient.basicUsageRemoteThreadClientThreadAffinityMulti to also accept a CONNECT_TIMEOUT as an expected error response (this may be the case on some local systems and GitHub Actions). Make the assertion less cryptic. Original errors from CI: