]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
js: resolve the mysterious "extra" unhandled exception notification, caused by inadve...
authorstephan <stephan@noemail.net>
Wed, 24 Aug 2022 14:50:10 +0000 (14:50 +0000)
committerstephan <stephan@noemail.net>
Wed, 24 Aug 2022 14:50:10 +0000 (14:50 +0000)
FossilOrigin-Name: 7467ac88801224089b51c6ba7924f93283dd87beca602a186c83632df26cfc85

ext/wasm/api/sqlite3-api-cleanup.js
ext/wasm/api/sqlite3-api-prologue.js
ext/wasm/api/sqlite3-api-worker1.js
ext/wasm/sqlite3-worker1-promiser.js
ext/wasm/testing-worker1-promiser.js
manifest
manifest.uuid

index ed6b8c40eaca1c2dfd82d44f8471cff1b7f38d46..01aba213ed8f25a0d9f32f7844a2e0d0d5e97063 100644 (file)
@@ -21,7 +21,7 @@ if('undefined' !== typeof Module){ // presumably an Emscripten build
      Install a suitable default configuration for sqlite3ApiBootstrap().
   */
   const SABC = self.sqlite3ApiBootstrap.defaultConfig;
-  SABC.Module = Module /* ==>  Current needs to be exposed here for test code. NOT part
+  SABC.Module = Module /* ==>  Currently needs to be exposed here for test code. NOT part
                           of the public API. */;
   SABC.exports = Module['asm'];
   SABC.memory = Module.wasmMemory /* gets set if built with -sIMPORT_MEMORY */;
index d92b948fce68c83e012049eae79a0d966bb8b6b5..5217cfcde3f0d0839bffda08c2d66ee19b7a4916 100644 (file)
@@ -173,7 +173,7 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
       config[k] = config[k]();
     }
   });
-  
+
   /** Throws a new Error, the message of which is the concatenation
       all args with a space between each. */
   const toss = (...args)=>{throw new Error(args.join(' '))};
index 39263a4abea2387764fd5e5c1a68f4b50a6df810..c63ab1117e720185e507e95a14a591740caba878 100644 (file)
@@ -180,7 +180,7 @@ sqlite3.initWorker1API = function(){
         toss("Throwing because of simulateError flag.");
       }
       if(args.persistent && args.filename){
-        oargs.filaname = sqlite3.capi.sqlite3_web_persistent_dir() + args.filename;
+        oargs.filename = sqlite3.capi.sqlite3_web_persistent_dir() + args.filename;
       }else if('' === args.filename){
         oargs.filename = args.filename;
       }else{
index c01ed9a5c6c440329b017ef7d20a1a2d778271ce..d023f863667fe2e33bd00e74238ab632c7f98bdd 100644 (file)
@@ -18,7 +18,7 @@
   slightly simpler client-side interface than the slightly-lower-level
   Worker API does.
 
-  This script necessarily exposes on global symbol, but clients may
+  This script necessarily exposes one global symbol, but clients may
   freely `delete` that symbol after calling it.
 */
 'use strict';
@@ -81,8 +81,8 @@
    information about messages.
 
 
-   This function returns a stateful factory function with the following
-   interfaces:
+   This function returns a stateful factory function with the
+   following interfaces:
 
    - Promise function(messageType, messageArgs)
    - Promise function({message object})
@@ -183,7 +183,11 @@ self.sqlite3Worker1Promiser = function callee(config = callee.defaultConfig){
         default:
           break;
     }
-    msgHandler.resolve(ev);
+    try {
+      msgHandler.resolve(ev);
+    }catch(e){
+      msgHandler.reject(e);
+    }
   }/*worker.onmessage()*/;
   return function(/*(msgType, msgArgs) || (msg)*/){
     let msg;
@@ -214,19 +218,19 @@ self.sqlite3Worker1Promiser = function callee(config = callee.defaultConfig){
       }
     }
     //debug("requestWork", msg);
-    const p = new Promise(function(resolve, reject){
+    let p = new Promise(function(resolve, reject){
       proxy.resolve = resolve;
       proxy.reject = reject;
       handlerMap[msg.messageId] = proxy;
       debug("Posting",msg.type,"message to Worker dbId="+(config.dbId||'default')+':',msg);
       config.worker.postMessage(msg);
     });
-    if(cbId) p.finally(()=>delete handlerMap[cbId]);
+    if(cbId) p = p.finally(()=>delete handlerMap[cbId]);
     return p;
   };
 }/*sqlite3Worker1Promiser()*/;
 self.sqlite3Worker1Promiser.defaultConfig = {
   worker: ()=>new Worker('sqlite3-worker1.js'),
-  onerror: console.error.bind(console),
+  onerror: (...args)=>console.error('worker1 error',...args),
   dbId: undefined
 };
