@@ -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,13 @@ export class IndexedDbProvider extends DbProvider {
528551 }
529552
530553 this . _db = db ;
554+ this . _db . onversionchange = ( ) => {
555+ this . logWriter . warn (
556+ `Database version change requested by another connection. ` +
557+ `Keeping this connection open; the requesting connection will be blocked.` ,
558+ { dbName }
559+ ) ;
560+ } ;
531561 this . _db . onclose = ( event : Event ) => {
532562 if ( this . _handleOnClose ) {
533563 // instantiate payload
@@ -568,7 +598,9 @@ export class IndexedDbProvider extends DbProvider {
568598 ...upgradeMetadata ,
569599 errorName : err ?. target ?. error ?. name || "Unknown" ,
570600 errorMessage : err
571- ? `${ err ?. message } ${ err ?. target ?. error } ${ err ?. target ?. error ?. name } `
601+ ? `${
602+ err ?. target ?. error ?. message || err ?. message || "Unknown error"
603+ } (name: ${ err ?. target ?. error ?. name || "Unknown" } )`
572604 : "Unknown error occurred during upgrade" ,
573605 } ) ;
574606 }
@@ -591,7 +623,9 @@ export class IndexedDbProvider extends DbProvider {
591623 }
592624 }
593625 this . logWriter . error (
594- `Error opening db, message: ${ err ?. message } ${ err ?. target ?. error } ${ err ?. target ?. error ?. name } ` ,
626+ `Error opening db, message: ${
627+ err ?. target ?. error ?. message || err ?. message || "Unknown error"
628+ } , name: ${ err ?. target ?. error ?. name || "Unknown" } `,
595629 {
596630 dbName,
597631 }
@@ -632,6 +666,13 @@ export class IndexedDbProvider extends DbProvider {
632666 }
633667
634668 return new Promise ( ( resolve , reject ) => {
669+ trans . onblocked = ( ) => {
670+ this . logWriter . error (
671+ `Database deletion is blocked by an existing connection that hasn't closed. ` +
672+ `The delete request will not proceed until all other connections are closed.` ,
673+ { dbName : this . _dbName }
674+ ) ;
675+ } ;
635676 trans . onsuccess = ( ) => {
636677 resolve ( void 0 ) ;
637678 } ;
@@ -743,14 +784,15 @@ class IndexedDbTransaction implements DbTransaction {
743784 } ;
744785
745786 this . _trans . onerror = ( ) => {
746- history . push (
747- "error-" + ( this . _trans . error ? this . _trans . error . message : "" )
748- ) ;
787+ const errorDetail = this . _trans . error
788+ ? `${ this . _trans . error . name } : ${ this . _trans . error . message } `
789+ : "Unknown error" ;
790+ history . push ( "error-" + errorDetail ) ;
749791
750792 if ( history . length > 1 ) {
751793 this . logWriter . warn (
752794 "IndexedDbTransaction Errored after Resolution, Swallowing. Error: " +
753- ( this . _trans . error ? this . _trans . error . message : undefined ) +
795+ errorDetail +
754796 ", History: " +
755797 history . join ( "," )
756798 ) ;
@@ -760,21 +802,22 @@ class IndexedDbTransaction implements DbTransaction {
760802 lockHelper . transactionFailed (
761803 this . _transToken ,
762804 "IndexedDbTransaction OnError: " +
763- ( this . _trans . error ? this . _trans . error . message : undefined ) +
805+ errorDetail +
764806 ", History: " +
765807 history . join ( "," )
766808 ) ;
767809 } ;
768810
769811 this . _trans . onabort = ( ) => {
770- history . push (
771- "abort-" + ( this . _trans . error ? this . _trans . error . message : "" )
772- ) ;
812+ const errorDetail = this . _trans . error
813+ ? `${ this . _trans . error . name } : ${ this . _trans . error . message } `
814+ : "Unknown error" ;
815+ history . push ( "abort-" + errorDetail ) ;
773816
774817 if ( history . length > 1 ) {
775818 this . logWriter . warn (
776819 "IndexedDbTransaction Aborted after Resolution, Swallowing. Error: " +
777- ( this . _trans . error ? this . _trans . error . message : undefined ) +
820+ errorDetail +
778821 ", History: " +
779822 history . join ( "," )
780823 ) ;
@@ -784,7 +827,7 @@ class IndexedDbTransaction implements DbTransaction {
784827 lockHelper . transactionFailed (
785828 this . _transToken ,
786829 "IndexedDbTransaction Aborted, Error: " +
787- ( this . _trans . error ? this . _trans . error . message : undefined ) +
830+ errorDetail +
788831 ", History: " +
789832 history . join ( "," )
790833 ) ;
@@ -1150,7 +1193,7 @@ class IndexedDbStore implements DbStore {
11501193 highRangeExclusive
11511194 )
11521195 . then ( ( keys ) => {
1153- this . remove ( keys ) ;
1196+ return this . remove ( keys ) ;
11541197 } ) ;
11551198 }
11561199
0 commit comments