Skip to content

Commit afcce91

Browse files
committed
fix: release lock
1 parent e72db21 commit afcce91

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

playground/src/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ document.querySelector('.import')?.addEventListener('click', async () => {
3939
file = await selectFile('.db,.sqlite,.sqlite3')
4040
} catch (error) {
4141
// eslint-disable-next-line no-alert
42-
prompt(`${error}`)
42+
alert(`${error}`)
4343
return
4444
}
4545
db = await initSQLite(
46-
useIdbMemoryStorage('test.db', withExistDB(file, { url })),
47-
// useIdbMemoryStorage('test.db', { url }),
46+
// useIdbMemoryStorage('test.db', withExistDB(file, { url })),
47+
useIdbMemoryStorage('test.db', { url }),
4848
// useIdbStorage('test.db', { url }),
4949
)
50-
// await importDatabase(db.vfs, db.path, file)
50+
await db.sync(file)
5151
console.log(
5252
await db.run(`SELECT "type", "tbl_name" AS "table", CASE WHEN "sql" LIKE '%PRIMARY KEY AUTOINCREMENT%' THEN 1 ELSE "name" END AS "name" FROM "sqlite_master"`),
5353
)

src/io/import.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,19 @@ async function importDatabaseToOpfs(
125125
source: ReadableStream<Uint8Array>,
126126
): Promise<void> {
127127
const handle = await getHandleFromPath(path, true)
128-
const [streamForVerify, streamData] = source.tee()
128+
const [verifyStream, dataStream] = source.tee()
129129

130-
await parseHeaderAndVerify(streamForVerify.getReader())
130+
const verifyReader = verifyStream.getReader()
131+
try {
132+
// throw error if fail to verify
133+
await parseHeaderAndVerify(verifyReader)
134+
} finally {
135+
verifyReader.releaseLock()
136+
}
131137

132138
const writable = await handle.createWritable()
133139
// `pipeTo()` will auto close `writable`
134-
await streamData.pipeTo(writable)
140+
await dataStream.pipeTo(writable)
135141
}
136142

137143
/**
@@ -148,7 +154,6 @@ export async function importDatabase(
148154
isOpfsVFS = defaultIsOpfsVFS,
149155
): Promise<void> {
150156
const stream = data instanceof globalThis.File ? data.stream() : data
151-
// is `OPFSCoopSyncVFS`
152157
if (isOpfsVFS(vfs)) {
153158
await importDatabaseToOpfs(path, stream)
154159
} else {

0 commit comments

Comments
 (0)