Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/common/enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ export enum EVENT {
RequestQueueFilled = "requestQueueFilled",
Upgrade = "upgrade",
Create = "create",
Open = "open"
Open = "open",
DbRefreshRequired = "dbRefreshRequired",
}

export enum QUERY_OPTION {
Expand Down
1 change: 1 addition & 0 deletions src/common/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export type WebWorkerRequest = {
export type WebWorkerResult = {
error?: any;
result?: any;
isDbClosedForcefully?: boolean;
};


Expand Down
11 changes: 10 additions & 1 deletion src/main/connection_helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,16 @@ export class ConnectionHelper {
this.processFinishedQuery_(msg.data);
}

private processFinishedQuery_(message: WebWorkerResult) {
private isDbClosedForcefully = false;

private processFinishedQuery_(message: WebWorkerResult) {
if (message.isDbClosedForcefully) {
this.isDbClosedForcefully = true;
this.requestQueue_ = [];
console.warn('Database closed forcefully');
this.eventBus_.emit(EVENT.DbRefreshRequired, []);
return;
}
const finishedRequest: WebWorkerRequest = this.requestQueue_.shift();
if (finishedRequest) {
this.logger.log(`request ${finishedRequest.name} finished`);
Expand Down Expand Up @@ -219,6 +227,7 @@ export class ConnectionHelper {
}

private prcoessExecutionOfQry_(request: WebWorkerRequest, index?: number) {
if (this.isDbClosedForcefully) return;
this.isDbIdle_ = false;
if (index != null) {
this.requestQueue_.splice(index, 0, request);
Expand Down
3 changes: 3 additions & 0 deletions src/worker/idbutil/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ export class IDBUtil {
});
}

isDbClosedForcefully = false;

initDb(db: DbMeta) {
let isDbCreated = false;
const dbVersion = db.version;
Expand All @@ -78,6 +80,7 @@ export class IDBUtil {
this.con = dbOpenRequest.result;
this.con.onversionchange = (e: any) => {
// if (e.newVersion === null) { // An attempt is made to delete the db
this.isDbClosedForcefully = true;
e.target.close(); // Manually close our connection to the db
// }
}
Expand Down
8 changes: 8 additions & 0 deletions src/worker/query_manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,13 @@ export class QueryManager {
}

run(request: WebWorkerRequest) {
if (this.util.isDbClosedForcefully) {
this.returnResult_({
error: new LogHelper(ERROR_TYPE.DbBlocked),
isDbClosedForcefully: true
});
return;
}
let onResultCallback = [];
const beforeExecuteCallback = [];
request.onResult = (cb) => {
Expand Down Expand Up @@ -246,6 +253,7 @@ export class QueryManager {
if (this.util) {
this.util.emptyTx();
}
result.isDbClosedForcefully = this.util.isDbClosedForcefully;
this.onQryFinished(result);
}

Expand Down
Loading