mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
fix: Use EqualReadWriteLocker with file locker to prevent deadlocks
This commit is contained in:
parent
c3f48ddb97
commit
0a30be55ef
@ -6,18 +6,12 @@
|
|||||||
"@id": "urn:solid-server:default:ResourceLocker",
|
"@id": "urn:solid-server:default:ResourceLocker",
|
||||||
"@type": "WrappedExpiringReadWriteLocker",
|
"@type": "WrappedExpiringReadWriteLocker",
|
||||||
"locker": {
|
"locker": {
|
||||||
"@type": "GreedyReadWriteLocker",
|
"@type": "EqualReadWriteLocker",
|
||||||
"locker": {
|
"locker": {
|
||||||
"@id": "urn:solid-server:default:FileSystemResourceLocker",
|
"@id": "urn:solid-server:default:FileSystemResourceLocker",
|
||||||
"@type": "FileSystemResourceLocker",
|
"@type": "FileSystemResourceLocker",
|
||||||
"args_rootFilePath": { "@id": "urn:solid-server:default:variable:rootFilePath" }
|
"args_rootFilePath": { "@id": "urn:solid-server:default:variable:rootFilePath" }
|
||||||
},
|
}
|
||||||
"storage": {
|
|
||||||
"@id": "urn:solid-server:default:LockStorage"
|
|
||||||
},
|
|
||||||
"suffixes_count": "count",
|
|
||||||
"suffixes_read": "read",
|
|
||||||
"suffixes_write": "write"
|
|
||||||
},
|
},
|
||||||
"expiration": 6000
|
"expiration": 6000
|
||||||
},
|
},
|
||||||
|
@ -53,6 +53,9 @@ function isCodedError(err: unknown): err is { code: string } & Error {
|
|||||||
/**
|
/**
|
||||||
* A resource locker making use of the [proper-lockfile](https://www.npmjs.com/package/proper-lockfile) library.
|
* A resource locker making use of the [proper-lockfile](https://www.npmjs.com/package/proper-lockfile) library.
|
||||||
* Note that no locks are kept in memory, thus this is considered thread- and process-safe.
|
* Note that no locks are kept in memory, thus this is considered thread- and process-safe.
|
||||||
|
* While it stores the actual locks on disk, it also tracks them in memory for when they need to be released.
|
||||||
|
* This means only the worker thread that acquired a lock can release it again,
|
||||||
|
* making this implementation unusable in combination with a wrapping read/write lock implementation.
|
||||||
*
|
*
|
||||||
* This **proper-lockfile** library has its own retry mechanism for the operations, since a lock/unlock call will
|
* This **proper-lockfile** library has its own retry mechanism for the operations, since a lock/unlock call will
|
||||||
* either resolve successfully or reject immediately with the causing error. The retry function of the library
|
* either resolve successfully or reject immediately with the causing error. The retry function of the library
|
||||||
|
Loading…
x
Reference in New Issue
Block a user