diff --git a/cms/envs/aws.py b/cms/envs/aws.py index 84d8947fbf..af8a8008c4 100644 --- a/cms/envs/aws.py +++ b/cms/envs/aws.py @@ -293,8 +293,8 @@ BROKER_URL = "{0}://{1}:{2}@{3}/{4}".format(CELERY_BROKER_TRANSPORT, # Event tracking TRACKING_BACKENDS.update(AUTH_TOKENS.get("TRACKING_BACKENDS", {})) -EVENT_TRACKING_BACKENDS['tracking_logs']['OPTIONS']['backends'].update(AUTH_TOKENS.get("EVENT_TRACKING_BACKENDS", {})) -EVENT_TRACKING_BACKENDS['segmentio']['OPTIONS']['processors'][0]['OPTIONS']['whitelist'].extend( +EVENT_TRACKING_BACKENDS['0_tracking_logs']['OPTIONS']['backends'].update(AUTH_TOKENS.get("EVENT_TRACKING_BACKENDS", {})) +EVENT_TRACKING_BACKENDS['1_segmentio']['OPTIONS']['processors'][0]['OPTIONS']['whitelist'].extend( AUTH_TOKENS.get("EVENT_TRACKING_SEGMENTIO_EMIT_WHITELIST", [])) SUBDOMAIN_BRANDING = ENV_TOKENS.get('SUBDOMAIN_BRANDING', {}) diff --git a/cms/envs/common.py b/cms/envs/common.py index f1d34953a1..4cb42bbcfe 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -828,8 +828,12 @@ TRACKING_BACKENDS = { TRACKING_IGNORE_URL_PATTERNS = [r'^/event', r'^/login', r'^/heartbeat'] EVENT_TRACKING_ENABLED = True + +# NOTE: the sort order of the backend names is important here, the events will be sent to the backends in sorted +# order. In this case a processor modifies the event in a way that is only intended to be seen by segment.io, so +# we want to make sure that backend and processor is run *after* the event has been sent to the tracking logs. EVENT_TRACKING_BACKENDS = { - 'tracking_logs': { + '0_tracking_logs': { 'ENGINE': 'eventtracking.backends.routing.RoutingBackend', 'OPTIONS': { 'backends': { @@ -847,7 +851,7 @@ EVENT_TRACKING_BACKENDS = { ] } }, - 'segmentio': { + '1_segmentio': { 'ENGINE': 'eventtracking.backends.routing.RoutingBackend', 'OPTIONS': { 'backends': { diff --git a/lms/envs/acceptance.py b/lms/envs/acceptance.py index 53fae641c5..ad32746373 100644 --- a/lms/envs/acceptance.py +++ b/lms/envs/acceptance.py @@ -80,7 +80,7 @@ TRACKING_BACKENDS.update({ } }) -EVENT_TRACKING_BACKENDS['tracking_logs']['OPTIONS']['backends'].update({ +EVENT_TRACKING_BACKENDS['0_tracking_logs']['OPTIONS']['backends'].update({ 'mongo': { 'ENGINE': 'eventtracking.backends.mongodb.MongoBackend', 'OPTIONS': { diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 9399a79e6c..ef3d1b3193 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -492,8 +492,8 @@ STUDENT_FILEUPLOAD_MAX_SIZE = ENV_TOKENS.get("STUDENT_FILEUPLOAD_MAX_SIZE", STUD # Event tracking TRACKING_BACKENDS.update(AUTH_TOKENS.get("TRACKING_BACKENDS", {})) -EVENT_TRACKING_BACKENDS['tracking_logs']['OPTIONS']['backends'].update(AUTH_TOKENS.get("EVENT_TRACKING_BACKENDS", {})) -EVENT_TRACKING_BACKENDS['segmentio']['OPTIONS']['processors'][0]['OPTIONS']['whitelist'].extend( +EVENT_TRACKING_BACKENDS['0_tracking_logs']['OPTIONS']['backends'].update(AUTH_TOKENS.get("EVENT_TRACKING_BACKENDS", {})) +EVENT_TRACKING_BACKENDS['1_segmentio']['OPTIONS']['processors'][0]['OPTIONS']['whitelist'].extend( AUTH_TOKENS.get("EVENT_TRACKING_SEGMENTIO_EMIT_WHITELIST", [])) TRACKING_SEGMENTIO_WEBHOOK_SECRET = AUTH_TOKENS.get( "TRACKING_SEGMENTIO_WEBHOOK_SECRET", diff --git a/lms/envs/common.py b/lms/envs/common.py index 41924c2217..a0e5c474a0 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -629,8 +629,12 @@ TRACKING_BACKENDS = { TRACKING_IGNORE_URL_PATTERNS = [r'^/event', r'^/login', r'^/heartbeat', r'^/segmentio/event', r'^/performance'] EVENT_TRACKING_ENABLED = True + +# NOTE: the sort order of the backend names is important here, the events will be sent to the backends in sorted +# order. In this case a processor modifies the event in a way that is only intended to be seen by segment.io, so +# we want to make sure that backend and processor is run *after* the event has been sent to the tracking logs. EVENT_TRACKING_BACKENDS = { - 'tracking_logs': { + '0_tracking_logs': { 'ENGINE': 'eventtracking.backends.routing.RoutingBackend', 'OPTIONS': { 'backends': { @@ -648,7 +652,7 @@ EVENT_TRACKING_BACKENDS = { ] } }, - 'segmentio': { + '1_segmentio': { 'ENGINE': 'eventtracking.backends.routing.RoutingBackend', 'OPTIONS': { 'backends': {