@@ -192,7 +192,7 @@ export class IndexedDbProvider extends DbProvider {
192192 { dbName }
193193 ) ;
194194 }
195- this . logWriter . log ( `Wiping db success ` , { dbName } ) ;
195+ this . logWriter . log ( `Wiping db completed ` , { dbName } ) ;
196196 }
197197
198198 this . _lockHelper = new TransactionLockHelper ( schema , true ) ;
@@ -208,12 +208,34 @@ export class IndexedDbProvider extends DbProvider {
208208 upgradeScenarioStartTime : 0 ,
209209 } ;
210210
211+ dbOpen . onblocked = ( ) => {
212+ this . logWriter . error (
213+ `Database open is blocked by an existing connection that hasn't closed. ` +
214+ `The open request will not proceed until all other connections are closed.` ,
215+ { dbName }
216+ ) ;
217+ } ;
218+
211219 dbOpen . onupgradeneeded = ( event ) => {
220+ const dataLoss = event . dataLoss ;
221+ const dataLossMessage = event . dataLossMessage ;
222+
223+ if ( dataLoss === "total" ) {
224+ this . logWriter . error (
225+ `IndexedDB reported total data loss during upgrade: ${
226+ dataLossMessage || "(no message)"
227+ } `,
228+ { dbName }
229+ ) ;
230+ }
231+
212232 upgradeMetadata = {
213233 oldVersion : event . oldVersion ,
214234 newVersion : schema . version ,
215235 upgradeScenarioStartTime : Date . now ( ) ,
216236 upgradeStartTimePerformanceMarker : performance . now ( ) ,
237+ dataLoss : dataLoss ,
238+ dataLossMessage : dataLossMessage ,
217239 } ;
218240
219241 const db : IDBDatabase = dbOpen . result ;
@@ -490,6 +512,7 @@ export class IndexedDbProvider extends DbProvider {
490512 `Error when iterating over cursor on idb index, message: ${ err ?. message } ` ,
491513 { storeName : storeSchema . name }
492514 ) ;
515+ throw err ;
493516 }
494517 )
495518 ) ;
@@ -528,6 +551,14 @@ export class IndexedDbProvider extends DbProvider {
528551 }
529552
530553 this . _db = db ;
554+ this . _db . onversionchange = ( event : IDBVersionChangeEvent ) => {
555+ this . logWriter . warn (
556+ `Database version change requested by another connection ` +
557+ `(oldVersion: ${ event . oldVersion } , newVersion: ${ event . newVersion } ). ` +
558+ `Keeping this connection open; the requesting connection will be blocked.` ,
559+ { dbName }
560+ ) ;
561+ } ;
531562 this . _db . onclose = ( event : Event ) => {
532563 if ( this . _handleOnClose ) {
533564 // instantiate payload
@@ -566,9 +597,12 @@ export class IndexedDbProvider extends DbProvider {
566597 isCopyRequired : false ,
567598 upgradeSteps,
568599 ...upgradeMetadata ,
569- errorName : err ?. name || "Unknown" ,
570- errorMessage :
571- err ?. message || "Unknown error occurred during upgrade" ,
600+ errorName : err ?. target ?. error ?. name || err ?. name || "Unknown" ,
601+ errorMessage : err
602+ ? `${
603+ err ?. target ?. error ?. message || err ?. message || "Unknown error"
604+ } (name: ${ err ?. target ?. error ?. name || err ?. name || "Unknown" } )`
605+ : "Unknown error occurred during upgrade" ,
572606 } ) ;
573607 }
574608
@@ -582,7 +616,9 @@ export class IndexedDbProvider extends DbProvider {
582616 }
583617 }
584618 this . logWriter . error (
585- `Error opening db, message: ${ err ?. message } , name: ${ err ?. name } ` ,
619+ `Error opening db, message: ${
620+ err ?. target ?. error ?. message || err ?. message || "Unknown error"
621+ } , name: ${ err ?. target ?. error ?. name || err ?. name || "Unknown" } `,
586622 {
587623 dbName,
588624 }
@@ -623,6 +659,13 @@ export class IndexedDbProvider extends DbProvider {
623659 }
624660
625661 return new Promise ( ( resolve , reject ) => {
662+ trans . onblocked = ( ) => {
663+ this . logWriter . error (
664+ `Database deletion is blocked by an existing connection that hasn't closed. ` +
665+ `The delete request will not proceed until all other connections are closed.` ,
666+ { dbName : this . _dbName }
667+ ) ;
668+ } ;
626669 trans . onsuccess = ( ) => {
627670 resolve ( void 0 ) ;
628671 } ;
@@ -734,9 +777,10 @@ export class IndexedDbTransaction implements DbTransaction {
734777 } ;
735778
736779 this . _trans . onerror = ( ) => {
737- history . push (
738- "error-" + ( this . _trans . error ? this . _trans . error . message : "" )
739- ) ;
780+ const errorDetail = this . _trans . error
781+ ? `${ this . _trans . error . name } : ${ this . _trans . error . message } `
782+ : "Unknown error" ;
783+ history . push ( "error-" + errorDetail ) ;
740784
741785 if ( history . length > 1 ) {
742786 this . logWriter . warn (
@@ -754,23 +798,19 @@ export class IndexedDbTransaction implements DbTransaction {
754798 lockHelper . transactionFailed (
755799 this . _transToken ,
756800 new Error (
757- "IndexedDbTransaction OnError" +
758- ( this . _trans . error ?. name !== undefined
759- ? ", ErrorName: " + this . _trans . error . name
760- : "" ) +
761- ( this . _trans . error ?. message !== undefined
762- ? ", ErrorMessage: " + this . _trans . error . message
763- : "" ) +
801+ "IndexedDbTransaction OnError: " +
802+ errorDetail +
764803 ", History: " +
765804 history . join ( "," )
766805 )
767806 ) ;
768807 } ;
769808
770809 this . _trans . onabort = ( ) => {
771- history . push (
772- "abort-" + ( this . _trans . error ? this . _trans . error . message : "" )
773- ) ;
810+ const errorDetail = this . _trans . error
811+ ? `${ this . _trans . error . name } : ${ this . _trans . error . message } `
812+ : "Unknown error" ;
813+ history . push ( "abort-" + errorDetail ) ;
774814
775815 if ( history . length > 1 ) {
776816 this . logWriter . warn (
@@ -788,13 +828,8 @@ export class IndexedDbTransaction implements DbTransaction {
788828 lockHelper . transactionFailed (
789829 this . _transToken ,
790830 new Error (
791- "IndexedDbTransaction Aborted" +
792- ( this . _trans . error ?. name !== undefined
793- ? ", ErrorName: " + this . _trans . error . name
794- : "" ) +
795- ( this . _trans . error ?. message !== undefined
796- ? ", ErrorMessage: " + this . _trans . error . message
797- : "" ) +
831+ "IndexedDbTransaction Aborted, Error: " +
832+ errorDetail +
798833 ", History: " +
799834 history . join ( "," )
800835 )
@@ -1161,7 +1196,7 @@ class IndexedDbStore implements DbStore {
11611196 highRangeExclusive
11621197 )
11631198 . then ( ( keys ) => {
1164- this . remove ( keys ) ;
1199+ return this . remove ( keys ) ;
11651200 } ) ;
11661201 }
11671202
0 commit comments