Use move instead rename

To avoid EXDEV errors
pull/1479/head
Chocobozzz 2018-12-11 15:12:38 +01:00
parent 14e2014acc
commit f481c4f9f3
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
5 changed files with 10 additions and 10 deletions

View File

@ -21,7 +21,7 @@ import { VideoChannelModel } from '../../../models/video/video-channel'
import * as Bluebird from 'bluebird' import * as Bluebird from 'bluebird'
import * as parseTorrent from 'parse-torrent' import * as parseTorrent from 'parse-torrent'
import { getSecureTorrentName } from '../../../helpers/utils' import { getSecureTorrentName } from '../../../helpers/utils'
import { readFile, rename } from 'fs-extra' import { readFile, move } from 'fs-extra'
const auditLogger = auditLoggerFactory('video-imports') const auditLogger = auditLoggerFactory('video-imports')
const videoImportsRouter = express.Router() const videoImportsRouter = express.Router()
@ -71,7 +71,7 @@ async function addTorrentImport (req: express.Request, res: express.Response, to
// Rename the torrent to a secured name // Rename the torrent to a secured name
const newTorrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, getSecureTorrentName(torrentName)) const newTorrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, getSecureTorrentName(torrentName))
await rename(torrentfile.path, newTorrentPath) await move(torrentfile.path, newTorrentPath)
torrentfile.path = newTorrentPath torrentfile.path = newTorrentPath
const buf = await readFile(torrentfile.path) const buf = await readFile(torrentfile.path)

View File

@ -2,7 +2,7 @@ import { join } from 'path'
import { CONFIG } from '../initializers' import { CONFIG } from '../initializers'
import { VideoCaptionModel } from '../models/video/video-caption' import { VideoCaptionModel } from '../models/video/video-caption'
import * as srt2vtt from 'srt-to-vtt' import * as srt2vtt from 'srt-to-vtt'
import { createReadStream, createWriteStream, remove, rename } from 'fs-extra' import { createReadStream, createWriteStream, remove, move } from 'fs-extra'
async function moveAndProcessCaptionFile (physicalFile: { filename: string, path: string }, videoCaption: VideoCaptionModel) { async function moveAndProcessCaptionFile (physicalFile: { filename: string, path: string }, videoCaption: VideoCaptionModel) {
const videoCaptionsDir = CONFIG.STORAGE.CAPTIONS_DIR const videoCaptionsDir = CONFIG.STORAGE.CAPTIONS_DIR
@ -13,7 +13,7 @@ async function moveAndProcessCaptionFile (physicalFile: { filename: string, path
await convertSrtToVtt(physicalFile.path, destination) await convertSrtToVtt(physicalFile.path, destination)
await remove(physicalFile.path) await remove(physicalFile.path)
} else { // Just move the vtt file } else { // Just move the vtt file
await rename(physicalFile.path, destination) await move(physicalFile.path, destination)
} }
// This is important in case if there is another attempt in the retry process // This is important in case if there is another attempt in the retry process

View File

@ -14,7 +14,7 @@ import { federateVideoIfNeeded } from '../../activitypub'
import { VideoModel } from '../../../models/video/video' import { VideoModel } from '../../../models/video/video'
import { downloadWebTorrentVideo } from '../../../helpers/webtorrent' import { downloadWebTorrentVideo } from '../../../helpers/webtorrent'
import { getSecureTorrentName } from '../../../helpers/utils' import { getSecureTorrentName } from '../../../helpers/utils'
import { remove, rename, stat } from 'fs-extra' import { remove, move, stat } from 'fs-extra'
type VideoImportYoutubeDLPayload = { type VideoImportYoutubeDLPayload = {
type: 'youtube-dl' type: 'youtube-dl'
@ -139,7 +139,7 @@ async function processFile (downloader: () => Promise<string>, videoImport: Vide
// Move file // Move file
videoDestFile = join(CONFIG.STORAGE.VIDEOS_DIR, videoImport.Video.getVideoFilename(videoFile)) videoDestFile = join(CONFIG.STORAGE.VIDEOS_DIR, videoImport.Video.getVideoFilename(videoFile))
await rename(tempVideoPath, videoDestFile) await move(tempVideoPath, videoDestFile)
tempVideoPath = null // This path is not used anymore tempVideoPath = null // This path is not used anymore
// Process thumbnail // Process thumbnail

View File

@ -6,7 +6,7 @@ import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy'
import { VideoFileModel } from '../../models/video/video-file' import { VideoFileModel } from '../../models/video/video-file'
import { downloadWebTorrentVideo } from '../../helpers/webtorrent' import { downloadWebTorrentVideo } from '../../helpers/webtorrent'
import { join } from 'path' import { join } from 'path'
import { rename } from 'fs-extra' import { move } from 'fs-extra'
import { getServerActor } from '../../helpers/utils' import { getServerActor } from '../../helpers/utils'
import { sendCreateCacheFile, sendUpdateCacheFile } from '../activitypub/send' import { sendCreateCacheFile, sendUpdateCacheFile } from '../activitypub/send'
import { getVideoCacheFileActivityPubUrl } from '../activitypub/url' import { getVideoCacheFileActivityPubUrl } from '../activitypub/url'
@ -146,7 +146,7 @@ export class VideosRedundancyScheduler extends AbstractScheduler {
const tmpPath = await downloadWebTorrentVideo({ magnetUri }, VIDEO_IMPORT_TIMEOUT) const tmpPath = await downloadWebTorrentVideo({ magnetUri }, VIDEO_IMPORT_TIMEOUT)
const destPath = join(CONFIG.STORAGE.REDUNDANCY_DIR, video.getVideoFilename(file)) const destPath = join(CONFIG.STORAGE.REDUNDANCY_DIR, video.getVideoFilename(file))
await rename(tmpPath, destPath) await move(tmpPath, destPath)
const createdModel = await VideoRedundancyModel.create({ const createdModel = await VideoRedundancyModel.create({
expiresOn: this.buildNewExpiration(redundancy.minLifetime), expiresOn: this.buildNewExpiration(redundancy.minLifetime),

View File

@ -1,7 +1,7 @@
import { CONFIG } from '../initializers' import { CONFIG } from '../initializers'
import { extname, join } from 'path' import { extname, join } from 'path'
import { getVideoFileFPS, getVideoFileResolution, transcode } from '../helpers/ffmpeg-utils' import { getVideoFileFPS, getVideoFileResolution, transcode } from '../helpers/ffmpeg-utils'
import { copy, remove, rename, stat } from 'fs-extra' import { copy, remove, move, stat } from 'fs-extra'
import { logger } from '../helpers/logger' import { logger } from '../helpers/logger'
import { VideoResolution } from '../../shared/models/videos' import { VideoResolution } from '../../shared/models/videos'
import { VideoFileModel } from '../models/video/video-file' import { VideoFileModel } from '../models/video/video-file'
@ -30,7 +30,7 @@ async function optimizeVideofile (video: VideoModel, inputVideoFileArg?: VideoFi
inputVideoFile.set('extname', newExtname) inputVideoFile.set('extname', newExtname)
const videoOutputPath = video.getVideoFilePath(inputVideoFile) const videoOutputPath = video.getVideoFilePath(inputVideoFile)
await rename(videoTranscodedPath, videoOutputPath) await move(videoTranscodedPath, videoOutputPath)
const stats = await stat(videoOutputPath) const stats = await stat(videoOutputPath)
const fps = await getVideoFileFPS(videoOutputPath) const fps = await getVideoFileFPS(videoOutputPath)