Closed Bug 1377533 Opened 7 years ago Closed 7 years ago

Remove scattered references to Kinto and Sqlite in blocklist clients

Categories

(Toolkit :: Blocklist Implementation, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla57
Tracking Status
firefox57 --- fixed

People

(Reporter: leplatrem, Assigned: leplatrem)

References

Details

Attachments

(1 file)

      No description provided.
Assignee: nobody → mathieu
Blocks: 1377539
Comment on attachment 8882994 [details]
Bug 1377533 - Remove scattered references to Kinto and Sqlite in blocklist clients

https://reviewboard.mozilla.org/r/153966/#review159120

r+ wc

::: services/common/blocklist-clients.js
(Diff revision 2)
>  
>  const INVALID_SIGNATURE = "Invalid content/signature";
>  
> -// FIXME: this was the default path in earlier versions of
> +const KINTO_STORAGE_PATH = "kinto.sqlite";
> -// FirefoxAdapter, so for backwards compatibility we maintain this
> -// filename, even though it isn't descriptive of who is using it.

I think the comment is still valid and should still be kept. (Fixing this requires a migration.)

::: services/common/tests/unit/test_blocklist_certificates.js
(Diff revision 2)
> -
> -function do_get_kinto_collection(collectionName) {
> -  let config = {
> -    // Set the remote to be some server that will cause test failure when
> -    // hit since we should never hit the server directly, only via maybeSync()
> -    remote: "https://firefox.settings.services.mozilla.com/v1/",

It looks like we're getting rid of the `remote` thing? Are we assuming that any remote requests will already fail?

::: toolkit/components/extensions/ExtensionStorageSync.jsm
(Diff revision 2)
>   */
>  const storageSyncInit = (async function() {
>    const path = "storage-sync.sqlite";
> -  const opts = {path, sharedMemoryCache: false};
> +  const connection = await FirefoxAdapter.openConnection({path});
> -  const connection = await Sqlite.openConnection(opts);
> -  await FirefoxAdapter._init(connection);

+1, I forgot about this.
Attachment #8882994 - Flags: review?(eglassercamp) → review+
Comment on attachment 8882994 [details]
Bug 1377533 - Remove scattered references to Kinto and Sqlite in blocklist clients

https://reviewboard.mozilla.org/r/153966/#review159120

> It looks like we're getting rid of the `remote` thing? Are we assuming that any remote requests will already fail?

We only use the `collection` instance to perform `list()` and `clear()`, the comment was not relevant.
Comment on attachment 8882994 [details]
Bug 1377533 - Remove scattered references to Kinto and Sqlite in blocklist clients

https://reviewboard.mozilla.org/r/153966/#review175918
Attachment #8882994 - Flags: review?(mgoodwin) → review+
Keywords: checkin-needed
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/0f63d6c1f3c6
Remove scattered references to Kinto and Sqlite in blocklist clients r=glasserc,mgoodwin
Keywords: checkin-needed
Backed out for frequently failing xpcshell's toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js:

https://hg.mozilla.org/integration/autoland/rev/ef118cb7e125f7f5420510e9cf2c452330dd9392

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=0f63d6c1f3c60fd3da62f6003541f6065449f086&filter-resultStatus=testfailed&filter-resultStatus=busted&filter-resultStatus=exception&filter-resultStatus=retry&filter-resultStatus=usercancel&filter-resultStatus=runnable
Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=125533023&repo=autoland

[task 2017-08-24T14:11:46.691422Z] 14:11:46     INFO -  TEST-START | xpcshell.ini:toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js
[task 2017-08-24T14:11:53.643562Z] 14:11:53  WARNING -  TEST-UNEXPECTED-FAIL | xpcshell.ini:toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js | xpcshell return code: 0
[task 2017-08-24T14:11:53.660532Z] 14:11:53     INFO -  TEST-INFO took 6954ms
[task 2017-08-24T14:11:53.660758Z] 14:11:53     INFO -  >>>>>>>
[task 2017-08-24T14:11:53.662660Z] 14:11:53     INFO -  PID 13551 | [13551] WARNING: Couldn't get the user appdata directory. Crash events may not be produced.: file /home/worker/workspace/build/src/toolkit/crashreporter/nsExceptionHandler.cpp, line 2855
[task 2017-08-24T14:11:53.665130Z] 14:11:53     INFO -  (xpcshell/head.js) | test MAIN run_test pending (1)
[task 2017-08-24T14:11:53.666460Z] 14:11:53     INFO -  (xpcshell/head.js) | test run_next_test 0 pending (2)
[task 2017-08-24T14:11:53.667754Z] 14:11:53     INFO -  (xpcshell/head.js) | test MAIN run_test finished (2)
[task 2017-08-24T14:11:53.668076Z] 14:11:53     INFO -  running event loop
[task 2017-08-24T14:11:53.670153Z] 14:11:53     INFO -  xpcshell.ini:toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js | Starting test_storage_api_without_permissions
[task 2017-08-24T14:11:53.672264Z] 14:11:53     INFO -  (xpcshell/head.js) | test test_storage_api_without_permissions pending (2)
[task 2017-08-24T14:11:53.674727Z] 14:11:53     INFO -  "Extension attached"
[task 2017-08-24T14:11:53.677638Z] 14:11:53     INFO -  PID 13551 | [13551] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80040111: file /home/worker/workspace/build/src/netwerk/protocol/res/SubstitutingProtocolHandler.cpp, line 321
[task 2017-08-24T14:11:53.679720Z] 14:11:53     INFO -  (xpcshell/head.js) | test run_next_test 0 finished (2)
[task 2017-08-24T14:11:53.682388Z] 14:11:53     INFO -  PID 13551 | [13551] WARNING: 'NS_FAILED(rr->RetargetDeliveryTo(sts))', file /home/worker/workspace/build/src/dom/fetch/FetchDriver.cpp, line 632
[task 2017-08-24T14:11:53.685247Z] 14:11:53     INFO -  PID 13551 | [13551] WARNING: 'NS_FAILED(rr->RetargetDeliveryTo(sts))', file /home/worker/workspace/build/src/dom/fetch/FetchDriver.cpp, line 632
[task 2017-08-24T14:11:53.687777Z] 14:11:53     INFO -  PID 13551 | [13551] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80520012: file /home/worker/workspace/build/src/extensions/cookie/nsPermissionManager.cpp, line 2833
[task 2017-08-24T14:11:53.691644Z] 14:11:53     INFO -  PID 13551 | ++DOCSHELL 0xe3242c00 == 1 [pid = 13551] [id = {41ca22db-6b56-4be6-b3e4-2798f024392a}]
[task 2017-08-24T14:11:53.694328Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 1 (0xe208f400) [pid = 13551] [serial = 1] [outer = (nil)]
[task 2017-08-24T14:11:53.697164Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 2 (0xe2091000) [pid = 13551] [serial = 2] [outer = 0xe208f400]
[task 2017-08-24T14:11:53.700237Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 3 (0xe1e58c00) [pid = 13551] [serial = 3] [outer = 0xe208f400]
[task 2017-08-24T14:11:53.702948Z] 14:11:53     INFO -  PID 13551 | ++DOCSHELL 0xe1e5c800 == 2 [pid = 13551] [id = {36bdc4bf-8812-4a55-9fc5-2bd687ebc158}]
[task 2017-08-24T14:11:53.705451Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 4 (0xe1e5e400) [pid = 13551] [serial = 4] [outer = (nil)]
[task 2017-08-24T14:11:53.707766Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 5 (0xe1d2c000) [pid = 13551] [serial = 5] [outer = 0xe1e5e400]
[task 2017-08-24T14:11:53.710036Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 6 (0xe1d39c00) [pid = 13551] [serial = 6] [outer = 0xe1e5e400]
[task 2017-08-24T14:11:53.712804Z] 14:11:53     INFO -  TEST-PASS | xpcshell.ini:toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js | test_storage_api_without_permissions - [test_storage_api_without_permissions : 39] The storage API should not be initialized - true == true
[task 2017-08-24T14:11:53.715220Z] 14:11:53     INFO -  (xpcshell/head.js) | test run_next_test 1 pending (2)
[task 2017-08-24T14:11:53.717859Z] 14:11:53     INFO -  (xpcshell/head.js) | test test_storage_api_without_permissions finished (2)
[task 2017-08-24T14:11:53.728958Z] 14:11:53     INFO -  xpcshell.ini:toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js | Starting test_storage_api_with_permissions
[task 2017-08-24T14:11:53.730898Z] 14:11:53     INFO -  (xpcshell/head.js) | test test_storage_api_with_permissions pending (2)
[task 2017-08-24T14:11:53.732784Z] 14:11:53     INFO -  "Extension attached"
[task 2017-08-24T14:11:53.734952Z] 14:11:53     INFO -  PID 13551 | [13551] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80040111: file /home/worker/workspace/build/src/netwerk/protocol/res/SubstitutingProtocolHandler.cpp, line 321
[task 2017-08-24T14:11:53.737105Z] 14:11:53     INFO -  (xpcshell/head.js) | test run_next_test 1 finished (2)
[task 2017-08-24T14:11:53.740231Z] 14:11:53     INFO -  PID 13551 | ++DOCSHELL 0xe6da6000 == 3 [pid = 13551] [id = {1476a620-6740-464e-8592-20c8520874c0}]
[task 2017-08-24T14:11:53.742083Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 7 (0xe6db0400) [pid = 13551] [serial = 7] [outer = (nil)]
[task 2017-08-24T14:11:53.743964Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 8 (0xe6e07000) [pid = 13551] [serial = 8] [outer = 0xe6db0400]
[task 2017-08-24T14:11:53.745839Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 9 (0xe129d400) [pid = 13551] [serial = 9] [outer = 0xe6db0400]
[task 2017-08-24T14:11:53.747717Z] 14:11:53     INFO -  PID 13551 | ++DOCSHELL 0xe129e400 == 4 [pid = 13551] [id = {b1ab0cbe-d146-4c6e-9eef-8a0ce2174e38}]
[task 2017-08-24T14:11:53.749724Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 10 (0xe129ec00) [pid = 13551] [serial = 10] [outer = (nil)]
[task 2017-08-24T14:11:53.752450Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 11 (0xe12a1000) [pid = 13551] [serial = 11] [outer = 0xe129ec00]
[task 2017-08-24T14:11:53.764966Z] 14:11:53     INFO -  PID 13551 | ++DOMWINDOW == 12 (0xe12a3800) [pid = 13551] [serial = 12] [outer = 0xe129ec00]
[task 2017-08-24T14:11:53.766998Z] 14:11:53     INFO -  PID 13551 | JavaScript strict warning: resource://services-common/kinto-http-client.js, line 1610: ReferenceError: reference to undefined property "initializer"
[task 2017-08-24T14:11:53.769022Z] 14:11:53     INFO -  PID 13551 | JavaScript strict warning: resource://services-common/kinto-http-client.js, line 1078: ReferenceError: reference to undefined property "initializer"
[task 2017-08-24T14:11:53.771086Z] 14:11:53     INFO -  PID 13551 | JavaScript strict warning: resource://services-common/kinto-http-client.js, line 339: ReferenceError: reference to undefined property "initializer"
[task 2017-08-24T14:11:53.773239Z] 14:11:53     INFO -  TEST-PASS | xpcshell.ini:toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js | test_storage_api_with_permissions - [test_storage_api_with_permissions : 64] The storage API should be initialized - "object" == "object"
[task 2017-08-24T14:11:53.775494Z] 14:11:53     INFO -  "CONSOLE_MESSAGE: (warn) [JavaScript Warning: "ReferenceError: reference to undefined property "initializer"" {file: "resource://services-common/kinto-http-client.js" line: 1610}]"
[task 2017-08-24T14:11:53.779860Z] 14:11:53     INFO -  "CONSOLE_MESSAGE: (warn) [JavaScript Warning: "ReferenceError: reference to undefined property "initializer"" {file: "resource://services-common/kinto-http-client.js" line: 1078}]"
[task 2017-08-24T14:11:53.785090Z] 14:11:53     INFO -  "CONSOLE_MESSAGE: (warn) [JavaScript Warning: "ReferenceError: reference to undefined property "initializer"" {file: "resource://services-common/kinto-http-client.js" line: 339}]"
[task 2017-08-24T14:11:53.786043Z] 14:11:53     INFO -  (xpcshell/head.js) | test run_next_test 2 pending (2)
[task 2017-08-24T14:11:53.790632Z] 14:11:53     INFO -  (xpcshell/head.js) | test test_storage_api_with_permissions finished (2)
[task 2017-08-24T14:11:53.791559Z] 14:11:53     INFO -  (xpcshell/head.js) | test run_next_test 2 finished (1)
[task 2017-08-24T14:11:53.792423Z] 14:11:53     INFO -  exiting test
[task 2017-08-24T14:11:53.793369Z] 14:11:53     INFO -  PID 13551 | WARNING: A blocker encountered an error while we were waiting.
[task 2017-08-24T14:11:53.794666Z] 14:11:53     INFO -  PID 13551 |           Blocker:  ExtensionStorageSync: close Sqlite handle
[task 2017-08-24T14:11:53.798587Z] 14:11:53     INFO -  PID 13551 |           Phase: profile-before-change
[task 2017-08-24T14:11:53.801212Z] 14:11:53     INFO -  PID 13551 |           State: (none)
[task 2017-08-24T14:11:53.803410Z] 14:11:53     INFO -  PID 13551 | WARNING: Error: Phase "Sqlite.jsm: wait until all clients have completed their task" is finished, it is too late to register completion condition "Kinto storage adapter connection closing"
[task 2017-08-24T14:11:53.809013Z] 14:11:53     INFO -  PID 13551 | WARNING: addBlocker@resource://gre/modules/AsyncShutdown.jsm:676:15
[task 2017-08-24T14:11:53.810957Z] 14:11:53     INFO -  PID 13551 | openConnection@resource://services-common/kinto-storage-adapter.js:250:7
[task 2017-08-24T14:11:53.812908Z] 14:11:53     INFO -  PID 13551 | async*storageSyncInit<@resource://gre/modules/ExtensionStorageSync.jsm:339:28
[task 2017-08-24T14:11:53.814769Z] 14:11:53     INFO -  PID 13551 | async*@resource://gre/modules/ExtensionStorageSync.jsm:337:32
[task 2017-08-24T14:11:53.816646Z] 14:11:53     INFO -  PID 13551 | XPCU_moduleLambda@resource://gre/modules/XPCOMUtils.jsm:333:9
[task 2017-08-24T14:11:53.818481Z] 14:11:53     INFO -  PID 13551 | get@resource://gre/modules/XPCOMUtils.jsm:199:21
[task 2017-08-24T14:11:53.820332Z] 14:11:53     INFO -  PID 13551 | getAPI/<.storage.onChanged<@chrome://extensions/content/ext-storage.js:75:11
[task 2017-08-24T14:11:53.824875Z] 14:11:53     INFO -  PID 13551 | addListener@resource://gre/modules/ExtensionCommon.jsm:1589:42
[task 2017-08-24T14:11:53.826790Z] 14:11:53     INFO -  PID 13551 | addListener@resource://gre/modules/ExtensionCommon.jsm:1627:50
[task 2017-08-24T14:11:53.828708Z] 14:11:53     INFO -  PID 13551 | addListener@resource://gre/modules/ExtensionParent.jsm:807:35
[task 2017-08-24T14:11:53.830623Z] 14:11:53     INFO -  PID 13551 | async*receiveMessage@resource://gre/modules/ExtensionParent.jsm:653:11
[task 2017-08-24T14:11:53.832489Z] 14:11:53     INFO -  PID 13551 | _do_main@/home/worker/workspace/build/tests/xpcshell/head.js:221:3
[task 2017-08-24T14:11:53.836858Z] 14:11:53     INFO -  PID 13551 | _execute_test@/home/worker/workspace/build/tests/xpcshell/head.js:544:5
[task 2017-08-24T14:11:53.838691Z] 14:11:53     INFO -  PID 13551 | @-e:1:1
[task 2017-08-24T14:11:53.840886Z] 14:11:53     INFO -  PID 13551 | JavaScript error: resource://gre/modules/AsyncShutdown.jsm, line 676: Error: Phase "Sqlite.jsm: wait until all clients have completed their task" is finished, it is too late to register completion condition "Kinto storage adapter connection closing"
[task 2017-08-24T14:11:53.843088Z] 14:11:53     INFO -  PID 13551 | JavaScript error: resource://gre/modules/AsyncShutdown.jsm, line 676: Error: Phase "Sqlite.jsm: wait until all clients have completed their task" is finished, it is too late to register completion condition "Kinto storage adapter connection closing"
[task 2017-08-24T14:11:53.845315Z] 14:11:53     INFO -  "CONSOLE_MESSAGE: (error) [JavaScript Error: "Error: Phase "Sqlite.jsm: wait until all clients have completed their task" is finished, it is too late to register completion condition "Kinto storage adapter connection closing"" {file: "resource://gre/modules/AsyncShutdown.jsm" line: 676}]"
[task 2017-08-24T14:11:53.849215Z] 14:11:53     INFO -  "CONSOLE_MESSAGE: (error) [JavaScript Error: "Error: Phase "Sqlite.jsm: wait until all clients have completed their task" is finished, it is too late to register completion condition "Kinto storage adapter connection closing"" {file: "resource://gre/modules/AsyncShutdown.jsm" line: 676}]"
[task 2017-08-24T14:11:53.851734Z] 14:11:53  WARNING -  TEST-UNEXPECTED-FAIL | xpcshell.ini:toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js | test_storage_api_with_permissions - [test_storage_api_with_permissions : 265] A promise chain failed to handle a rejection: Phase "Sqlite.jsm: wait until all clients have completed their task" is finished, it is too late to register completion condition "Kinto storage adapter connection closing" - stack: observe@resource://gre/modules/AsyncShutdown.jsm:534:9
[task 2017-08-24T14:11:53.853880Z] 14:11:53     INFO -  _execute_test@/home/worker/workspace/build/tests/xpcshell/head.js:624:5
[task 2017-08-24T14:11:53.856781Z] 14:11:53     INFO -  @-e:1:1
[task 2017-08-24T14:11:53.858658Z] 14:11:53     INFO -  Rejection date: Thu Aug 24 2017 14:11:51 GMT+0000 (UTC) - false == true
[task 2017-08-24T14:11:53.861969Z] 14:11:53     INFO -  resource://testing-common/PromiseTestUtils.jsm:assertNoUncaughtRejections:265
[task 2017-08-24T14:11:53.863915Z] 14:11:53     INFO -  /home/worker/workspace/build/tests/xpcshell/head.js:_execute_test:632
[task 2017-08-24T14:11:53.865705Z] 14:11:53     INFO -  -e:null:1
[task 2017-08-24T14:11:53.867518Z] 14:11:53     INFO -  exiting test
Flags: needinfo?(mathieu)
I spent some time yesterday to fix this, but couldn't find a clean way out.

Ethan, what do you think of something like that:

    --- a/services/common/kinto-storage-adapter.js
    +++ b/services/common/kinto-storage-adapter.js
    @@ -247,16 +247,17 @@ class FirefoxAdapter extends Kinto.adapt
         const opts = Object.assign({}, { sharedMemoryCache: false }, options);
         const conn = await Sqlite.openConnection(opts).then(this._init);
         try {
           Sqlite.shutdown.addBlocker("Kinto storage adapter connection closing",
                                      () => conn.close());
         } catch (e) {
           // It's too late to block shutdown, just close the connection.
           await conn.close();
    +      e.connection = conn;
           throw e;
         }
         return conn;
       }
     
       clear() {
         const params = { collection_name: this.collection };
         return this._executeStatement(statements.clearData, params);
    diff --git a/toolkit/components/extensions/ExtensionStorageSync.jsm b/toolkit/components/extensions/ExtensionStorageSync.jsm
    --- a/toolkit/components/extensions/ExtensionStorageSync.jsm
    +++ b/toolkit/components/extensions/ExtensionStorageSync.jsm
    @@ -331,17 +331,22 @@ global.KeyRingEncryptionRemoteTransforme
      * Fields in the object returned by this Promise:
      *
      * - connection: a Sqlite connection. Meant for internal use only.
      * - kinto: a KintoBase object, suitable for using in Firefox. All
      *   collections in this database will use the same Sqlite connection.
      */
     const storageSyncInit = (async function() {
       const path = "storage-sync.sqlite";
    -  const connection = await FirefoxAdapter.openConnection({path});
    +  let connection;
    +  try {
    +    connection = await FirefoxAdapter.openConnection({path});
    +  } catch (e) {
    +    connection = e.connection;
    +  }
       return {
         connection,
         kinto: new Kinto({
           adapter: FirefoxAdapter,
           adapterOptions: {sqliteHandle: connection},
           timeout: KINTO_REQUEST_TIMEOUT,
         }),
       };
Flags: needinfo?(mathieu) → needinfo?(eglassercamp)
I spent some time pair-programming with :leplatrem today to investigate this issue. We think the actual error is happening because:

- The test loads an extension which does a `browser.storage.addListener`.
- The `addListener` implementation in ExtensionStorageSync.jsm does a `getCollection`, which is unfortunately asynchronous, but because the addListener API is synchronous, we let it "fork off" the promise and not listen to see what it does.
- The extension's synchronous call ends and it ends and it is unloaded when the test ends.
- The asynchronous `getCollection` tries to open a Sqlite connection, which triggers the error, which causes the promise to reject.
- Tests with uncaught rejections fail.

:leplatrem came up with a hack that quashes this exception in just this sort of case. But the reason that we call `getCollection` in step 2 is mostly for historical reasons. We can probably clean this up and make this whole module a bit cleaner. I've opened bug 1395215 to reflect this. It should be a quick fix but I don't want to interfere with this bug so I'll wait until it lands.
Flags: needinfo?(eglassercamp)
See Also: → 1395215
Keywords: checkin-needed
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/e6189da47385
Remove scattered references to Kinto and Sqlite in blocklist clients r=glasserc,mgoodwin
Keywords: checkin-needed
I'm sorry for the trouble :(

There might be a problem in the way I trigger try builds, because all tests were green https://treeherder.mozilla.org/#/jobs?repo=try&revision=64e9ee713a6a

I'll look into it, and submit it again!

Thanks for your patience...
Flags: needinfo?(mathieu)
The immediate async function ``storageSyncInit`` is firing up when importing ExtensionStorageSync.jsm

Import side-effects are undesirable, so I propose the following changes:
https://pastebin.com/91dUDV3n

Ethan, what do you think?
Flags: needinfo?(eglassercamp)
This looks OK to me. Memoizing the result by adding an attribute to the async function feels a little strange, but I guess the alternative would be a global variable or something, so I'm fine with this. Thanks for digging into this!
Keywords: checkin-needed
(In reply to Mathieu Leplatre (:leplatrem) from comment #15)
> There might be a problem in the way I trigger try builds, because all tests
> were green
It was an intermittent failure, so you'd need to run the tests a few times to catch it.
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/25d8fc703dde
Remove scattered references to Kinto and Sqlite in blocklist clients r=glasserc,mgoodwin
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/25d8fc703dde
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla57
Flags: needinfo?(eglassercamp)
Component: Blocklist Policy Requests → Blocklist Implementation
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: