mirror of https://github.com/Chocobozzz/PeerTube
Use atomic rename
parent
0d6a8289fb
commit
49b80bd9e1
|
@ -1,4 +1,4 @@
|
||||||
import { move, writeJson } from 'fs-extra'
|
import { rename, writeJson } from 'fs-extra'
|
||||||
import PQueue from 'p-queue'
|
import PQueue from 'p-queue'
|
||||||
import { basename } from 'path'
|
import { basename } from 'path'
|
||||||
import { mapToJSON } from '@server/helpers/core-utils'
|
import { mapToJSON } from '@server/helpers/core-utils'
|
||||||
|
@ -72,9 +72,9 @@ class LiveSegmentShaStore {
|
||||||
|
|
||||||
private writeToDisk () {
|
private writeToDisk () {
|
||||||
return this.writeQueue.add(async () => {
|
return this.writeQueue.add(async () => {
|
||||||
// Atomic write
|
// Atomic write: use rename instead of move that is not atomic
|
||||||
await writeJson(this.sha256PathTMP, mapToJSON(this.segmentsSha256))
|
await writeJson(this.sha256PathTMP, mapToJSON(this.segmentsSha256))
|
||||||
await move(this.sha256PathTMP, this.sha256Path, { overwrite: true })
|
await rename(this.sha256PathTMP, this.sha256Path)
|
||||||
|
|
||||||
if (this.sendToObjectStorage) {
|
if (this.sendToObjectStorage) {
|
||||||
const url = await storeHLSFileFromPath(this.streamingPlaylist, this.sha256Path)
|
const url = await storeHLSFileFromPath(this.streamingPlaylist, this.sha256Path)
|
||||||
|
|
|
@ -278,7 +278,7 @@ async function uploadToStorage (options: {
|
||||||
|
|
||||||
logger.debug(
|
logger.debug(
|
||||||
'Completed %s%s in bucket %s',
|
'Completed %s%s in bucket %s',
|
||||||
bucketInfo.PREFIX, objectStorageKey, bucketInfo.BUCKET_NAME, lTags()
|
bucketInfo.PREFIX, objectStorageKey, bucketInfo.BUCKET_NAME, { ...lTags(), reseponseMetadata: response.$metadata }
|
||||||
)
|
)
|
||||||
|
|
||||||
return getInternalUrl(bucketInfo, objectStorageKey)
|
return getInternalUrl(bucketInfo, objectStorageKey)
|
||||||
|
|
Loading…
Reference in New Issue