Merge pull request #1998 from code-yeongyu/fix/bug-1-ultrawork-db-crash
fix(ultrawork-db): handle SQLite exceptions in deferred model override
This commit is contained in:
commit
7fa22aebdf
@ -43,23 +43,61 @@ function retryViaMicrotask(
|
|||||||
attempt,
|
attempt,
|
||||||
})
|
})
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (tryUpdateMessageModel(db, messageId, targetModel, variant)) {
|
try {
|
||||||
log(`[ultrawork-db-override] setTimeout fallback succeeded: ${targetModel.providerID}/${targetModel.modelID}`, { messageId })
|
if (tryUpdateMessageModel(db, messageId, targetModel, variant)) {
|
||||||
} else {
|
log(`[ultrawork-db-override] setTimeout fallback succeeded: ${targetModel.providerID}/${targetModel.modelID}`, { messageId })
|
||||||
log("[ultrawork-db-override] setTimeout fallback failed - message not found", { messageId })
|
} else {
|
||||||
|
log("[ultrawork-db-override] setTimeout fallback failed - message not found", { messageId })
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
log("[ultrawork-db-override] setTimeout fallback failed with error", {
|
||||||
|
messageId,
|
||||||
|
error: String(error),
|
||||||
|
})
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
db.close()
|
||||||
|
} catch (error) {
|
||||||
|
log("[ultrawork-db-override] Failed to close DB after setTimeout fallback", {
|
||||||
|
messageId,
|
||||||
|
error: String(error),
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
db.close()
|
|
||||||
}, 0)
|
}, 0)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
queueMicrotask(() => {
|
queueMicrotask(() => {
|
||||||
if (tryUpdateMessageModel(db, messageId, targetModel, variant)) {
|
let shouldCloseDb = true
|
||||||
log(`[ultrawork-db-override] Deferred DB update (attempt ${attempt}): ${targetModel.providerID}/${targetModel.modelID}`, { messageId })
|
|
||||||
db.close()
|
try {
|
||||||
return
|
if (tryUpdateMessageModel(db, messageId, targetModel, variant)) {
|
||||||
|
log(`[ultrawork-db-override] Deferred DB update (attempt ${attempt}): ${targetModel.providerID}/${targetModel.modelID}`, { messageId })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
shouldCloseDb = false
|
||||||
|
retryViaMicrotask(db, messageId, targetModel, variant, attempt + 1)
|
||||||
|
} catch (error) {
|
||||||
|
log("[ultrawork-db-override] Deferred DB update failed with error", {
|
||||||
|
messageId,
|
||||||
|
attempt,
|
||||||
|
error: String(error),
|
||||||
|
})
|
||||||
|
} finally {
|
||||||
|
if (shouldCloseDb) {
|
||||||
|
try {
|
||||||
|
db.close()
|
||||||
|
} catch (error) {
|
||||||
|
log("[ultrawork-db-override] Failed to close DB after deferred DB update", {
|
||||||
|
messageId,
|
||||||
|
attempt,
|
||||||
|
error: String(error),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
retryViaMicrotask(db, messageId, targetModel, variant, attempt + 1)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user