index 9475df411afcdb66f35c24ba3cf5e2aa4e61600d..cfae443d06a8a80833c3b2d9310a50f33d8d944f 100644 (file)
   };
 
   let startTime;
-  const logEventResult = async function(evd){
-    logHtml(evd.errorClass ? 'error' : '',
-            "response to",evd.messageId,"Worker time =",
-            (evd.workerRespondTime - evd.workerReceivedTime),"ms.",
-            "Round-trip event time =",
-            (performance.now() - evd.departureTime),"ms.",
-            (evd.errorClass ? evd.message : "")
-           );
-  };
-
   const testCount = async ()=>{
     logHtml("","Total test count:",T.counter+". Total time =",(performance.now() - startTime),"ms");
   };
   delete self.sqlite3Worker1Promiser;
 
   const wtest = async function(msgType, msgArgs, callback){
-    let p = workerPromise({type: msgType, args:msgArgs});
-    if(callback) p.then(callback).finally(testCount);
-    return p;
+    const p = workerPromise({type: msgType, args:msgArgs});
+    return callback ? p.then(callback).finally(testCount) : p;
   };
 
   const runTests = async function(){
+    const dbFilename = '/testing2.sqlite3';
     logHtml('',
             "Sending 'open' message and waiting for its response before continuing.");
     startTime = performance.now();
-    wtest('open', {
-      filename:'testing2.sqlite3',
-      simulateError: 0 /* if true, fail the 'open' */
+    await wtest('open', {
+      filename: dbFilename,
+      persistent: true,
+      simulateError: 0 /* if true, fail the 'open' */,
     }, function(ev){
       log("then open result",ev);
-      T.assert('testing2.sqlite3'===ev.result.filename)
+      T.assert(1 && (dbFilename===ev.result.filename
+               || (sqlite3TestModule.sqlite3ApiConfig.persistentDirName
+                   + dbFilename)==ev.result.filename))
         .assert(ev.dbId)
         .assert(ev.messageId)
         .assert(promiserConfig.dbId === ev.dbId);
-    }).then(runTests2)
-      .catch((err)=>error("error response:",err));
+    }).then(runTests2);
   };
 
   const runTests2 = async function(){
index 05095d6b811433016c1c8f22b78cbf82cbe71d55..ca5ed7147e0127531b2d0f0ec1d6007d6c06b215 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C More\swork\son\show\sto\sconfigure\sthe\ssqlite3\sJS\sAPI\sbootstrapping\sprocess\sfrom\shigher-level\scode.\sInitial\sversion\sof\ssqlite3-worker1-promiser,\sa\sPromise-based\sproxy\sfor\sthe\sWorker\sAPI\s#1.
-D 2022-08-24T05:59:23.851
+C js:\sresolve\sthe\smysterious\s"extra"\sunhandled\sexception\snotification,\scaused\sby\sinadvertently\sforking\sone\spromise\sinto\stwo\sseparate\sones\s(failing\sto\sproperly\sreassign\sa\sthen()\sresult).\sFix\sa\stypo\sin\snew\sWorker\s1\scode\swhich\scaused\sthe\sDB(filename)\sname\sto\sbe\sincorrect.
+D 2022-08-24T14:50:10.920
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -481,12 +481,12 @@ F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de
 F ext/wasm/api/README.md d876597edd2b9542b6ea031adaaff1c042076fde7b670b1dc6d8a87b28a6631b
 F ext/wasm/api/post-js-footer.js b64319261d920211b8700004d08b956a6c285f3b0bba81456260a713ed04900c
 F ext/wasm/api/post-js-header.js 0e853b78db83cb1c06b01663549e0e8b4f377f12f5a2d9a4a06cb776c003880b
-F ext/wasm/api/sqlite3-api-cleanup.js 4c353bdc2452623f0c1c1e55ae1a0589db9cbaed9756760bb15179ef9b58bc98
+F ext/wasm/api/sqlite3-api-cleanup.js 1a12e64060c2cb0defd34656a76a9b1d7ed58459c290249bb31567c806fd44de
 F ext/wasm/api/sqlite3-api-glue.js 67ca83974410961953eeaa1dfed3518530d68381729ed1d27f95122f5baeabd3
 F ext/wasm/api/sqlite3-api-oo1.js f6dcaac3270182471f97efcfda25bd4a4ac1777b8ec52ebd1c6846721160e54c
 F ext/wasm/api/sqlite3-api-opfs.js 011799db398157cbd254264b6ebae00d7234b93d0e9e810345f213a5774993c0
-F ext/wasm/api/sqlite3-api-prologue.js 4a279604272851696975837534739597206c0800c8ea78810fe8e211ee101374
-F ext/wasm/api/sqlite3-api-worker1.js 9691e144a77490f482caa2c0f0bd38a8f955c6dc9c10b2f39c6491e817aefd8c
+F ext/wasm/api/sqlite3-api-prologue.js 2d5c5d3355f55eefe51922cec5bfedbec0f8300db98a17685ab7a34a03953c7a
+F ext/wasm/api/sqlite3-api-worker1.js b23f66ef5afd350a17fbadb795007098e518a40e5c7c439cd83ef34aa55a45af
 F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
 F ext/wasm/api/sqlite3-wasm.c 0d81282eaeff2a6e9fc5c28a388c5c5b45cf25a9393992fa511ac009b27df982
 F ext/wasm/common/SqliteTestUtil.js eb96275bed43fdb364b7d65bcded0ca5e22aaacff120d593d1385f852f486247
@@ -508,10 +508,10 @@ F ext/wasm/scratchpad-opfs-main.js 69e960e9161f6412fd0c30f355d4112f1894d6609eb43
 F ext/wasm/scratchpad-opfs-worker.html 66c1d15d678f3bd306373d76b61c6c8aef988f61f4a8dd40185d452f9c6d2bf5
 F ext/wasm/scratchpad-opfs-worker.js 3ec2868c669713145c76eb5877c64a1b20741f741817b87c907a154b676283a9
 F ext/wasm/scratchpad-opfs-worker2.js 5f2237427ac537b8580b1c659ff14ad2621d1694043eaaf41ae18dbfef2e48c0
-F ext/wasm/sqlite3-worker1-promiser.js 291f89330bc856e7ef8a321b4891554633c6407b52efc69c9b1d1b3e7c69d4a6
+F ext/wasm/sqlite3-worker1-promiser.js 9638b0ced7f02806c3220b616f08729dde9eb13fb56e125cd4759f40bfa81210
 F ext/wasm/sqlite3-worker1.js 0c1e7626304543969c3846573e080c082bf43bcaa47e87d416458af84f340a9e
-F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893 w ext/wasm/testing-worker-promise.html
-F ext/wasm/testing-worker1-promiser.js 3c13fda53cc8b5d148ae34f621eba99aff393d66718b216bfd9d3f9075dd83bc w ext/wasm/testing-worker-promise.js
+F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893
+F ext/wasm/testing-worker1-promiser.js 931d909c769c57292f1cafdf10c7dab402d17cd16a6d0ec32089f67b559b058f
 F ext/wasm/testing1.html 528001c7e32ee567abc195aa071fd9820cc3c8ffc9c8a39a75e680db05f0c409
 F ext/wasm/testing1.js 2def7a86c52ff28b145cb86188d5c7a49d5993f9b78c50d140e1c31551220955
 F ext/wasm/testing2.html a66951c38137ff1d687df79466351f3c734fa9c6d9cce71d3cf97c291b2167e3
@@ -2009,8 +2009,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 1e447849fb65887e806e3348a8a68f70ea6802bc0a1e56c385a279f27cc0cdda
-R 20d6ad983c84af7c7f2e33fe283b134d
+P b030f321bd5a38cdd5d6f6735f201afa62d30d2b0ba02e67f055b4895553a878
+R a11ec2b23afafa9cff8838dfde907f0c
 U stephan
-Z 996279c2387a16066b296229c9c99a7d
+Z 64f88270da37ddd3ce54e6e07b8ab1af
 # Remove this line to create a well-formed Fossil manifest.
index 26a4257f52ae84c3b4395172689138213ee6dcf6..521621a6a1905a9005e91d8a0a8b4226fe0efc4c 100644 (file)
@@ -1 +1 @@
-b030f321bd5a38cdd5d6f6735f201afa62d30d2b0ba02e67f055b4895553a878
\ No newline at end of file
+7467ac88801224089b51c6ba7924f93283dd87beca602a186c83632df26cfc85
\ No newline at end of file