the-algorithm/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/ManhattanClientsModule.scala

42 lines
1.3 KiB
Scala

package com.twitter.home_mixer.module
import com.google.inject.Provides
import com.twitter.conversions.DurationOps._
import com.twitter.finagle.mtls.authentication.ServiceIdentifier
import com.twitter.home_mixer.param.HomeMixerInjectionNames.RealGraphManhattanEndpoint
import com.twitter.inject.TwitterModule
import com.twitter.inject.annotations.Flag
import com.twitter.storage.client.manhattan.kv._
import com.twitter.timelines.config.ConfigUtils
import com.twitter.util.Duration
import javax.inject.Named
import javax.inject.Singleton
object ManhattanClientsModule extends TwitterModule with ConfigUtils {
private val ApolloDest = "/s/manhattan/apollo.native-thrift"
private final val Timeout = "mh_real_graph.timeout"
flag[Duration](Timeout, 150.millis, "Timeout total")
@Provides
@Singleton
@Named(RealGraphManhattanEndpoint)
def providesRealGraphManhattanEndpoint(
@Flag(Timeout) timeout: Duration,
serviceIdentifier: ServiceIdentifier
): ManhattanKVEndpoint = {
lazy val client = ManhattanKVClient(
appId = "real_graph",
dest = ApolloDest,
mtlsParams = ManhattanKVClientMtlsParams(serviceIdentifier = serviceIdentifier),
label = "real-graph-data"
)
ManhattanKVEndpointBuilder(client)
.maxRetryCount(2)
.defaultMaxTimeout(timeout)
.build()
}
}