jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/361715 )

Change subject: i13n: Don't sample by pageview
......................................................................


i13n: Don't sample by pageview

Currently, the mw.eventLog.Schema class samples per pageview. However,
we expect that if a user is bucketed for a session, then all
EventLogging events logged during that session are in the sample.

Unlike Popups in I4f653bba, the RelatedArticles instrumentation does
rely on another mw.eventLog.Schema behavior: distinguishing between
static and dynamic data. This and the use of mw.eventLog.Schema could be
removed in a follow-on change.

Bug: T167236
Change-Id: I9583cb98264efd7dc46b45bbce5323036a100536
(cherry picked from commit 153573dbe5efd1803452c1f7e48af524af20fc17)
---
M resources/ext.relatedArticles.readMore.eventLogging/index.js
1 file changed, 57 insertions(+), 13 deletions(-)

Approvals:
  Chad: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/ext.relatedArticles.readMore.eventLogging/index.js 
b/resources/ext.relatedArticles.readMore.eventLogging/index.js
index afe721b..87ec230 100644
--- a/resources/ext.relatedArticles.readMore.eventLogging/index.js
+++ b/resources/ext.relatedArticles.readMore.eventLogging/index.js
@@ -5,9 +5,65 @@
                skin = mw.config.get( 'skin' ),
                $window = $( window );
 
-       if ( !$.isFunction( navigator.sendBeacon ) ) {
+       /**
+        * Gets whether the UA supports [the Beacon API][0].
+        *
+        * [0]: https://www.w3.org/TR/beacon/
+        *
+        * @return {boolean}
+        */
+       function supportsBeacon() {
+               return $.isFunction( window.navigator.sendBeacon );
+       }
+
+       /**
+        * Gets whether the instrumentation is enabled for the user.
+        *
+        * We sample at the feature level, not by pageview. If the 
instrumentation is
+        * enabled for the user, then it's enabled for the duration of their 
session.
+        *
+        * @return {boolean}
+        */
+       function isEnabledForCurrentUser() {
+
+               // TODO: Rename this and other instances to bucketingRate.
+               var samplingRate = mw.config.get( 
'wgRelatedArticlesLoggingSamplingRate', 0 );
+
+               if ( !supportsBeacon() ) {
+                       return false;
+               }
+
+               return mw.experiments.getBucket( {
+                       name: 'ext.relatedArticles.instrumentation',
+                       enabled: true,
+                       buckets: {
+                               control: 1 - samplingRate,
+                               A: samplingRate
+                       }
+               }, mw.user.sessionId() ) === 'A';
+       }
+
+       if ( !isEnabledForCurrentUser() ) {
                return;
        }
+
+       // ---
+       // BEGIN INSTRUMENTATION
+       // ---
+
+       schemaRelatedPages = new mw.eventLog.Schema(
+               'RelatedArticles',
+
+               // The instrumentation is enabled for the user's session. DON'T 
SAMPLE AT
+               // THE EVENT LEVEL.
+               1,
+
+               {
+                       pageId: mw.config.get( 'wgArticleId' ),
+                       skin: ( skin === 'minerva' ) ? skin + '-' + 
mw.config.get( 'wgMFMode' ) : skin,
+                       userSessionToken: mw.user.sessionId()
+               }
+       );
 
        /**
         * Log when ReadMore is seen by the user
@@ -18,18 +74,6 @@
                        schemaRelatedPages.log( { eventName: 'seen' } );
                }
        }
-
-       schemaRelatedPages = new mw.eventLog.Schema(
-               'RelatedArticles',
-               // not sampled if the config variable is not set
-               mw.config.get( 'wgRelatedArticlesLoggingSamplingRate', 0 ),
-               {
-                       pageId: mw.config.get( 'wgArticleId' ),
-                       skin: ( skin === 'minerva' ) ? skin + '-' + 
mw.config.get( 'wgMFMode' ) : skin,
-                       // This should persist for a given user across their 
session.
-                       userSessionToken: mw.user.sessionId()
-               }
-       );
 
        mw.trackSubscribe( 'ext.relatedArticles.logEnabled', function ( _, data 
) {
                schemaRelatedPages.log( {

-- 
To view, visit https://gerrit.wikimedia.org/r/361715
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I9583cb98264efd7dc46b45bbce5323036a100536
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/RelatedArticles
Gerrit-Branch: wmf/1.30.0-wmf.6
Gerrit-Owner: Jdlrobson <jrob...@wikimedia.org>
Gerrit-Reviewer: Chad <ch...@wikimedia.org>
Gerrit-Reviewer: Phuedx <samsm...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to