Package

com.twitter.finagle

filter

Permalink

package filter

Visibility
  1. Public
  2. All

Type Members

  1. class DtabStatsFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    Adds a Stat, dtab/local/size, that tracks the size of Dtab.local for all requests with a non-empty Dtab.

  2. class ExceptionSourceFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    A com.twitter.finagle.Filter that sources exceptions.

    A com.twitter.finagle.Filter that sources exceptions. The serviceName field of any com.twitter.finagle.SourcedException thrown by the underlying com.twitter.finagle.Service is set to the serviceName argument of this filter.

  3. trait LogFormatter[-Req, Rep] extends AnyRef

    Permalink
  4. trait LoggingFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    A com.twitter.finagle.Filter that logs all requests according to formatter.

  5. class MaskCancelFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    A com.twitter.finagle.Filter that prevents cancellations from propagating to any subsequent Services.

    A com.twitter.finagle.Filter that prevents cancellations from propagating to any subsequent Services. i.e. when Future.raise is invoked on the result of this filter's apply method, the interrupt will not be propagated to the service. This is useful for lightweight protocols for which finishing a request is preferable to closing and reesstablishing a connection.

  6. class MkJvmFilter extends AnyRef

    Permalink

    Given a Jvm, create filters to record GCs (and other JVM events in the future).

  7. class MonitorFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    A com.twitter.finagle.Filter that handles exceptions (incl.

    A com.twitter.finagle.Filter that handles exceptions (incl. raw) thrown by the subsequent com.twitter.finagle.Service. Exceptions are handled according to the argument com.twitter.util.Monitor.

  8. class NackAdmissionFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    This filter probabilistically drops requests if the nack rate exceeds the nackRateThreshold.

    This filter probabilistically drops requests if the nack rate exceeds the nackRateThreshold. In the case that most or all of the cluster which the client is speaking to is overloaded, this will help the cluster cool off.

    The implementation of this filter is heavily inspired by Chapter 21, section "Client-Side Throttling" of O'Reilly's "Site Reliability Engineering: How Google Runs Production Systems", by Beyer, Jones, Petoff, and Murphy, 1e.

    NOTE: Here is a brief summary of the configurable params.

    A configuration with a nackRateThreshold of N% and a window of duration W roughly translates as, "start dropping some requests to the cluster when the nack rate averages at least N% over a window of duration W."

    Here are some examples of situations with param values chosen to make the filter useful:

    - Owners of Service A examine their service's nack rate over several days and find that it is almost always under 10% and rarely above 1% (e.g., during traffic spikes) or 5% (e.g., during a data center outage). They do not want to preemptively drop requests unless the cluster sees an extreme overload situation so they choose a nack rate threshold of 20%. And in such a situation they want the filter to act relatively quickly, so they choose a window of 30 seconds.

    - Owners of Service B observe that excess load typically causes peak nack rates of around 25% for up to 60 seconds. They want to be aggressive about avoiding cluster overload and don’t mind dropping some innocent requests during mild load so they choose a window of 10 seconds and a threshold of 0.15 (= 15%).

  9. class RequestMeterFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    A com.twitter.finagle.Filter that rate limits requests to a fixed rate over time by using the com.twitter.concurrent.AsyncMeter implementation.

    A com.twitter.finagle.Filter that rate limits requests to a fixed rate over time by using the com.twitter.concurrent.AsyncMeter implementation. It can be used for slowing down access to throttled resources. Requests that cannot be enqueued to await a permit are failed immediately with a com.twitter.finagle.Failure that signals that the work was never done, so it's safe to reenqueue.

    NOTE: If you're just trying not to be overwhelmed, you almost certainly want to use com.twitter.finagle.filter.RequestSemaphoreFilter instead, because RequestMeterFilter doesn't work well with "real" resources that are sometimes faster or slower (like a service that you're depending on that sometimes slows when it takes bursty traffic). This is better for resources that are artificially bounded, like a rate-limited API.

  10. class RequestSemaphoreFilter[Req, Rep] extends SimpleFilter[Req, Rep]

    Permalink

    A com.twitter.finagle.Filter that restricts request concurrency according to the given com.twitter.concurrent.AsyncSemaphore.

    A com.twitter.finagle.Filter that restricts request concurrency according to the given com.twitter.concurrent.AsyncSemaphore. Requests that are unable to acquire a permit are failed immediately with a com.twitter.finagle.Failure that signals a restartable or idempotent process.

Ungrouped