Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 79ae2d98bffebe586578a7ffedf1cc8215252716
https://github.com/WebKit/WebKit/commit/79ae2d98bffebe586578a7ffedf1cc8215252716
Author: Timothy Hatcher <[email protected]>
Date: 2023-12-11 (Mon, 11 Dec 2023)
Changed paths:
M Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.mm
M Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.h
M Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm
Log Message:
-----------
WKWebExtensionAPIDeclarativeNetRequest.DynamicRules is flaky due to SQLite
errors.
https://webkit.org/b/266197
rdar://problem/119469498
Reviewed by Brian Weinstein.
Fix a number of SQL database errors seen when stress-testing the DynamicRules
test.
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.mm:
(-[_WKWebExtensionSQLiteDatabase enableWAL:]): Also set synchronous to NORMAL
per SQLite docs.
(-[_WKWebExtensionSQLiteDatabase _openWithFlags:vfs:error:]): Use nullptr
instead of 0.
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.h:
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm:
(-[_WKWebExtensionSQLiteStore dealloc]): Moved to `close` method, and call it.
(-[_WKWebExtensionSQLiteStore close]): Added. Return early if already closed.
Synchronously close
to prevent SQLite errors when trying to load the file immediately after, which
would happen from
another database background queue and fail, which then tries to delete the
locked DB file.
(-[_WKWebExtensionSQLiteStore _openDatabase:deleteDatabaseFileOnError:]):
Return the result of
`_deleteDatabaseFileAtURL:` instead, since the retry error (if any) should be
reported back.
Also moved `close` to after the early return since `_deleteDatabaseFileAtURL:`
already does a close.
(-[_WKWebExtensionSQLiteStore _deleteDatabaseFileAtURL:reopenDatabase:]):
Changed databaseFileSuffixes
to use ASCIILiteral and moved inside since this is the only client. Always
check if the DB file exists
before trying to delete it, since thats what the original Safari code did and
that was lost in the move.
(-[_WKWebExtensionSQLiteStore
_handleSchemaVersioningWithDeleteDatabaseFileOnError:]):
(-[_WKWebExtensionSQLiteStore
initWithUniqueIdentifier:directory:usesInMemoryDatabase:]): Deleted. Unused
and it was the only code using NSFileManager.
(-[_WKWebExtensionSQLiteStore deleteStorageWithCompletionHandler:]): Deleted.
Canonical link: https://commits.webkit.org/271891@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes