129 lines
5.1 KiB
Scala
129 lines
5.1 KiB
Scala
package com.twitter.home_mixer
|
|
|
|
import com.google.inject.Module
|
|
import com.twitter.finagle.Filter
|
|
import com.twitter.finatra.annotations.DarkTrafficFilterType
|
|
import com.twitter.finatra.http.HttpServer
|
|
import com.twitter.finatra.http.routing.HttpRouter
|
|
import com.twitter.finatra.mtls.http.{Mtls => HttpMtls}
|
|
import com.twitter.finatra.mtls.thriftmux.Mtls
|
|
import com.twitter.finatra.mtls.thriftmux.modules.MtlsThriftWebFormsModule
|
|
import com.twitter.finatra.thrift.ThriftServer
|
|
import com.twitter.finatra.thrift.filters._
|
|
import com.twitter.finatra.thrift.routing.ThriftRouter
|
|
import com.twitter.home_mixer.controller.HomeThriftController
|
|
import com.twitter.home_mixer.federated.HomeMixerColumn
|
|
import com.twitter.home_mixer.module._
|
|
import com.twitter.home_mixer.param.GlobalParamConfigModule
|
|
import com.twitter.home_mixer.product.HomeMixerProductModule
|
|
import com.twitter.home_mixer.{thriftscala => st}
|
|
import com.twitter.product_mixer.component_library.module.AccountRecommendationsMixerModule
|
|
import com.twitter.product_mixer.component_library.module.DarkTrafficFilterModule
|
|
import com.twitter.product_mixer.component_library.module.EarlybirdModule
|
|
import com.twitter.product_mixer.component_library.module.ExploreRankerClientModule
|
|
import com.twitter.product_mixer.component_library.module.GizmoduckClientModule
|
|
import com.twitter.product_mixer.component_library.module.OnboardingTaskServiceModule
|
|
import com.twitter.product_mixer.component_library.module.SocialGraphServiceModule
|
|
import com.twitter.product_mixer.component_library.module.TimelineRankerClientModule
|
|
import com.twitter.product_mixer.component_library.module.TimelineScorerClientModule
|
|
import com.twitter.product_mixer.component_library.module.TimelineServiceClientModule
|
|
import com.twitter.product_mixer.component_library.module.TweetImpressionStoreModule
|
|
import com.twitter.product_mixer.component_library.module.TweetMixerClientModule
|
|
import com.twitter.product_mixer.component_library.module.UserSessionStoreModule
|
|
import com.twitter.product_mixer.core.controllers.ProductMixerController
|
|
import com.twitter.product_mixer.core.module.LoggingThrowableExceptionMapper
|
|
import com.twitter.product_mixer.core.module.ProductMixerModule
|
|
import com.twitter.product_mixer.core.module.stringcenter.ProductScopeStringCenterModule
|
|
import com.twitter.strato.fed.StratoFed
|
|
import com.twitter.strato.fed.server.StratoFedServer
|
|
|
|
object HomeMixerServerMain extends HomeMixerServer
|
|
|
|
class HomeMixerServer
|
|
extends StratoFedServer
|
|
with ThriftServer
|
|
with Mtls
|
|
with HttpServer
|
|
with HttpMtls {
|
|
override val name = "home-mixer-server"
|
|
|
|
override val modules: Seq[Module] = Seq(
|
|
AccountRecommendationsMixerModule,
|
|
AdvertiserBrandSafetySettingsStoreModule,
|
|
BlenderClientModule,
|
|
ClientSentImpressionsPublisherModule,
|
|
ConversationServiceModule,
|
|
EarlybirdModule,
|
|
ExploreRankerClientModule,
|
|
FeedbackHistoryClientModule,
|
|
GizmoduckClientModule,
|
|
GlobalParamConfigModule,
|
|
HomeAdsCandidateSourceModule,
|
|
HomeMixerFlagsModule,
|
|
HomeMixerProductModule,
|
|
HomeMixerResourcesModule,
|
|
ImpressionBloomFilterModule,
|
|
InjectionHistoryClientModule,
|
|
ManhattanClientsModule,
|
|
ManhattanFeatureRepositoryModule,
|
|
ManhattanTweetImpressionStoreModule,
|
|
MemcachedFeatureRepositoryModule,
|
|
NaviModelClientModule,
|
|
OnboardingTaskServiceModule,
|
|
OptimizedStratoClientModule,
|
|
PeopleDiscoveryServiceModule,
|
|
ProductMixerModule,
|
|
RealGraphInNetworkScoresModule,
|
|
RealtimeAggregateFeatureRepositoryModule,
|
|
ScoredTweetsMemcacheModule,
|
|
ScribeEventPublisherModule,
|
|
SimClustersRecentEngagementsClientModule,
|
|
SocialGraphServiceModule,
|
|
StaleTweetsCacheModule,
|
|
ThriftFeatureRepositoryModule,
|
|
TimelineRankerClientModule,
|
|
TimelineScorerClientModule,
|
|
TimelineServiceClientModule,
|
|
TimelinesPersistenceStoreClientModule,
|
|
TopicSocialProofClientModule,
|
|
TweetImpressionStoreModule,
|
|
TweetMixerClientModule,
|
|
TweetypieClientModule,
|
|
TweetypieStaticEntitiesCacheClientModule,
|
|
UserSessionStoreModule,
|
|
new DarkTrafficFilterModule[st.HomeMixer.ReqRepServicePerEndpoint](),
|
|
new MtlsThriftWebFormsModule[st.HomeMixer.MethodPerEndpoint](this),
|
|
new ProductScopeStringCenterModule()
|
|
)
|
|
|
|
override def configureThrift(router: ThriftRouter): Unit = {
|
|
router
|
|
.filter[LoggingMDCFilter]
|
|
.filter[TraceIdMDCFilter]
|
|
.filter[ThriftMDCFilter]
|
|
.filter[StatsFilter]
|
|
.filter[AccessLoggingFilter]
|
|
.filter[ExceptionMappingFilter]
|
|
.filter[Filter.TypeAgnostic, DarkTrafficFilterType]
|
|
.exceptionMapper[LoggingThrowableExceptionMapper]
|
|
.exceptionMapper[PipelineFailureExceptionMapper]
|
|
.add[HomeThriftController]
|
|
}
|
|
|
|
override def configureHttp(router: HttpRouter): Unit =
|
|
router.add(
|
|
ProductMixerController[st.HomeMixer.MethodPerEndpoint](
|
|
this.injector,
|
|
st.HomeMixer.ExecutePipeline))
|
|
|
|
override val dest: String = "/s/home-mixer/home-mixer:strato"
|
|
|
|
override val columns: Seq[Class[_ <: StratoFed.Column]] =
|
|
Seq(classOf[HomeMixerColumn])
|
|
|
|
override protected def warmup(): Unit = {
|
|
handle[HomeMixerThriftServerWarmupHandler]()
|
|
handle[HomeMixerHttpServerWarmupHandler]()
|
|
}
|
|
}
|