From ec83d01dcaebf369444d75ed04b3625a0a645eb9 Mon Sep 17 00:00:00 2001 From: twitter-team <> Date: Fri, 31 Mar 2023 13:39:57 -0700 Subject: [PATCH] Remove stats collection code measuring how often Tweets from specific user groups are served --- .../decorator/HomeTweetTypePredicates.scala | 25 +------------------ .../RequestQueryFeatureHydrator.scala | 24 +----------------- .../home_mixer/model/HomeFeatures.scala | 4 --- .../module/HomeMixerResourcesModule.scala | 15 +---------- .../param/HomeMixerInjectionNames.scala | 1 - 5 files changed, 3 insertions(+), 66 deletions(-) diff --git a/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator/HomeTweetTypePredicates.scala b/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator/HomeTweetTypePredicates.scala index 546cd13e9..8eecc785f 100644 --- a/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator/HomeTweetTypePredicates.scala +++ b/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator/HomeTweetTypePredicates.scala @@ -220,30 +220,7 @@ object HomeTweetTypePredicates { _.getOrElse(ConversationModule2DisplayedTweetsFeature, false)), ("conversation_module_has_gap", _.getOrElse(ConversationModuleHasGapFeature, false)), ("served_in_recap_tweet_candidate_module_injection", _ => false), - ("served_in_threaded_conversation_module", _ => false), - ( - "author_is_elon", - candidate => - candidate - .getOrElse(AuthorIdFeature, None).contains(candidate.getOrElse(DDGStatsElonFeature, 0L))), - ( - "author_is_power_user", - candidate => - candidate - .getOrElse(AuthorIdFeature, None) - .exists(candidate.getOrElse(DDGStatsVitsFeature, Set.empty[Long]).contains)), - ( - "author_is_democrat", - candidate => - candidate - .getOrElse(AuthorIdFeature, None) - .exists(candidate.getOrElse(DDGStatsDemocratsFeature, Set.empty[Long]).contains)), - ( - "author_is_republican", - candidate => - candidate - .getOrElse(AuthorIdFeature, None) - .exists(candidate.getOrElse(DDGStatsRepublicansFeature, Set.empty[Long]).contains)), + ("served_in_threaded_conversation_module", _ => false) ) val PredicateMap = CandidatePredicates.toMap diff --git a/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/feature_hydrator/RequestQueryFeatureHydrator.scala b/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/feature_hydrator/RequestQueryFeatureHydrator.scala index 7381f989b..bda746816 100644 --- a/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/feature_hydrator/RequestQueryFeatureHydrator.scala +++ b/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/feature_hydrator/RequestQueryFeatureHydrator.scala @@ -1,12 +1,10 @@ package com.twitter.home_mixer.functional_component.feature_hydrator -import com.twitter.config.yaml.YamlMap import com.twitter.finagle.tracing.Annotation.BinaryAnnotation import com.twitter.finagle.tracing.ForwardAnnotation import com.twitter.home_mixer.model.HomeFeatures._ import com.twitter.home_mixer.model.request.DeviceContext.RequestContext import com.twitter.home_mixer.model.request.HasDeviceContext -import com.twitter.home_mixer.param.HomeMixerInjectionNames.DDGStatsAuthors import com.twitter.joinkey.context.RequestJoinKeyContext import com.twitter.product_mixer.component_library.model.cursor.UrtOrderedCursor import com.twitter.product_mixer.core.feature.Feature @@ -24,22 +22,16 @@ import com.twitter.snowflake.id.SnowflakeId import com.twitter.stitch.Stitch import java.util.UUID import javax.inject.Inject -import javax.inject.Named import javax.inject.Singleton @Singleton class RequestQueryFeatureHydrator[ Query <: PipelineQuery with HasPipelineCursor[UrtOrderedCursor] with HasDeviceContext] @Inject() ( - @Named(DDGStatsAuthors) ddgStatsAuthors: YamlMap) - extends QueryFeatureHydrator[Query] { +) extends QueryFeatureHydrator[Query] { override val features: Set[Feature[_, _]] = Set( AccountAgeFeature, ClientIdFeature, - DDGStatsDemocratsFeature, - DDGStatsRepublicansFeature, - DDGStatsElonFeature, - DDGStatsVitsFeature, DeviceLanguageFeature, GetInitialFeature, GetMiddleFeature, @@ -59,10 +51,6 @@ class RequestQueryFeatureHydrator[ override val identifier: FeatureHydratorIdentifier = FeatureHydratorIdentifier("Request") private val DarkRequestAnnotation = "clnt/has_dark_request" - private val Democrats = "democrats" - private val Republicans = "republicans" - private val Elon = "elon" - private val Vits = "vits" // Convert Language code to ISO 639-3 format private def getLanguageISOFormatByCode(languageCode: String): String = @@ -83,16 +71,6 @@ class RequestQueryFeatureHydrator[ val featureMap = FeatureMapBuilder() .add(AccountAgeFeature, query.getOptionalUserId.flatMap(SnowflakeId.timeFromIdOpt)) .add(ClientIdFeature, query.clientContext.appId) - /** - * These author ID lists are used purely for metrics collection. We track how often we are - * serving Tweets from these authors and how often their tweets are being impressed by users. - * This helps us validate in our A/B experimentation platform that we do not ship changes - * that negatively impacts one group over others. - */ - .add(DDGStatsDemocratsFeature, ddgStatsAuthors.longSeq(Democrats).toSet) - .add(DDGStatsRepublicansFeature, ddgStatsAuthors.longSeq(Republicans).toSet) - .add(DDGStatsVitsFeature, ddgStatsAuthors.longSeq(Vits).toSet) - .add(DDGStatsElonFeature, ddgStatsAuthors.longValue(Elon)) .add(DeviceLanguageFeature, query.getLanguageCode.map(getLanguageISOFormatByCode)) .add( GetInitialFeature, diff --git a/home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeFeatures.scala b/home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeFeatures.scala index 0a19230d3..032623cd4 100644 --- a/home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeFeatures.scala +++ b/home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeFeatures.scala @@ -176,10 +176,6 @@ object HomeFeatures { override def personalDataTypes: Set[pd.PersonalDataType] = Set(pd.PersonalDataType.ClientType) } object CachedScoredTweetsFeature extends Feature[PipelineQuery, Seq[hmt.CachedScoredTweet]] - object DDGStatsElonFeature extends Feature[PipelineQuery, Long] - object DDGStatsVitsFeature extends Feature[PipelineQuery, Set[Long]] - object DDGStatsDemocratsFeature extends Feature[PipelineQuery, Set[Long]] - object DDGStatsRepublicansFeature extends Feature[PipelineQuery, Set[Long]] object DeviceLanguageFeature extends Feature[PipelineQuery, Option[String]] object DismissInfoFeature extends FeatureWithDefaultOnFailure[PipelineQuery, Map[st.SuggestType, Option[DismissInfo]]] { diff --git a/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/HomeMixerResourcesModule.scala b/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/HomeMixerResourcesModule.scala index d4bfab221..b68e5b105 100644 --- a/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/HomeMixerResourcesModule.scala +++ b/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/HomeMixerResourcesModule.scala @@ -1,18 +1,5 @@ package com.twitter.home_mixer.module -import com.google.inject.Provides -import com.twitter.config.yaml.YamlMap -import com.twitter.home_mixer.param.HomeMixerInjectionNames.DDGStatsAuthors import com.twitter.inject.TwitterModule -import javax.inject.Named -import javax.inject.Singleton -object HomeMixerResourcesModule extends TwitterModule { - - private val AuthorsFile = "/config/authors.yml" - - @Provides - @Singleton - @Named(DDGStatsAuthors) - def providesDDGStatsAuthors(): YamlMap = YamlMap.load(AuthorsFile) -} +object HomeMixerResourcesModule extends TwitterModule {} diff --git a/home-mixer/server/src/main/scala/com/twitter/home_mixer/param/HomeMixerInjectionNames.scala b/home-mixer/server/src/main/scala/com/twitter/home_mixer/param/HomeMixerInjectionNames.scala index ab2f45b4f..739c48a77 100644 --- a/home-mixer/server/src/main/scala/com/twitter/home_mixer/param/HomeMixerInjectionNames.scala +++ b/home-mixer/server/src/main/scala/com/twitter/home_mixer/param/HomeMixerInjectionNames.scala @@ -4,7 +4,6 @@ object HomeMixerInjectionNames { final val AuthorFeatureRepository = "AuthorFeatureRepository" final val CandidateFeaturesScribeEventPublisher = "CandidateFeaturesScribeEventPublisher" final val CommonFeaturesScribeEventPublisher = "CommonFeaturesScribeEventPublisher" - final val DDGStatsAuthors = "DDGStatsAuthors" final val EarlybirdRepository = "EarlybirdRepository" final val EngagementsReceivedByAuthorCache = "EngagementsReceivedByAuthorCache" final val GraphTwoHopRepository = "GraphTwoHopRepository"