diff --git a/src/node_sqlite.cc b/src/node_sqlite.cc index 6d35236dce0f82..839b3940b80604 100644 --- a/src/node_sqlite.cc +++ b/src/node_sqlite.cc @@ -451,7 +451,7 @@ class BackupJob : public ThreadPoolWork { std::string dest_db, int pages, Local progressFunc) - : ThreadPoolWork(env, "node_sqlite3.BackupJob"), + : ThreadPoolWork(env, "node.sqlite.BackupJob"), env_(env), source_(source), pages_(pages), @@ -498,7 +498,7 @@ class BackupJob : public ThreadPoolWork { if (!(backup_status_ == SQLITE_OK || backup_status_ == SQLITE_DONE || backup_status_ == SQLITE_BUSY || backup_status_ == SQLITE_LOCKED)) { - HandleBackupError(resolver, backup_status_); + HandleBackupError(resolver); return; } @@ -549,11 +549,6 @@ class BackupJob : public ThreadPoolWork { } void Finalize() { - Cleanup(); - source_->RemoveBackup(this); - } - - void Cleanup() { if (backup_) { sqlite3_backup_finish(backup_); backup_ = nullptr; @@ -564,29 +559,20 @@ class BackupJob : public ThreadPoolWork { sqlite3_close_v2(dest_); dest_ = nullptr; } + + source_->RemoveBackup(this); } private: void HandleBackupError(Local resolver) { Local e; - if (!CreateSQLiteError(env()->isolate(), dest_).ToLocal(&e)) { - Finalize(); - return; - } - + auto error = sqlite3_errcode(dest_) == SQLITE_OK + ? CreateSQLiteError(env()->isolate(), backup_status_) + : CreateSQLiteError(env()->isolate(), dest_); Finalize(); - resolver->Reject(env()->context(), e).ToChecked(); - } - - void HandleBackupError(Local resolver, int errcode) { - Local e; - if (!CreateSQLiteError(env()->isolate(), errcode).ToLocal(&e)) { - Finalize(); - return; + if (error.ToLocal(&e)) { + resolver->Reject(env()->context(), e).ToChecked(); } - - Finalize(); - resolver->Reject(env()->context(), e).ToChecked(); } Environment* env() const { return env_; } @@ -781,7 +767,7 @@ bool DatabaseSync::Open() { void DatabaseSync::FinalizeBackups() { for (auto backup : backups_) { - backup->Cleanup(); + backup->Finalize(); } backups_.clear();