mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-03-05 00:18:30 +01:00
Update:Local session sync lock to prevent duplicate inserts
This commit is contained in:
parent
67f6cd3c56
commit
e611d7a8fd
@ -19,6 +19,7 @@ class PlaybackSessionManager {
|
|||||||
this.clientEmitter = clientEmitter
|
this.clientEmitter = clientEmitter
|
||||||
|
|
||||||
this.sessions = []
|
this.sessions = []
|
||||||
|
this.localSessionLock = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
getSession(sessionId) {
|
getSession(sessionId) {
|
||||||
@ -58,12 +59,19 @@ class PlaybackSessionManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async syncLocalSessionRequest(user, sessionJson, res) {
|
async syncLocalSessionRequest(user, sessionJson, res) {
|
||||||
|
if (this.localSessionLock[sessionJson.id]) {
|
||||||
|
Logger.debug(`[PlaybackSessionManager] syncLocalSessionRequest: Local session is locked and already syncing`)
|
||||||
|
return res.sendStatus(200)
|
||||||
|
}
|
||||||
|
|
||||||
var libraryItem = this.db.getLibraryItem(sessionJson.libraryItemId)
|
var libraryItem = this.db.getLibraryItem(sessionJson.libraryItemId)
|
||||||
if (!libraryItem) {
|
if (!libraryItem) {
|
||||||
Logger.error(`[PlaybackSessionManager] syncLocalSessionRequest: Library item not found for session "${sessionJson.libraryItemId}"`)
|
Logger.error(`[PlaybackSessionManager] syncLocalSessionRequest: Library item not found for session "${sessionJson.libraryItemId}"`)
|
||||||
return res.sendStatus(200)
|
return res.sendStatus(200)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.localSessionLock[sessionJson.id] = true // Lock local session
|
||||||
|
|
||||||
var session = await this.db.getPlaybackSession(sessionJson.id)
|
var session = await this.db.getPlaybackSession(sessionJson.id)
|
||||||
if (!session) {
|
if (!session) {
|
||||||
// New session from local
|
// New session from local
|
||||||
@ -94,6 +102,9 @@ class PlaybackSessionManager {
|
|||||||
data: itemProgress.toJSON()
|
data: itemProgress.toJSON()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete this.localSessionLock[sessionJson.id] // Unlock local session
|
||||||
|
|
||||||
res.sendStatus(200)
|
res.sendStatus(200)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user