Skip to content
main
Switch branches/tags
Code

Latest commit

…overPolicy maxErrorTries limit

Summary:
If there is only 1 child in failover route, when that fails we return the original error.

If there are more children to failover to but we hit failoverPolicy_.maxErrorTries that prevent failover then we return an empty reply because failoverReply isn't correctly initialized.

This fixes that by keep the behavior consistent with the case where there are no children i.e. return the original reply.

Reviewed By: alikhtarov, vrishal

Differential Revision: D36617004

fbshipit-source-id: 928367482794f08bb0c8b31e55a8dd316ddea281
c4e9e5f

Git stats

Files

Permalink
Failed to load latest commit information.

Mcrouter Build Status

Support Ukraine License

Mcrouter (pronounced mc router) is a memcached protocol router for scaling memcached deployments. It's a core component of cache infrastructure at Facebook and Instagram where mcrouter handles almost 5 billion requests per second at peak.

Mcrouter is developed and maintained by Facebook.

See https://github.com/facebook/mcrouter/wiki to get started.

Quick start guide

New! Ubuntu package available

Currently, we support Ubuntu Bionic (18.04) amd64. Here is how to install it:

Add the repo key:

$ wget -O - https://facebook.github.io/mcrouter/debrepo/bionic/PUBLIC.KEY | sudo apt-key add

Add the following line to apt sources file /etc/apt/sources.list

deb https://facebook.github.io/mcrouter/debrepo/bionic bionic contrib

Update the local repo cache:

$ sudo apt-get update

Install mcrouter:

$ sudo apt-get install mcrouter

Installing From Source

See https://github.com/facebook/mcrouter/wiki/mcrouter-installation for more detailed installation instructions.

Mcrouter depends on folly, wangle, fizz, and fbthrift.

The installation is a standard autotools flow:

$ autoreconf --install
$ ./configure
$ make
$ sudo make install
$ mcrouter --help

Assuming you have a memcached instance on the local host running on port 5001, the simplest mcrouter setup is:

$ mcrouter \
    --config-str='{"pools":{"A":{"servers":["127.0.0.1:5001"]}},
                  "route":"PoolRoute|A"}' \
    -p 5000
$ echo -ne "get key\r\n" | nc 0 5000

(nc is the GNU Netcat, http://netcat.sourceforge.net/)

Features

  • Memcached ASCII protocol
  • Connection pooling
  • Multiple hashing schemes
  • Prefix routing
  • Replicated pools
  • Production traffic shadowing
  • Online reconfiguration
  • Flexible routing
  • Destination health monitoring/automatic failover
  • Cold cache warm up
  • Broadcast operations
  • Reliable delete stream
  • Multi-cluster support
  • Rich stats and debug commands
  • Quality of service
  • Large values
  • Multi-level caches
  • IPv6 support
  • SSL support

Links

Documentation: https://github.com/facebook/mcrouter/wiki Engineering discussions and support: https://www.facebook.com/groups/mcrouter

License

Copyright (c) Facebook, Inc. and its affiliates.

Licensed under the MIT license: https://github.com/facebook/mcrouter/blob/master/LICENSE