From eef3cf0aa0e02715b11a66f4e34b7975ebc33b4d Mon Sep 17 00:00:00 2001 From: Neelanjan Sen Date: Mon, 16 Mar 2020 02:49:31 +0530 Subject: [PATCH 1/4] auctiontimeout bugfix --- modules/userId/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/userId/index.js b/modules/userId/index.js index c1f8075863b..9802c2ac8ef 100644 --- a/modules/userId/index.js +++ b/modules/userId/index.js @@ -130,6 +130,9 @@ let configRegistry = []; /** @type {Submodule[]} */ let submoduleRegistry = []; +/** @type {(number|undefined)} */ +let timeoutID; + /** @type {(number|undefined)} */ export let syncDelay; @@ -238,6 +241,8 @@ function processSubmoduleCallbacks(submodules, cb) { // clear callback, this prop is used to test if all submodule callbacks are complete below submodule.callback = undefined; + + clearTimeout(timeoutID); }); } @@ -307,7 +312,7 @@ function initializeSubmodulesAndExecuteCallbacks(continueAuction) { utils.logInfo(`${MODULE_NAME} - auction delayed by ${auctionDelay} at most to fetch ids`); processSubmoduleCallbacks(submodulesWithCallbacks, continueCallback); - setTimeout(continueCallback, auctionDelay); + timeoutID = setTimeout(continueCallback, auctionDelay); } else { // wait for auction complete before processing submodule callbacks events.on(CONSTANTS.EVENTS.AUCTION_END, function auctionEndHandler() { From 095dad43f0f95e9c48923706b8b03aa152ff8f94 Mon Sep 17 00:00:00 2001 From: Neelanjan Sen Date: Mon, 16 Mar 2020 20:20:51 +0530 Subject: [PATCH 2/4] move clearTimeout outside forEach --- modules/userId/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/userId/index.js b/modules/userId/index.js index 9802c2ac8ef..36ee6521e05 100644 --- a/modules/userId/index.js +++ b/modules/userId/index.js @@ -241,9 +241,8 @@ function processSubmoduleCallbacks(submodules, cb) { // clear callback, this prop is used to test if all submodule callbacks are complete below submodule.callback = undefined; - - clearTimeout(timeoutID); }); + clearTimeout(timeoutID); } /** From 459aa9f9fe1bc2865b18a59e8277528d50df0e25 Mon Sep 17 00:00:00 2001 From: Neelanjan Sen Date: Mon, 16 Mar 2020 23:56:30 +0530 Subject: [PATCH 3/4] move setTimout above the function call --- modules/userId/index.js | 2 +- test/spec/modules/userId_spec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/userId/index.js b/modules/userId/index.js index 36ee6521e05..3dda4cba99f 100644 --- a/modules/userId/index.js +++ b/modules/userId/index.js @@ -309,9 +309,9 @@ function initializeSubmodulesAndExecuteCallbacks(continueAuction) { } } utils.logInfo(`${MODULE_NAME} - auction delayed by ${auctionDelay} at most to fetch ids`); - processSubmoduleCallbacks(submodulesWithCallbacks, continueCallback); timeoutID = setTimeout(continueCallback, auctionDelay); + processSubmoduleCallbacks(submodulesWithCallbacks, continueCallback); } else { // wait for auction complete before processing submodule callbacks events.on(CONSTANTS.EVENTS.AUCTION_END, function auctionEndHandler() { diff --git a/test/spec/modules/userId_spec.js b/test/spec/modules/userId_spec.js index fb728ef904b..c04d908d416 100644 --- a/test/spec/modules/userId_spec.js +++ b/test/spec/modules/userId_spec.js @@ -418,7 +418,7 @@ describe('User ID', function() { beforeEach(function() { sandbox = sinon.createSandbox(); - sandbox.stub(global, 'setTimeout'); + sandbox.stub(global, 'setTimeout').returns(2); sandbox.stub(events, 'on'); // remove cookie From 368e575211a1ae1ea7c6db9b36f10531c35dee51 Mon Sep 17 00:00:00 2001 From: Neelanjan Sen Date: Tue, 17 Mar 2020 00:41:54 +0530 Subject: [PATCH 4/4] increase auctionDelay --- test/spec/modules/userId_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/modules/userId_spec.js b/test/spec/modules/userId_spec.js index c04d908d416..1c4c4d3bee0 100644 --- a/test/spec/modules/userId_spec.js +++ b/test/spec/modules/userId_spec.js @@ -597,7 +597,7 @@ describe('User ID', function() { config.setConfig({ usersync: { - auctionDelay: 33, + auctionDelay: 200, syncDelay: 77, userIds: [{ name: 'mockId', storage: { name: 'MOCKID', type: 'cookie' }