Skip to content

Commit 72eda9a

Browse files
author
twitter-team
committed
[opensource] Update home mixer with latest changes
1 parent fb54d8b commit 72eda9a

File tree

393 files changed

+9322
-3838
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

393 files changed

+9322
-3838
lines changed

home-mixer/README.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Timeline tabs powered by Home Mixer.
7474
- ScoredTweetsRecommendationPipelineConfig (main Tweet recommendation layer)
7575
- Fetch Tweet Candidates
7676
- ScoredTweetsInNetworkCandidatePipelineConfig
77-
- ScoredTweetsCrMixerCandidatePipelineConfig
77+
- ScoredTweetsTweetMixerCandidatePipelineConfig
7878
- ScoredTweetsUtegCandidatePipelineConfig
7979
- ScoredTweetsFrsCandidatePipelineConfig
8080
- Feature Hydration and Scoring
@@ -99,4 +99,3 @@ Timeline tabs powered by Home Mixer.
9999
- ListTweetsTimelineServiceCandidatePipelineConfig (fetch tweets from timeline service)
100100
- ConversationServiceCandidatePipelineConfig (fetch ancestors for conversation modules)
101101
- ListTweetsAdsCandidatePipelineConfig (fetch ads)
102-

home-mixer/server/src/main/scala/com/twitter/home_mixer/BUILD.bazel

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ scala_library(
2121
"finatra/inject/inject-utils/src/main/scala",
2222
"home-mixer/server/src/main/resources",
2323
"home-mixer/server/src/main/scala/com/twitter/home_mixer/controller",
24+
"home-mixer/server/src/main/scala/com/twitter/home_mixer/federated",
2425
"home-mixer/server/src/main/scala/com/twitter/home_mixer/module",
2526
"home-mixer/server/src/main/scala/com/twitter/home_mixer/param",
2627
"home-mixer/server/src/main/scala/com/twitter/home_mixer/product",
@@ -31,6 +32,10 @@ scala_library(
3132
"product-mixer/core/src/main/scala/com/twitter/product_mixer/core/module/stringcenter",
3233
"product-mixer/core/src/main/thrift/com/twitter/product_mixer/core:thrift-scala",
3334
"src/thrift/com/twitter/timelines/render:thrift-scala",
35+
"strato/config/columns/auth-context:auth-context-strato-client",
36+
"strato/config/columns/gizmoduck:gizmoduck-strato-client",
37+
"strato/src/main/scala/com/twitter/strato/fed",
38+
"strato/src/main/scala/com/twitter/strato/fed/server",
3439
"stringcenter/client",
3540
"stringcenter/client/src/main/java",
3641
"stringcenter/client/src/main/scala/com/twitter/stringcenter/client",

home-mixer/server/src/main/scala/com/twitter/home_mixer/HomeMixerHttpServerWarmupHandler.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.twitter.home_mixer
22

33
import com.twitter.finatra.http.routing.HttpWarmup
44
import com.twitter.finatra.httpclient.RequestBuilder._
5-
import com.twitter.inject.Logging
5+
import com.twitter.util.logging.Logging
66
import com.twitter.inject.utils.Handler
77
import com.twitter.util.Try
88
import javax.inject.Inject

home-mixer/server/src/main/scala/com/twitter/home_mixer/HomeMixerServer.scala

+22-12
Original file line numberDiff line numberDiff line change
@@ -12,57 +12,63 @@ import com.twitter.finatra.thrift.ThriftServer
1212
import com.twitter.finatra.thrift.filters._
1313
import com.twitter.finatra.thrift.routing.ThriftRouter
1414
import com.twitter.home_mixer.controller.HomeThriftController
15+
import com.twitter.home_mixer.federated.HomeMixerColumn
1516
import com.twitter.home_mixer.module._
1617
import com.twitter.home_mixer.param.GlobalParamConfigModule
1718
import com.twitter.home_mixer.product.HomeMixerProductModule
1819
import com.twitter.home_mixer.{thriftscala => st}
1920
import com.twitter.product_mixer.component_library.module.AccountRecommendationsMixerModule
20-
import com.twitter.product_mixer.component_library.module.CrMixerClientModule
2121
import com.twitter.product_mixer.component_library.module.DarkTrafficFilterModule
2222
import com.twitter.product_mixer.component_library.module.EarlybirdModule
2323
import com.twitter.product_mixer.component_library.module.ExploreRankerClientModule
2424
import com.twitter.product_mixer.component_library.module.GizmoduckClientModule
2525
import com.twitter.product_mixer.component_library.module.OnboardingTaskServiceModule
2626
import com.twitter.product_mixer.component_library.module.SocialGraphServiceModule
27-
import com.twitter.product_mixer.component_library.module.TimelineMixerClientModule
2827
import com.twitter.product_mixer.component_library.module.TimelineRankerClientModule
2928
import com.twitter.product_mixer.component_library.module.TimelineScorerClientModule
3029
import com.twitter.product_mixer.component_library.module.TimelineServiceClientModule
3130
import com.twitter.product_mixer.component_library.module.TweetImpressionStoreModule
31+
import com.twitter.product_mixer.component_library.module.TweetMixerClientModule
3232
import com.twitter.product_mixer.component_library.module.UserSessionStoreModule
3333
import com.twitter.product_mixer.core.controllers.ProductMixerController
3434
import com.twitter.product_mixer.core.module.LoggingThrowableExceptionMapper
3535
import com.twitter.product_mixer.core.module.ProductMixerModule
36-
import com.twitter.product_mixer.core.module.StratoClientModule
3736
import com.twitter.product_mixer.core.module.stringcenter.ProductScopeStringCenterModule
37+
import com.twitter.strato.fed.StratoFed
38+
import com.twitter.strato.fed.server.StratoFedServer
3839

3940
object HomeMixerServerMain extends HomeMixerServer
4041

41-
class HomeMixerServer extends ThriftServer with Mtls with HttpServer with HttpMtls {
42+
class HomeMixerServer
43+
extends StratoFedServer
44+
with ThriftServer
45+
with Mtls
46+
with HttpServer
47+
with HttpMtls {
4248
override val name = "home-mixer-server"
4349

4450
override val modules: Seq[Module] = Seq(
4551
AccountRecommendationsMixerModule,
4652
AdvertiserBrandSafetySettingsStoreModule,
53+
BlenderClientModule,
4754
ClientSentImpressionsPublisherModule,
4855
ConversationServiceModule,
49-
CrMixerClientModule,
5056
EarlybirdModule,
5157
ExploreRankerClientModule,
58+
FeedbackHistoryClientModule,
5259
GizmoduckClientModule,
5360
GlobalParamConfigModule,
5461
HomeAdsCandidateSourceModule,
5562
HomeMixerFlagsModule,
5663
HomeMixerProductModule,
5764
HomeMixerResourcesModule,
58-
HomeNaviModelClientModule,
5965
ImpressionBloomFilterModule,
6066
InjectionHistoryClientModule,
61-
FeedbackHistoryClientModule,
6267
ManhattanClientsModule,
6368
ManhattanFeatureRepositoryModule,
6469
ManhattanTweetImpressionStoreModule,
6570
MemcachedFeatureRepositoryModule,
71+
NaviModelClientModule,
6672
OnboardingTaskServiceModule,
6773
OptimizedStratoClientModule,
6874
PeopleDiscoveryServiceModule,
@@ -74,24 +80,23 @@ class HomeMixerServer extends ThriftServer with Mtls with HttpServer with HttpMt
7480
SimClustersRecentEngagementsClientModule,
7581
SocialGraphServiceModule,
7682
StaleTweetsCacheModule,
77-
StratoClientModule,
7883
ThriftFeatureRepositoryModule,
79-
TimelineMixerClientModule,
8084
TimelineRankerClientModule,
8185
TimelineScorerClientModule,
8286
TimelineServiceClientModule,
8387
TimelinesPersistenceStoreClientModule,
88+
TopicSocialProofClientModule,
8489
TweetImpressionStoreModule,
85-
TweetyPieClientModule,
90+
TweetMixerClientModule,
91+
TweetypieClientModule,
8692
TweetypieStaticEntitiesCacheClientModule,
87-
UserMetadataStoreModule,
8893
UserSessionStoreModule,
8994
new DarkTrafficFilterModule[st.HomeMixer.ReqRepServicePerEndpoint](),
9095
new MtlsThriftWebFormsModule[st.HomeMixer.MethodPerEndpoint](this),
9196
new ProductScopeStringCenterModule()
9297
)
9398

94-
def configureThrift(router: ThriftRouter): Unit = {
99+
override def configureThrift(router: ThriftRouter): Unit = {
95100
router
96101
.filter[LoggingMDCFilter]
97102
.filter[TraceIdMDCFilter]
@@ -111,6 +116,11 @@ class HomeMixerServer extends ThriftServer with Mtls with HttpServer with HttpMt
111116
this.injector,
112117
st.HomeMixer.ExecutePipeline))
113118

119+
override val dest: String = "/s/home-mixer/home-mixer:strato"
120+
121+
override val columns: Seq[Class[_ <: StratoFed.Column]] =
122+
Seq(classOf[HomeMixerColumn])
123+
114124
override protected def warmup(): Unit = {
115125
handle[HomeMixerThriftServerWarmupHandler]()
116126
handle[HomeMixerHttpServerWarmupHandler]()

home-mixer/server/src/main/scala/com/twitter/home_mixer/HomeMixerThriftServerWarmupHandler.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.twitter.home_mixer
33
import com.twitter.finagle.thrift.ClientId
44
import com.twitter.finatra.thrift.routing.ThriftWarmup
55
import com.twitter.home_mixer.{thriftscala => st}
6-
import com.twitter.inject.Logging
6+
import com.twitter.util.logging.Logging
77
import com.twitter.inject.utils.Handler
88
import com.twitter.product_mixer.core.{thriftscala => pt}
99
import com.twitter.scrooge.Request

home-mixer/server/src/main/scala/com/twitter/home_mixer/candidate_pipeline/BUILD.bazel

-10
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,20 @@ scala_library(
55
tags = ["bazel-compatible"],
66
dependencies = [
77
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/candidate_source",
8-
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator",
9-
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator/builder",
108
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator/urt/builder",
119
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/feature_hydrator",
1210
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/filter",
1311
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/gate",
1412
"home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/query_transformer",
15-
"home-mixer/server/src/main/scala/com/twitter/home_mixer/marshaller/timelines",
1613
"home-mixer/server/src/main/scala/com/twitter/home_mixer/model",
1714
"home-mixer/server/src/main/scala/com/twitter/home_mixer/model/request",
18-
"home-mixer/server/src/main/scala/com/twitter/home_mixer/param",
19-
"home-mixer/server/src/main/scala/com/twitter/home_mixer/product/following/model",
20-
"home-mixer/server/src/main/scala/com/twitter/home_mixer/product/following/param",
2115
"home-mixer/server/src/main/scala/com/twitter/home_mixer/service",
2216
"product-mixer/component-library/src/main/scala/com/twitter/product_mixer/component_library/candidate_source/tweetconvosvc",
2317
"product-mixer/component-library/src/main/scala/com/twitter/product_mixer/component_library/decorator/urt",
2418
"product-mixer/component-library/src/main/scala/com/twitter/product_mixer/component_library/filter",
2519
"product-mixer/component-library/src/main/scala/com/twitter/product_mixer/component_library/gate",
2620
"product-mixer/component-library/src/main/scala/com/twitter/product_mixer/component_library/model/candidate",
2721
"product-mixer/core/src/main/scala/com/twitter/product_mixer/core/functional_component/transformer",
28-
"timelinemixer/common/src/main/scala/com/twitter/timelinemixer/clients/manhattan",
29-
"timelinemixer/server/src/main/scala/com/twitter/timelinemixer/injection/store/persistence",
30-
"timelines/src/main/scala/com/twitter/timelines/injection/scribe",
31-
"timelineservice/common/src/main/scala/com/twitter/timelineservice/model",
3222
],
3323
exports = [
3424
"product-mixer/component-library/src/main/scala/com/twitter/product_mixer/component_library/candidate_source/tweetconvosvc",

home-mixer/server/src/main/scala/com/twitter/home_mixer/candidate_pipeline/ConversationServiceCandidatePipelineConfig.scala

+17-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
package com.twitter.home_mixer.candidate_pipeline
22

3+
import com.twitter.home_mixer.functional_component.feature_hydrator.InNetworkFeatureHydrator
34
import com.twitter.home_mixer.functional_component.feature_hydrator.NamesFeatureHydrator
4-
import com.twitter.home_mixer.functional_component.feature_hydrator.SocialGraphServiceFeatureHydrator
55
import com.twitter.home_mixer.functional_component.feature_hydrator.TweetypieFeatureHydrator
66
import com.twitter.home_mixer.functional_component.filter.InvalidConversationModuleFilter
7-
import com.twitter.home_mixer.functional_component.filter.PredicateFeatureFilter
7+
import com.twitter.home_mixer.functional_component.filter.InvalidSubscriptionTweetFilter
88
import com.twitter.home_mixer.functional_component.filter.RetweetDeduplicationFilter
9+
import com.twitter.home_mixer.model.HomeFeatures.AuthorIdFeature
10+
import com.twitter.home_mixer.model.HomeFeatures.InReplyToTweetIdFeature
911
import com.twitter.home_mixer.model.HomeFeatures.IsHydratedFeature
1012
import com.twitter.home_mixer.model.HomeFeatures.QuotedTweetDroppedFeature
13+
import com.twitter.home_mixer.model.HomeFeatures.SourceTweetIdFeature
14+
import com.twitter.home_mixer.model.HomeFeatures.SourceUserIdFeature
1115
import com.twitter.home_mixer.service.HomeMixerAlertConfig
1216
import com.twitter.product_mixer.component_library.candidate_source.tweetconvosvc.ConversationServiceCandidateSource
1317
import com.twitter.product_mixer.component_library.candidate_source.tweetconvosvc.ConversationServiceCandidateSourceRequest
1418
import com.twitter.product_mixer.component_library.candidate_source.tweetconvosvc.TweetWithConversationMetadata
1519
import com.twitter.product_mixer.component_library.filter.FeatureFilter
20+
import com.twitter.product_mixer.component_library.filter.PredicateFeatureFilter
1621
import com.twitter.product_mixer.component_library.model.candidate.TweetCandidate
1722
import com.twitter.product_mixer.core.functional_component.candidate_source.BaseCandidateSource
1823
import com.twitter.product_mixer.core.functional_component.decorator.CandidateDecorator
@@ -33,8 +38,8 @@ import com.twitter.product_mixer.core.pipeline.candidate.DependentCandidatePipel
3338
class ConversationServiceCandidatePipelineConfig[Query <: PipelineQuery](
3439
conversationServiceCandidateSource: ConversationServiceCandidateSource,
3540
tweetypieFeatureHydrator: TweetypieFeatureHydrator,
36-
socialGraphServiceFeatureHydrator: SocialGraphServiceFeatureHydrator,
3741
namesFeatureHydrator: NamesFeatureHydrator,
42+
invalidSubscriptionTweetFilter: InvalidSubscriptionTweetFilter,
3843
override val gates: Seq[BaseGate[Query]],
3944
override val decorator: Option[CandidateDecorator[Query, TweetCandidate]])
4045
extends DependentCandidatePipelineConfig[
@@ -62,10 +67,10 @@ class ConversationServiceCandidatePipelineConfig[Query <: PipelineQuery](
6267
val tweetsWithConversationMetadata = candidates.map { candidate =>
6368
TweetWithConversationMetadata(
6469
tweetId = candidate.candidateIdLong,
65-
userId = None,
66-
sourceTweetId = None,
67-
sourceUserId = None,
68-
inReplyToTweetId = None,
70+
userId = candidate.features.getOrElse(AuthorIdFeature, None),
71+
sourceTweetId = candidate.features.getOrElse(SourceTweetIdFeature, None),
72+
sourceUserId = candidate.features.getOrElse(SourceUserIdFeature, None),
73+
inReplyToTweetId = candidate.features.getOrElse(InReplyToTweetIdFeature, None),
6974
conversationId = None,
7075
ancestors = Seq.empty
7176
)
@@ -84,7 +89,10 @@ class ConversationServiceCandidatePipelineConfig[Query <: PipelineQuery](
8489

8590
override val preFilterFeatureHydrationPhase1: Seq[
8691
BaseCandidateFeatureHydrator[Query, TweetCandidate, _]
87-
] = Seq(tweetypieFeatureHydrator, socialGraphServiceFeatureHydrator)
92+
] = Seq(
93+
tweetypieFeatureHydrator,
94+
InNetworkFeatureHydrator,
95+
)
8896

8997
override def filters: Seq[Filter[Query, TweetCandidate]] = Seq(
9098
RetweetDeduplicationFilter,
@@ -93,6 +101,7 @@ class ConversationServiceCandidatePipelineConfig[Query <: PipelineQuery](
93101
FilterIdentifier(QuotedTweetDroppedFilterId),
94102
shouldKeepCandidate = { features => !features.getOrElse(QuotedTweetDroppedFeature, false) }
95103
),
104+
invalidSubscriptionTweetFilter,
96105
InvalidConversationModuleFilter
97106
)
98107

home-mixer/server/src/main/scala/com/twitter/home_mixer/candidate_pipeline/ConversationServiceCandidatePipelineConfigBuilder.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.twitter.home_mixer.candidate_pipeline
22

3-
import com.twitter.product_mixer.component_library.candidate_source.tweetconvosvc.ConversationServiceCandidateSource
43
import com.twitter.home_mixer.functional_component.feature_hydrator.NamesFeatureHydrator
5-
import com.twitter.home_mixer.functional_component.feature_hydrator.SocialGraphServiceFeatureHydrator
64
import com.twitter.home_mixer.functional_component.feature_hydrator.TweetypieFeatureHydrator
5+
import com.twitter.home_mixer.functional_component.filter.InvalidSubscriptionTweetFilter
6+
import com.twitter.product_mixer.component_library.candidate_source.tweetconvosvc.ConversationServiceCandidateSource
77
import com.twitter.product_mixer.component_library.model.candidate.TweetCandidate
88
import com.twitter.product_mixer.core.functional_component.decorator.CandidateDecorator
99
import com.twitter.product_mixer.core.functional_component.gate.BaseGate
@@ -15,7 +15,7 @@ import javax.inject.Singleton
1515
class ConversationServiceCandidatePipelineConfigBuilder[Query <: PipelineQuery] @Inject() (
1616
conversationServiceCandidateSource: ConversationServiceCandidateSource,
1717
tweetypieFeatureHydrator: TweetypieFeatureHydrator,
18-
socialGraphServiceFeatureHydrator: SocialGraphServiceFeatureHydrator,
18+
invalidSubscriptionTweetFilter: InvalidSubscriptionTweetFilter,
1919
namesFeatureHydrator: NamesFeatureHydrator) {
2020

2121
def build(
@@ -25,8 +25,8 @@ class ConversationServiceCandidatePipelineConfigBuilder[Query <: PipelineQuery]
2525
new ConversationServiceCandidatePipelineConfig(
2626
conversationServiceCandidateSource,
2727
tweetypieFeatureHydrator,
28-
socialGraphServiceFeatureHydrator,
2928
namesFeatureHydrator,
29+
invalidSubscriptionTweetFilter,
3030
gates,
3131
decorator
3232
)

home-mixer/server/src/main/scala/com/twitter/home_mixer/candidate_pipeline/EditedTweetsCandidatePipelineConfig.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.twitter.home_mixer.candidate_pipeline
22

33
import com.twitter.home_mixer.functional_component.candidate_source.StaleTweetsCacheCandidateSource
4-
import com.twitter.home_mixer.functional_component.decorator.HomeFeedbackActionInfoBuilder
4+
import com.twitter.home_mixer.functional_component.decorator.urt.builder.HomeFeedbackActionInfoBuilder
55
import com.twitter.home_mixer.functional_component.feature_hydrator.NamesFeatureHydrator
66
import com.twitter.home_mixer.functional_component.query_transformer.EditedTweetsCandidatePipelineQueryTransformer
77
import com.twitter.home_mixer.service.HomeMixerAlertConfig

home-mixer/server/src/main/scala/com/twitter/home_mixer/controller/BUILD.bazel

-3
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,5 @@ scala_library(
1313
"product-mixer/core/src/main/scala/com/twitter/product_mixer/core/service/debug_query",
1414
"product-mixer/core/src/main/scala/com/twitter/product_mixer/core/service/urt",
1515
"snowflake/src/main/scala/com/twitter/snowflake/id",
16-
"src/thrift/com/twitter/context:twitter-context-scala",
17-
"src/thrift/com/twitter/timelines/render:thrift-scala",
18-
"twitter-context/src/main/scala",
1916
],
2017
)

home-mixer/server/src/main/scala/com/twitter/home_mixer/controller/HomeThriftController.scala

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.twitter.home_mixer.service.ScoredTweetsService
77
import com.twitter.home_mixer.{thriftscala => t}
88
import com.twitter.product_mixer.core.controllers.DebugTwitterContext
99
import com.twitter.product_mixer.core.functional_component.configapi.ParamsBuilder
10+
import com.twitter.product_mixer.core.service.debug_query.DebugQueryService
1011
import com.twitter.product_mixer.core.service.urt.UrtService
1112
import com.twitter.snowflake.id.SnowflakeId
1213
import com.twitter.stitch.Stitch
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
scala_library(
2+
sources = ["*.scala"],
3+
compiler_option_sets = ["fatal_warnings"],
4+
strict_deps = True,
5+
tags = ["bazel-compatible"],
6+
dependencies = [
7+
"home-mixer/server/src/main/scala/com/twitter/home_mixer/marshaller/request",
8+
"home-mixer/server/src/main/scala/com/twitter/home_mixer/model/request",
9+
"home-mixer/thrift/src/main/thrift:thrift-scala",
10+
"product-mixer/core/src/main/scala/com/twitter/product_mixer/core/functional_component/configapi",
11+
"product-mixer/core/src/main/scala/com/twitter/product_mixer/core/pipeline/product",
12+
"product-mixer/core/src/main/scala/com/twitter/product_mixer/core/product/registry",
13+
"product-mixer/core/src/main/thrift/com/twitter/product_mixer/core:thrift-scala",
14+
"src/thrift/com/twitter/gizmoduck:thrift-scala",
15+
"src/thrift/com/twitter/timelines/render:thrift-scala",
16+
"stitch/stitch-repo/src/main/scala",
17+
"strato/config/columns/auth-context:auth-context-strato-client",
18+
"strato/config/columns/gizmoduck:gizmoduck-strato-client",
19+
"strato/config/src/thrift/com/twitter/strato/graphql/timelines:graphql-timelines-scala",
20+
"strato/src/main/scala/com/twitter/strato/callcontext",
21+
"strato/src/main/scala/com/twitter/strato/fed",
22+
"strato/src/main/scala/com/twitter/strato/fed/server",
23+
],
24+
)

0 commit comments

Comments
 (0)