Server: do not break remote videos processing on error

pull/30/head
Chocobozzz 2017-01-11 18:06:51 +01:00
parent dea32aacde
commit d8cc063e97
3 changed files with 27 additions and 12 deletions

View File

@ -73,10 +73,10 @@ function addRemoteVideoRetryWrapper (videoToCreateData, fromPod, finalCallback)
function (err) {
if (err) {
logger.error('Cannot insert the remote video with many retries.', { error: err })
return finalCallback(err)
}
return finalCallback()
// Do not return the error, continue the process
return finalCallback(null)
}
)
}
@ -174,7 +174,7 @@ function addRemoteVideo (videoToCreateData, fromPod, finalCallback) {
t.commit().asCallback(function (err) {
if (err) return finalCallback(err)
logger.info('Remote video %s inserted.', videoToCreateData.videoToCreateData.name)
logger.info('Remote video %s inserted.', videoToCreateData.name)
return finalCallback(null)
})
})
@ -189,10 +189,10 @@ function updateRemoteVideoRetryWrapper (videoAttributesToUpdate, fromPod, finalC
function (err) {
if (err) {
logger.error('Cannot update the remote video with many retries.', { error: err })
return finalCallback(err)
}
return finalCallback()
// Do not return the error, continue the process
return finalCallback(null)
}
)
}
@ -270,10 +270,18 @@ function updateRemoteVideo (videoAttributesToUpdate, fromPod, finalCallback) {
function removeRemoteVideo (videoToRemoveData, fromPod, callback) {
// We need the instance because we have to remove some other stuffs (thumbnail etc)
fetchVideo(fromPod.host, videoToRemoveData.remoteId, function (err, video) {
if (err) return callback(err)
// Do not return the error, continue the process
if (err) return callback(null)
logger.debug('Removing remote video %s.', video.remoteId)
video.destroy().asCallback(callback)
video.destroy().asCallback(function (err) {
// Do not return the error, continue the process
if (err) {
logger.error('Cannot remove remote video with id %s.', videoToRemoveData.remoteId, { error: err })
}
return callback(null)
})
})
}
@ -283,7 +291,8 @@ function reportAbuseRemoteVideo (reportData, fromPod, callback) {
if (!err) err = new Error('video not found')
logger.error('Cannot load video from id.', { error: err, id: reportData.videoRemoteId })
return callback(err)
// Do not return the error, continue the process
return callback(null)
}
logger.debug('Reporting remote abuse for video %s.', video.id)
@ -295,7 +304,13 @@ function reportAbuseRemoteVideo (reportData, fromPod, callback) {
videoId: video.id
}
db.VideoAbuse.create(videoAbuseData).asCallback(callback)
db.VideoAbuse.create(videoAbuseData).asCallback(function (err) {
if (err) {
logger.error('Cannot create remote abuse video.', { error: err })
}
return callback(null)
})
})
}

View File

@ -152,8 +152,6 @@ function makeRequests () {
return
}
logger.info('Making requests to friends.')
// We want to group requests by destinations pod and endpoint
const requestsToMakeGrouped = {}
Object.keys(requests).forEach(function (toPodId) {
@ -176,6 +174,8 @@ function makeRequests () {
})
})
logger.info('Making requests to friends.', { requests: requestsToMakeGrouped })
const goodPods = []
const badPods = []

View File

@ -36,7 +36,7 @@ const numberOfPods = 6
// Wait requests between pods
const baseRequestInterval = integrityInterval < constants.REQUESTS_INTERVAL ? integrityInterval : constants.REQUESTS_INTERVAL
const requestsMaxPerInterval = baseRequestInterval / actionInterval
const intervalsToMakeAllRequests = Math.ceil(requestsMaxPerInterval / constants.REQUESTS_LIMIT)
const intervalsToMakeAllRequests = Math.ceil(requestsMaxPerInterval / (constants.REQUESTS_LIMIT_PER_POD * numberOfPods))
const waitForBeforeIntegrityCheck = (intervalsToMakeAllRequests * constants.REQUESTS_INTERVAL) + 1000
console.log('Create weight: %d, remove weight: %d.', createWeight, removeWeight)