Bug: Intermittent TV toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | Uncaught exception in test bound testRollouts - ConstraintError: A mutation operation in the transaction failed because a constraint was not satisfied.
Status: RESOLVED
Priority: P5
Resolution: WONTFIX
Created: 2023-11-13 20:38:42+00:00
Resolved: 2023-11-24 17:52:11+00:00

**Filed by:** nfay [at] mozilla.com
**Parsed log:** https://treeherder.mozilla.org/logviewer?job_id=436076150&repo=autoland
**Full log:** https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/as72B5xLTsOYw0i71IZQXQ/runs/0/artifacts/public/logs/live_backing.log
**Reftest URL:** https://hg.mozilla.org/mozilla-central/raw-file/tip/layout/tools/reftest/reftest-analyzer.xhtml#logurl=https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/as72B5xLTsOYw0i71IZQXQ/runs/0/artifacts/public/logs/live_backing.log&only_show_unexpected=1

---
```
[task 2023-11-13T19:19:55.043Z] 19:19:55     INFO - TEST-START | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js
[task 2023-11-13T19:19:55.505Z] 19:19:55     INFO - TEST-INFO | started process screentopng
[task 2023-11-13T19:19:55.923Z] 19:19:55     INFO - TEST-INFO | screentopng: exit 0
[task 2023-11-13T19:19:55.923Z] 19:19:55     INFO - Buffered messages logged at 19:19:55
[task 2023-11-13T19:19:55.923Z] 19:19:55     INFO - Entering test bound testTelemetry
[task 2023-11-13T19:19:55.924Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | Telemetry is accesible - 
[task 2023-11-13T19:19:55.925Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | telemetry filters pull the latest ping from a type - 
[task 2023-11-13T19:19:55.925Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | telemetry filters pull from submitted telemetry pings - 
[task 2023-11-13T19:19:55.926Z] 19:19:55     INFO - Leaving test bound testTelemetry
[task 2023-11-13T19:19:55.927Z] 19:19:55     INFO - Entering test bound testUserId
[task 2023-11-13T19:19:55.928Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | userId available - 
[task 2023-11-13T19:19:55.929Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | userId is pulled from preferences - 
[task 2023-11-13T19:19:55.930Z] 19:19:55     INFO - Leaving test bound testUserId
[task 2023-11-13T19:19:55.931Z] 19:19:55     INFO - Entering test bound testDistribution
[task 2023-11-13T19:19:55.932Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | distribution has a default value - 
[task 2023-11-13T19:19:55.933Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | distribution is read from preferences - 
[task 2023-11-13T19:19:55.934Z] 19:19:55     INFO - Leaving test bound testDistribution
[task 2023-11-13T19:19:55.935Z] 19:19:55     INFO - Entering test bound inner
[task 2023-11-13T19:19:55.936Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | country is read from the server API - 
[task 2023-11-13T19:19:55.953Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | request_time is read from the server API - 
[task 2023-11-13T19:19:55.955Z] 19:19:55     INFO - Leaving test bound inner
[task 2023-11-13T19:19:55.956Z] 19:19:55     INFO - Entering test bound testSync
[task 2023-11-13T19:19:55.958Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | syncMobileDevices defaults to zero - 
[task 2023-11-13T19:19:55.965Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | syncDesktopDevices defaults to zero - 
[task 2023-11-13T19:19:55.967Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | syncTotalDevices defaults to zero - 
[task 2023-11-13T19:19:55.969Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | syncMobileDevices is read when set - 
[task 2023-11-13T19:19:55.971Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | syncDesktopDevices is read when set - 
[task 2023-11-13T19:19:55.972Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | syncTotalDevices is read when set - 
[task 2023-11-13T19:19:55.973Z] 19:19:55     INFO - Leaving test bound testSync
[task 2023-11-13T19:19:55.976Z] 19:19:55     INFO - Entering test bound testDoNotTrack
[task 2023-11-13T19:19:55.978Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | doNotTrack has a default value - 
[task 2023-11-13T19:19:55.978Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | doNotTrack is read from preferences - 
[task 2023-11-13T19:19:55.980Z] 19:19:55     INFO - Leaving test bound testDoNotTrack
[task 2023-11-13T19:19:55.981Z] 19:19:55     INFO - Entering test bound testExperiments
[task 2023-11-13T19:19:55.982Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | experiments.all returns all stored experiment names - ["active","expired"] deepEqual ["active","expired"] - 
[task 2023-11-13T19:19:55.983Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | experiments.active returns all active experiment names - ["active"] deepEqual ["active"] - 
[task 2023-11-13T19:19:55.984Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | experiments.expired returns all expired experiment names - ["expired"] deepEqual ["expired"] - 
[task 2023-11-13T19:19:55.988Z] 19:19:55     INFO - Leaving test bound testExperiments
[task 2023-11-13T19:19:55.997Z] 19:19:55     INFO - Entering test bound isFirstRun
[task 2023-11-13T19:19:55.997Z] 19:19:55     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | isFirstRun is read from preferences - 
[task 2023-11-13T19:19:55.998Z] 19:19:55     INFO - Leaving test bound isFirstRun
[task 2023-11-13T19:19:55.999Z] 19:19:55     INFO - Entering test bound testStudies
[task 2023-11-13T19:19:56.000Z] 19:19:56     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | addon and preference studies shold be accessible - {"pref":{"test-study 1":{"userFacingName":"Test study 1","userFacingDescription":"Test study 1 description","slug":"test-study 1","branch":"a-test-branch","expired":false,"lastSeen":"2023-11-13T19:19:55.077Z","experimentType":"exp","actionName":"PreferenceExperimentAction","preferences":{"test.study":{"preferenceValue":false,"preferenceType":"boolean","previousPreferenceValue":null,"preferenceBranchType":"default","overridden":false}}}},"addon":{"test-study 1":{"recipeId":1,"slug":"test-study 1","userFacingName":"Test study","userFacingDescription":"test description","branch":"b-test-branch","active":true,"addonId":"normandydriver-a@example.com","addonUrl":"http://test/addon.xpi","addonVersion":"1.0.0","studyStartDate":"2023-11-13T19:19:55.077Z","studyEndDate":null,"extensionApiId":1,"extensionHash":"ade1c14196ec4fe0aa0a6ba40ac433d7c8d1ec985581a8a94d43dc58991b5171","extensionHashAlgorithm":"sha256","temporaryErrorDeadline":null}}} deepEqual {"pref":{"test-study 1":{"userFacingName":"Test study 1","userFacingDescription":"Test study 1 description","slug":"test-study 1","branch":"a-test-branch","expired":false,"lastSeen":"2023-11-13T19:19:55.077Z","experimentType":"exp","actionName":"PreferenceExperimentAction","preferences":{"test.study":{"preferenceValue":false,"preferenceType":"boolean","previousPreferenceValue":null,"preferenceBranchType":"default","overridden":false}}}},"addon":{"test-study 1":{"recipeId":1,"slug":"test-study 1","userFacingName":"Test study","userFacingDescription":"test description","branch":"b-test-branch","active":true,"addonId":"normandydriver-a@example.com","addonUrl":"http://test/addon.xpi","addonVersion":"1.0.0","studyStartDate":"2023-11-13T19:19:55.077Z","studyEndDate":null,"extensionApiId":1,"extensionHash":"ade1c14196ec4fe0aa0a6ba40ac433d7c8d1ec985581a8a94d43dc58991b5171","extensionHashAlgorithm":"sha256","temporaryErrorDeadline":null}}} - 
[task 2023-11-13T19:19:56.000Z] 19:19:56     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | A specific preference experiment field should be accessible in the context - 
[task 2023-11-13T19:19:56.001Z] 19:19:56     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | A specific addon study field should be accessible in the context - 
[task 2023-11-13T19:19:56.002Z] 19:19:56     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | undefined assertion name - 
[task 2023-11-13T19:19:56.003Z] 19:19:56     INFO - TEST-PASS | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | undefined assertion name - 
[task 2023-11-13T19:19:56.009Z] 19:19:56     INFO - Leaving test bound testStudies
[task 2023-11-13T19:19:56.010Z] 19:19:56     INFO - Entering test bound testRollouts
[task 2023-11-13T19:19:56.011Z] 19:19:56     INFO - Buffered messages finished
[task 2023-11-13T19:19:56.012Z] 19:19:56     INFO - TEST-UNEXPECTED-FAIL | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | Uncaught exception in test bound testRollouts - ConstraintError: A mutation operation in the transaction failed because a constraint was not satisfied.
[task 2023-11-13T19:19:56.013Z] 19:19:56     INFO - Not taking screenshot here: see the one that was previously logged
[task 2023-11-13T19:19:56.014Z] 19:19:56     INFO - TEST-UNEXPECTED-FAIL | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | A promise chain failed to handle a rejection: null - stack: Transaction/this._completionPromise</transaction.onerror@resource://gre/modules/IndexedDB.sys.mjs:242:15
[task 2023-11-13T19:19:56.015Z] 19:19:56     INFO - EventHandlerNonNull*Transaction/this._completionPromise<@resource://gre/modules/IndexedDB.sys.mjs:241:7
[task 2023-11-13T19:19:56.015Z] 19:19:56     INFO - Transaction@resource://gre/modules/IndexedDB.sys.mjs:239:31
[task 2023-11-13T19:19:56.016Z] 19:19:56     INFO - transaction@resource://gre/modules/IndexedDB.sys.mjs:364:23
[task 2023-11-13T19:19:56.016Z] 19:19:56     INFO - objectStore@resource://gre/modules/IndexedDB.sys.mjs:392:28
[task 2023-11-13T19:19:56.017Z] 19:19:56     INFO - getStore@resource://normandy/lib/AddonRollouts.sys.mjs:80:13
[task 2023-11-13T19:19:56.017Z] 19:19:56     INFO - add@resource://normandy/lib/AddonRollouts.sys.mjs:105:12
[task 2023-11-13T19:19:56.017Z] 19:19:56     INFO - async*testRollouts@chrome://mochitests/content/browser/toolkit/components/normandy/test/browser/browser_ClientEnvironment.js:245:23
[task 2023-11-13T19:19:56.018Z] 19:19:56     INFO - async*withTestMock/</<@resource://normandy/lib/PreferenceRollouts.sys.mjs:193:17
[task 2023-11-13T19:19:56.018Z] 19:19:56     INFO - async*handleTask@chrome://mochikit/content/browser-test.js:1134:26
[task 2023-11-13T19:19:56.018Z] 19:19:56     INFO - _runTaskBasedTest@chrome://mochikit/content/browser-test.js:1206:18
[task 2023-11-13T19:19:56.019Z] 19:19:56     INFO - async*Tester_execTest@chrome://mochikit/content/browser-test.js:1348:14
[task 2023-11-13T19:19:56.019Z] 19:19:56     INFO - nextTest/<@chrome://mochikit/content/browser-test.js:1117:14
[task 2023-11-13T19:19:56.019Z] 19:19:56     INFO - SimpleTest.waitForFocus/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1058:13
[task 2023-11-13T19:19:56.020Z] 19:19:56     INFO - Rejection date: Mon Nov 13 2023 19:19:55 GMT+0000 (Coordinated Universal Time) - false == true - {"filename":"resource://testing-common/PromiseTestUtils.sys.mjs","name":"assertNoUncaughtRejections","sourceId":601,"lineNumber":266,"columnNumber":14,"sourceLine":"","asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://mochikit/content/browser-test.js","name":"handleTask","sourceId":564,"lineNumber":1162,"columnNumber":22,"sourceLine":"","asyncCause":null,"asyncCaller":{"filename":"chrome://mochikit/content/browser-test.js","name":"_runTaskBasedTest","sourceId":564,"lineNumber":1206,"columnNumber":18,"sourceLine":"","asyncCause":null,"asyncCaller":{"filename":"chrome://mochikit/content/browser-test.js","name":"Tester_execTest","sourceId":564,"lineNumber":1348,"columnNumber":14,"sourceLine":"","asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://mochikit/content/browser-test.js","name":"nextTest/<","sourceId":564,"lineNumber":1117,"columnNumber":14,"sourceLine":"","asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://mochikit/content/tests/SimpleTest/SimpleTest.js","name":"SimpleTest.waitForFocus/<","sourceId":592,"lineNumber":1058,"columnNumber":13,"sourceLine":"","asyncCause":null,"asyncCaller":null,"caller":null,"formattedStack":"SimpleTest.waitForFocus/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1058:13\n","nativeSavedFrame":{}},"formattedStack":"nextTest/<@chrome://mochikit/content/browser-test.js:1117:14\nSimpleTest.waitForFocus/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1058:13\n","nativeSavedFrame":{}},"formattedStack":"async*Tester_execTest@chrome://mochikit/content/browser-test.js:1348:14\nnextTest/<@chrome://mochikit/content/browser-test.js:1117:14\nSimpleTest.waitForFocus/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1058:13\n","nativeSavedFrame":{}},"caller":null,"formattedStack":"async*_runTaskBasedTest@chrome://mochikit/content/browser-test.js:1206:18\nasync*Tester_execTest@chrome://mochikit/content/browser-test.js:1348:14\nnextTest/<@chrome://mochikit/content/browser-test.js:1117:14\nSimpleTest.waitForFocus/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1058:13\n","nativeSavedFrame":{}},"caller":null,"formattedStack":"handleTask@chrome://mochikit/content/browser-test.js:1162:22\nasync*_runTaskBasedTest@chrome://mochikit/content/browser-test.js:1206:18\nasync*Tester_execTest@chrome://mochikit/content/browser-test.js:1348:14\nnextTest/<@chrome://mochikit/content/browser-test.js:1117:14\nSimpleTest.waitForFocus/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1058:13\n","nativeSavedFrame":{}},"formattedStack":"assertNoUncaughtRejections@resource://testing-common/PromiseTestUtils.sys.mjs:266:14\nhandleTask@chrome://mochikit/content/browser-test.js:1162:22\nasync*_runTaskBasedTest@chrome://mochikit/content/browser-test.js:1206:18\nasync*Tester_execTest@chrome://mochikit/content/browser-test.js:1348:14\nnextTest/<@chrome://mochikit/content/browser-test.js:1117:14\nSimpleTest.waitForFocus/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1058:13\n","nativeSavedFrame":{}}
[task 2023-11-13T19:19:56.020Z] 19:19:56     INFO - Stack trace:
[task 2023-11-13T19:19:56.021Z] 19:19:56     INFO - resource://testing-common/PromiseTestUtils.sys.mjs:assertNoUncaughtRejections:266
[task 2023-11-13T19:19:56.021Z] 19:19:56     INFO - chrome://mochikit/content/browser-test.js:handleTask:1162
[task 2023-11-13T19:19:56.022Z] 19:19:56     INFO - chrome://mochikit/content/browser-test.js:_runTaskBasedTest:1206
[task 2023-11-13T19:19:56.022Z] 19:19:56     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1348
[task 2023-11-13T19:19:56.023Z] 19:19:56     INFO - chrome://mochikit/content/browser-test.js:nextTest/<:1117
[task 2023-11-13T19:19:56.023Z] 19:19:56     INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/<:1058
[task 2023-11-13T19:19:56.024Z] 19:19:56     INFO - Leaving test bound testRollouts
[task 2023-11-13T19:19:56.025Z] 19:19:56     INFO - GECKO(10734) | JavaScript error: resource://gre/modules/IndexedDB.sys.mjs, line 242: uncaught exception: null
[task 2023-11-13T19:19:56.026Z] 19:19:56     INFO - Console message: [JavaScript Error: "uncaught exception: null" {file: "resource://gre/modules/IndexedDB.sys.mjs" line: 242}]
[task 2023-11-13T19:19:56.027Z] 19:19:56     INFO - GECKO(10734) | MEMORY STAT | vsize 130560247MB | residentFast 1583MB
[task 2023-11-13T19:19:56.028Z] 19:19:56     INFO - TEST-OK | toolkit/components/normandy/test/browser/browser_ClientEnvironment.js | took 531ms
[task 2023-11-13T19:19:56.028Z] 19:19:56     INFO - checking window state
[task 2023-11-13T19:19:59.737Z] 19:19:59     INFO - GECKO(10734) | Completed ShutdownLeaks collections in process 10878
[task 2023-11-13T19:19:59.785Z] 19:19:59     INFO - GECKO(10734) | Completed ShutdownLeaks collections in process 10833
[task 2023-11-13T19:20:00.137Z] 19:20:00     INFO - GECKO(10734) | Completed ShutdownLeaks collections in process 10941
[task 2023-11-13T19:20:00.166Z] 19:20:00     INFO - GECKO(10734) | Completed ShutdownLeaks collections in process 10804
[task 2023-11-13T19:20:02.661Z] 19:20:02     INFO - GECKO(10734) | Completed ShutdownLeaks collections in process 10734
[task 2023-11-13T19:20:02.663Z] 19:20:02     INFO - TEST-START | Shutdown
[task 2023-11-13T19:20:02.665Z] 19:20:02     INFO - Browser Chrome Test Summary
[task 2023-11-13T19:20:02.666Z] 19:20:02     INFO - Passed:  57
[task 2023-11-13T19:20:02.669Z] 19:20:02     INFO - Failed:  2
[task 2023-11-13T19:20:02.672Z] 19:20:02     INFO - Todo:    0
[task 2023-11-13T19:20:02.673Z] 19:20:02     INFO - Mode:    e10s
[task 2023-11-13T19:20:02.675Z] 19:20:02     INFO - *** End BrowserChrome Test Results ***
[task 2023-11-13T19:20:09.426Z] 19:20:09     INFO - GECKO(10734) | 1699903209425	Marionette	TRACE	Received observer notification quit-application
[task 2023-11-13T19:20:09.429Z] 19:20:09     INFO - GECKO(10734) | 1699903209427	Marionette	INFO	Stopped listening on port 2828
[task 2023-11-13T19:20:09.439Z] 19:20:09     INFO - GECKO(10734) | 1699903209438	Marionette	DEBUG	Marionette stopped listening
[task 2023-11-13T19:20:10.248Z] 19:20:10     INFO - GECKO(10734) | console.error: ({})
[task 2023-11-13T19:20:14.373Z] 19:20:14     INFO - TEST-INFO | Main app process: exit 0
```