mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-01 08:48:46 +02:00
ef4c5eb65e
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.
68 lines
2.5 KiB
Scala
68 lines
2.5 KiB
Scala
package com.twitter.cr_mixer.module
|
|
|
|
import com.google.inject.Provides
|
|
import com.google.inject.Singleton
|
|
import com.google.inject.name.Named
|
|
import com.twitter.inject.TwitterModule
|
|
import com.twitter.simclusters_v2.common.UserId
|
|
import com.twitter.conversions.DurationOps._
|
|
import com.twitter.cr_mixer.model.ModuleNames
|
|
import com.twitter.cr_mixer.param.decider.CrMixerDecider
|
|
import com.twitter.finagle.stats.StatsReceiver
|
|
import com.twitter.finagle.memcached.{Client => MemcachedClient}
|
|
import com.twitter.storage.client.manhattan.kv.ManhattanKVClientMtlsParams
|
|
import com.twitter.storehaus.ReadableStore
|
|
import com.twitter.storehaus_internal.manhattan.Apollo
|
|
import com.twitter.storehaus_internal.manhattan.ManhattanRO
|
|
import com.twitter.storehaus_internal.manhattan.ManhattanROConfig
|
|
import com.twitter.storehaus_internal.util.ApplicationID
|
|
import com.twitter.storehaus_internal.util.DatasetName
|
|
import com.twitter.storehaus_internal.util.HDFSPath
|
|
import com.twitter.bijection.scrooge.BinaryScalaCodec
|
|
import com.twitter.cr_mixer.param.decider.DeciderKey
|
|
import com.twitter.hermit.store.common.DeciderableReadableStore
|
|
import com.twitter.hermit.store.common.ObservedMemcachedReadableStore
|
|
import com.twitter.wtf.candidate.thriftscala.CandidateSeq
|
|
|
|
object RealGraphStoreMhModule extends TwitterModule {
|
|
|
|
@Provides
|
|
@Singleton
|
|
@Named(ModuleNames.RealGraphInStore)
|
|
def providesRealGraphStoreMh(
|
|
decider: CrMixerDecider,
|
|
statsReceiver: StatsReceiver,
|
|
manhattanKVClientMtlsParams: ManhattanKVClientMtlsParams,
|
|
@Named(ModuleNames.UnifiedCache) crMixerUnifiedCacheClient: MemcachedClient,
|
|
): ReadableStore[UserId, CandidateSeq] = {
|
|
|
|
implicit val valueCodec = new BinaryScalaCodec(CandidateSeq)
|
|
val underlyingStore = ManhattanRO
|
|
.getReadableStoreWithMtls[UserId, CandidateSeq](
|
|
ManhattanROConfig(
|
|
HDFSPath(""),
|
|
ApplicationID("cr_mixer_apollo"),
|
|
DatasetName("real_graph_scores_apollo"),
|
|
Apollo),
|
|
manhattanKVClientMtlsParams
|
|
)
|
|
|
|
val memCachedStore = ObservedMemcachedReadableStore
|
|
.fromCacheClient(
|
|
backingStore = underlyingStore,
|
|
cacheClient = crMixerUnifiedCacheClient,
|
|
ttl = 24.hours,
|
|
)(
|
|
valueInjection = valueCodec,
|
|
statsReceiver = statsReceiver.scope("memCachedUserRealGraphMh"),
|
|
keyToString = { k: UserId => s"uRGraph/$k" }
|
|
)
|
|
|
|
DeciderableReadableStore(
|
|
memCachedStore,
|
|
decider.deciderGateBuilder.idGate(DeciderKey.enableRealGraphMhStoreDeciderKey),
|
|
statsReceiver.scope("RealGraphMh")
|
|
)
|
|
}
|
|
}
|