GitShow/facebook/mcrouter
facebook

mcrouter

Mcrouter is a memcached protocol router for scaling memcached deployments.

by facebook
Star on GitHubFork

C++

3.3k stars554 forks400 contributorsActive · 1d agoSince 2014v0.41.0-releaseMIT

Meet the team

See all 400 on GitHub →
andreazevedo
andreazevedo412 contributions
jmswen
jmswen209 contributions
stuclar
stuclar184 contributions
alikhtarov
alikhtarov152 contributions
spalamarchuk
spalamarchuk144 contributions
disylh
disylh95 contributions
glamtechie
glamtechie75 contributions
yfeldblum
yfeldblum71 contributions

Languages

View on GitHub →
C++91.8%
Python3.7%
C1.1%
M41%
Thrift0.8%
Shell0.5%
Other1.1%

Commit activity

Last 12 weeks · 56 commits

Full graph →

Community health

4 of 6 standards met

Community profile →
75
✓README✓License✓Contributing✓Code of Conduct○Issue Template○PR Template

Recent PRs & issues

Active · Last activity 1d ago
See all on GitHub →
durvesh1992
Fix typos in comments and option help textOpenPR

This batches a handful of high-confidence spelling fixes in code comments, a doc-comment, and one CLI option help string. All changes are comment / string-only — no logic, behavior, or public API changes. Verified by inspection. British spellings (e.g. , ) were intentionally left untouched.

durvesh1992 · 2d ago
mszabo-wikia
Add initial support for memcached metaget (mg)OpenPR

Upstream OSS memcached has had support for meta commands for a few years now, with a pending feature request to have mcrouter support them (#335). Since they greatly simplify implementing common caching strategies and also synergize well with some mcrouter features (e.g. WarmupRoute could benefit from ), it makes sense to implement these. This PR adds basic support needed for the metaget () command to the ASCII parser and serializer and the shared Thrift IDL, without updating individual route logic yet (beyond what's needed to get BigValueRoute to compile). So an mcrouter built from this branch should be able to relay commands but the behavior might not yet make sense for all routes. The ASCII parsing notably deviates from the upstream spec in that flags aren't returned in the same order as given in the request. It's unclear to me based on the wording there whether this is meant to be strict or not; if clients don't rely on this behavior it's probably best to leave it as-is instead of convoluted logic to pass the flag order onto AsciiSerializer somehow. Note:** I realize Memcache.thrift and assorted files are generated but since the Carbon codegen is private, I opted to add the needed code by hand to this PR so that it compiles for OSS users. I can make another PR without those changes, if needed.

mszabo-wikia · 3mo ago
mszabo-wikia
Add test targets to the CMake buildOpenPR

Extend the CMake build system added in D91269570 to also build / run tests. I mainly went for one listfile per subdirectory but lumped in smaller disparate tests under mcrouter/lib into a single target for simplicity. I omitted tests under mcrouter/lib/carbon/ as their utility for OSS mcrouter is limited compared to the scaffolding needed to run them (they interdepend on utilities from mcrouter/lib/network/test). No changes to existing test files beyond the minimum needed to fix compilation, so there are many expected failures in an OSS run. Tested using a fresh copy of fbcode_builder.

mszabo-wikia · 3mo ago

Recent fixes

View closed PRs →
mszabo-wikia
Take package version override from `MCROUTER_PACKAGE_VERSION`MergedPR

The build system currently takes an optional package version override via the define but this is rather generic and also used by other projects e.g. fizz. If fed into via , it inadvertently gets used by these other projects too and can cause errors if the version override format doesn't match their expectations. So use a project-specific prefix instead.

mszabo-wikia · 1w ago
ghuryejay
add kcb_identity field on RequestCommon + thrift header write (#480)MergedPR

Summary: Adds the field to (mirrors the existing and fields), and updates the carbon compiler template to emit a block in every generated . This is the wire-format support for Generalized KCB: callers set and the transport writes the thrift header on the outgoing thrift call so the UCache server can bind the cache key to the named ACL group Reviewed By: antonf Differential Revision: D104245265

ghuryejay · 1mo ago
speb-meta
Propagate `PrivacyLibAgenticContext` through Carbon requests and Thrift transport headers (#479)MergedPR

Summary: X-link: https://github.com/facebook/hhvm/pull/9778 X-link: https://github.com/facebookresearch/DCPerf/pull/621 Propagate the as a Thrift header from clients through mcrouter to DevProxy. We capture the context before enqueuing the request in the mcrouter message queue. And then we set the header in the mcrouter Thrift transport layer. Diagram: We are focusing on Thrift transport exclusively as we are trying to close gaps in DevProxy layer. Reviewed By: ghostonhuang Differential Revision: D105269091

speb-meta · 1mo ago
Structured data for AI agents

Repository: facebook/mcrouter. Description: Mcrouter is a memcached protocol router for scaling memcached deployments. Stars: 3334, Forks: 554. Primary language: C++. Languages: C++ (91.8%), Python (3.7%), C (1.1%), M4 (1%), Thrift (0.8%). License: MIT. Latest release: v0.41.0-release (6y ago). Open PRs: 19, open issues: 97. Last activity: 1d ago. Community health: 75%. Top contributors: andreazevedo, jmswen, stuclar, alikhtarov, spalamarchuk, disylh, glamtechie, yfeldblum, andriigrynenko, ngoyal and others.

·@ofershap

Replace github.com with gitshow.dev