mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-18 09:08:48 +02:00
![twitter-team](/assets/img/avatar_default.png)
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
61 lines
2.1 KiB
Scala
61 lines
2.1 KiB
Scala
package com.twitter.product_mixer.component_library.module
|
|
|
|
import com.twitter.conversions.DurationOps._
|
|
import com.twitter.conversions.PercentOps._
|
|
import com.twitter.finagle.ThriftMux
|
|
import com.twitter.finagle.thriftmux.MethodBuilder
|
|
import com.twitter.finatra.mtls.thriftmux.modules.MtlsClient
|
|
import com.twitter.inject.Injector
|
|
import com.twitter.inject.annotations.Flags
|
|
import com.twitter.inject.thrift.modules.ThriftMethodBuilderClientModule
|
|
import com.twitter.search.earlybird.{thriftscala => t}
|
|
import com.twitter.util.Duration
|
|
import org.apache.thrift.protocol.TCompactProtocol
|
|
|
|
object EarlybirdModule
|
|
extends ThriftMethodBuilderClientModule[
|
|
t.EarlybirdService.ServicePerEndpoint,
|
|
t.EarlybirdService.MethodPerEndpoint
|
|
]
|
|
with MtlsClient {
|
|
final val EarlybirdTimeoutPerRequest = "earlybird.timeout_per_request"
|
|
final val EarlybirdTimeoutTotal = "earlybird.timeout_total"
|
|
|
|
flag[Duration](
|
|
name = EarlybirdTimeoutPerRequest,
|
|
default = 200.milliseconds,
|
|
help = "Timeout per request for Earlybird")
|
|
|
|
flag[Duration](
|
|
name = EarlybirdTimeoutTotal,
|
|
default = 400.milliseconds,
|
|
help = "Timeout total for Earlybird")
|
|
|
|
override val dest = "/s/earlybird-root-superroot/root-superroot"
|
|
override val label = "earlybird"
|
|
|
|
override protected def configureMethodBuilder(
|
|
injector: Injector,
|
|
methodBuilder: MethodBuilder
|
|
): MethodBuilder = {
|
|
val timeOutPerRequest: Duration = injector
|
|
.instance[Duration](Flags.named(EarlybirdTimeoutPerRequest))
|
|
val timeOutTotal: Duration = injector.instance[Duration](Flags.named(EarlybirdTimeoutTotal))
|
|
methodBuilder
|
|
// See TL-14313 for load testing details that led to 200ms being selected as request timeout
|
|
.withTimeoutPerRequest(timeOutPerRequest)
|
|
.withTimeoutTotal(timeOutTotal)
|
|
.idempotent(5.percent)
|
|
}
|
|
|
|
override def configureThriftMuxClient(
|
|
injector: Injector,
|
|
client: ThriftMux.Client
|
|
): ThriftMux.Client =
|
|
super
|
|
.configureThriftMuxClient(injector, client)
|
|
.withProtocolFactory(new TCompactProtocol.Factory())
|
|
|
|
override protected def sessionAcquisitionTimeout: Duration = 1.seconds
|
|
}
|