]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Error handling mini refractoring
authorChocobozzz <florian.bigard@gmail.com>
Fri, 5 Feb 2016 18:02:05 +0000 (19:02 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Fri, 5 Feb 2016 18:02:05 +0000 (19:02 +0100)
12 files changed:
controllers/api/v1/pods.js
controllers/api/v1/videos.js
helpers/peertubeCrypto.js
helpers/utils.js
lib/friends.js
lib/poolRequests.js
lib/videos.js
lib/webtorrent.js
middlewares/reqValidators/pods.js
models/pods.js
models/poolRequests.js
models/videos.js

index 29517ba8ecbe934aceb54a509cf9cc20d6a37b44..456f53dea0fb88be4fa491412f91f477985c18ca 100644 (file)
 
       fs.readFile(peertubeCrypto.getCertDir() + 'peertube.pub', 'utf8', function (err, cert) {
         if (err) {
-          logger.error('Cannot read cert file.', { error: err })
+          logger.error('Cannot read cert file.')
           return next(err)
         }
 
         Videos.listOwned(function (err, videos_list) {
           if (err) {
-            logger.error('Cannot get the list of owned videos.', { error: err })
+            logger.error('Cannot get the list of owned videos.')
             return next(err)
           }
 
@@ -78,7 +78,8 @@
 
       Videos.removeAllRemotesOf(url, function (err) {
         if (err) logger.error('Cannot remove all remote videos of %s.', url)
-        logger.info('%s pod removed.', url)
+        else logger.info('%s pod removed.', url)
+
         res.sendStatus(204)
       })
     })
index 7792059ca6e6fe86edc25b2661cd99e2ae2421d8..eec95c8018e762d7200728d15c9eeed1f9a08d07 100644 (file)
@@ -56,7 +56,7 @@
 
     videos.seed(video_file.path, function (err, torrent) {
       if (err) {
-        logger.error('Cannot seed this video.', { error: err })
+        logger.error('Cannot seed this video.')
         return next(err)
       }
 
@@ -70,7 +70,7 @@
       Videos.add(video_data, function (err) {
         if (err) {
           // TODO unseed the video
-          logger.error('Cannot insert this video in the database.', { error: err })
+          logger.error('Cannot insert this video in the database.')
           return next(err)
         }
 
index 3e757659b89bd4321be6e4ba70e43748bd7daada..36271dba9ced037a20011bc57e607e56a5b3294b 100644 (file)
       logger.info('Generating a RSA key...')
       openssl.exec('genrsa', { 'out': certDir + 'peertube.key.pem', '2048': false }, function (err) {
         if (err) {
-          logger.error('Cannot create private key on this pod.', { error: err })
+          logger.error('Cannot create private key on this pod.')
           return callback(err)
         }
         logger.info('RSA key generated.')
         logger.info('Manage public key...')
         openssl.exec('rsa', { 'in': certDir + 'peertube.key.pem', 'pubout': true, 'out': certDir + 'peertube.pub' }, function (err) {
           if (err) {
-            logger.error('Cannot create public key on this pod .', { error: err })
+            logger.error('Cannot create public key on this pod.')
             return callback(err)
           }
 
 
   function generatePassword (callback) {
     crypto.randomBytes(32, function (err, buf) {
-      if (err) {
-        return callback(err)
-      }
+      if (err) return callback(err)
 
       callback(null, buf.toString('utf8'))
     })
 
   function symetricEncrypt (text, callback) {
     generatePassword(function (err, password) {
-      if (err) {
-        return callback(err)
-      }
+      if (err) return callback(err)
 
       var cipher = crypto.createCipher(algorithm, password)
       var crypted = cipher.update(text, 'utf8', 'hex')
index bd0557977548147fc93560a67deeeca3b2121ee0..92684ea8119480092e376e01bc42b3e08a46a198 100644 (file)
@@ -8,7 +8,7 @@
   }
 
   function cleanForExit (webtorrent_process) {
-    logger.info('Gracefully exiting')
+    logger.info('Gracefully exiting.')
     process.kill(-webtorrent_process.pid)
   }
 
index b0086a38b78e1fb2b1cc6e53139d0050afff7d05..badf09c7dd7e6d184978d2479c117315ec4c524a 100644 (file)
@@ -30,8 +30,7 @@
   function addVideoToFriends (video) {
     // To avoid duplicates
     var id = video.name + video.magnetUri
-    // namePath is null
-    // TODO
+    // ensure namePath is null
     video.namePath = null
     PoolRequests.addRequest(id, 'add', video)
   }
     logger.info('Make friends!')
     fs.readFile(peertubeCrypto.getCertDir() + 'peertube.pub', 'utf8', function (err, cert) {
       if (err) {
-        logger.error('Cannot read public cert.', { error: err })
+        logger.error('Cannot read public cert.')
         return callback(err)
       }
 
       var urls = config.get('network.friends')
 
-      async.each(urls, computeForeignPodsList, function () {
+      async.each(urls, computeForeignPodsList, function (err) {
+        if (err) return callback(err)
+
         logger.debug('Pods scores computed.', { pods_score: pods_score })
         var pods_list = computeWinningPods(urls, pods_score)
         logger.debug('Pods that we keep computed.', { pods_to_keep: pods_list })
@@ -72,7 +73,8 @@
       // Let's give 1 point to the pod we ask the friends list
       pods_score[url] = 1
 
-      getForeignPodsList(url, function (foreign_pods_list) {
+      getForeignPodsList(url, function (err, foreign_pods_list) {
+        if (err) return callback(err)
         if (foreign_pods_list.length === 0) return callback()
 
         async.each(foreign_pods_list, function (foreign_pod, callback_each) {
 
       // Get the list of our videos to send to our new friends
       Videos.listOwned(function (err, videos_list) {
-        if (err) throw err
+        if (err) {
+          logger.error('Cannot get the list of videos we own.')
+          return callback(err)
+        }
 
         var data = {
           url: http + '://' + host + ':' + port,
             poolRequests.activate()
 
             if (err) {
-              logger.error('There was some errors when we wanted to make friends.', { error: err })
+              logger.error('There was some errors when we wanted to make friends.')
               return callback(err)
             }
 
     var path = '/api/' + constants.API_VERSION + '/pods'
 
     request.get(url + path, function (err, response, body) {
-      if (err) throw err
-      callback(JSON.parse(body))
+      if (err) return callback(err)
+
+      callback(null, JSON.parse(body))
     })
   }
 })()
index f4ab434adcc86232c285e6a7d4421e06146e52d8..ccc3489ab195d137e281edffac51a5784b6256fa 100644 (file)
@@ -44,7 +44,7 @@
     if (!callback) callback = function () {}
 
     Pods.list(function (err, pods) {
-      if (err) throw err
+      if (err) return callback(err)
 
       var params = {
         encrypt: true,
@@ -59,7 +59,7 @@
       } else if (type === 'remove') {
         params.path = '/api/' + constants.API_VERSION + '/remotevideos/remove'
       } else {
-        throw new Error('Unkown pool request type.')
+        return callback(new Error('Unkown pool request type.'))
       }
 
       var bad_pods = []
     logger.info('Making pool requests to friends.')
 
     PoolRequests.list(function (err, pool_requests) {
-      if (err) throw err
+      if (err) {
+        logger.error('Cannot get the list of pool requests.', { err: err })
+        return // Abort
+      }
 
       if (pool_requests.length === 0) return
 
           requests_to_make.remove.requests.push(pool_request.request)
           requests_to_make.remove.ids.push(pool_request._id)
         } else {
-          throw new Error('Unkown pool request type.')
+          logger.error('Unkown pool request type.', { request_type: pool_request.type })
+          return // abort
         }
 
         callback_each()
 
   function removeBadPods () {
     Pods.findBadPods(function (err, pods) {
-      if (err) throw err
+      if (err) {
+        logger.error('Cannot find bad pods.', { error: err })
+        return // abort
+      }
 
       if (pods.length === 0) return
 
       var ids = pluck(pods, '_id')
 
       Videos.removeAllRemotesOf(urls, function (err, r) {
-        if (err) logger.error('Cannot remove videos from a pod that we removing.', { error: err })
-        var videos_removed = r.result.n
-        logger.info('Removed %d videos.', videos_removed)
+        if (err) {
+          logger.error('Cannot remove videos from a pod that we removing.', { error: err })
+        } else {
+          var videos_removed = r.result.n
+          logger.info('Removed %d videos.', videos_removed)
+        }
 
         Pods.removeAllByIds(ids, function (err, r) {
-          if (err) logger.error('Cannot remove bad pods.', { error: err })
-
-          var pods_removed = r.result.n
-          logger.info('Removed %d pods.', pods_removed)
+          if (err) {
+            logger.error('Cannot remove bad pods.', { error: err })
+          } else {
+            var pods_removed = r.result.n
+            logger.info('Removed %d pods.', pods_removed)
+          }
         })
       })
     })
   function updatePodsScore (good_pods, bad_pods) {
     logger.info('Updating %d good pods and %d bad pods scores.', good_pods.length, bad_pods.length)
 
-    Pods.incrementScores(good_pods, constants.PODS_SCORE.BONUS)
+    Pods.incrementScores(good_pods, constants.PODS_SCORE.BONUS, function (err) {
+      if (err) logger.error('Cannot increment scores of good pods.')
+    })
+
     Pods.incrementScores(bad_pods, constants.PODS_SCORE.MALUS, function (err) {
-      if (err) throw err
+      if (err) logger.error('Cannot increment scores of bad pods.')
       removeBadPods()
     })
   }
index 5d23070a7dcbcdedcc37ede38fa43b6f025cae95..0da7715c413348216f0b00dab792584a03310b14 100644 (file)
   function seedAllExisting (callback) {
     Videos.listOwned(function (err, videos_list) {
       if (err) {
-        logger.error('Cannot get list of the videos to seed.', { error: err })
+        logger.error('Cannot get list of the videos to seed.')
         return callback(err)
       }
 
       async.each(videos_list, function (video, each_callback) {
         seed(uploadDir + video.namePath, function (err) {
           if (err) {
-            logger.error('Cannot seed this video.', { error: err })
+            logger.error('Cannot seed this video.')
             return callback(err)
           }
 
index d1ca3c9f2fe62a784784416c2c38a8e3a36259ab..d0db6e066adcfedf02c15b32a3cd32487da22ddf 100644 (file)
@@ -62,7 +62,7 @@
       try {
         wt.remove(magnetUri, callback)
       } catch (err) {
-        console.log('Cannot remove the torrent from WebTorrent')
+        console.log('Cannot remove the torrent from WebTorrent.')
         return callback(null)
       }
 
index 499cafd8f0e2b0acae9dd3d8f1d156436c3f3cc2..4d649b486626e63a900130b5059af81e72d83199 100644 (file)
 
   function makeFriends (req, res, next) {
     friends.hasFriends(function (err, has_friends) {
-      if (err) return next(err)
+      if (err) {
+        logger.error('Cannot know if we have friends.', { error: err })
+        res.sendStatus(500)
+      }
 
       if (has_friends === true) {
         // We need to quit our friends before make new ones
index 395b1e0b12056a1c27a345890c5030479a5e462b..04fd042c39c2b66f39199145f6c3b2e13d941420 100644 (file)
@@ -61,7 +61,7 @@
   function list (callback) {
     PodsDB.find(function (err, pods_list) {
       if (err) {
-        logger.error('Cannot get the list of the pods.', { error: err })
+        logger.error('Cannot get the list of the pods.')
         return callback(err)
       }
 
index 0f488ef04202e2af649e4f91f6274262b2c163fe..962e75e6a5bab36fac95e95c7073e5afc07a9df4 100644 (file)
     logger.debug('Add request to the pool requests.', { id: id, type: type, request: request })
 
     PoolRequestsDB.findOne({ id: id }, function (err, entity) {
-      if (err) logger.error(err)
+      if (err) {
+        logger.error('Cannot find one pool request.', { error: err })
+        return // Abort
+      }
 
       if (entity) {
         if (entity.type === type) {
-          logger.error(new Error('Cannot insert two same requests.'))
-          return
+          logger.error('Cannot insert two same requests.')
+          return // Abort
         }
 
         // Remove the request of the other type
         PoolRequestsDB.remove({ id: id }, function (err) {
-          if (err) logger.error(err)
+          if (err) {
+            logger.error('Cannot remove a pool request.', { error: err })
+            return // Abort
+          }
         })
       } else {
         PoolRequestsDB.create({ id: id, type: type, request: request }, function (err) {
-          if (err) logger.error(err)
+          logger.error('Cannot create a pool request.', { error: err })
+          return // Abort
         })
       }
     })
@@ -54,7 +61,7 @@
     PoolRequestsDB.remove({ _id: { $in: ids } }, function (err) {
       if (err) {
         logger.error('Cannot remove requests from the pool requests database.', { error: err })
-        return
+        return // Abort
       }
 
       logger.info('Pool requests flushed.')
index 10abee6e78e77264d78d7243a2d3915f97c507ab..6ea6283737c6840f3b6298fb1fa71b514d9355b1 100644 (file)
@@ -50,7 +50,7 @@
 
     VideosDB.create(params, function (err, video) {
       if (err) {
-        logger.error('Cannot insert this video into database.', { error: err })
+        logger.error('Cannot insert this video into database.')
         return callback(err)
       }
 
@@ -82,7 +82,7 @@
     }, function () {
       VideosDB.create(to_add, function (err, videos) {
         if (err) {
-          logger.error('Cannot insert this remote video.', { error: err })
+          logger.error('Cannot insert this remote video.')
           return callback(err)
         }
 
@@ -94,7 +94,7 @@
   function get (id, callback) {
     VideosDB.findById(id, function (err, video) {
       if (err) {
-        logger.error('Cannot get this video.', { error: err })
+        logger.error('Cannot get this video.')
         return callback(err)
       }
 
     VideosDB.findById(id, function (err, video) {
       if (err || !video) {
         if (!err) err = new Error('Cannot find this video.')
-        logger.error('Cannot find this video.', { error: err })
+        logger.error('Cannot find this video.')
         return callback(err)
       }
 
       if (video.namePath === null) {
         var error_string = 'Cannot remove the video of another pod.'
         logger.error(error_string)
-        return callback(null, false, video)
+        return callback(new Error(error_string), false, video)
       }
 
       callback(null, true, video)
   function list (callback) {
     VideosDB.find(function (err, videos_list) {
       if (err) {
-        logger.error('Cannot get list of the videos.', { error: err })
+        logger.error('Cannot get the list of the videos.')
         return callback(err)
       }
 
     // If namePath is not null this is *our* video
     VideosDB.find({ namePath: { $ne: null } }, function (err, videos_list) {
       if (err) {
-        logger.error('Cannot get list of the videos.', { error: err })
+        logger.error('Cannot get the list of owned videos.')
         return callback(err)
       }
 
   function removeOwned (id, callback) {
     VideosDB.findByIdAndRemove(id, function (err, video) {
       if (err) {
-        logger.error('Cannot remove the torrent.', { error: err })
+        logger.error('Cannot remove the torrent.')
         return callback(err)
       }
 
       fs.unlink(uploadDir + video.namePath, function (err) {
         if (err) {
-          logger.error('Cannot remove this video file.', { error: err })
+          logger.error('Cannot remove this video file.')
           return callback(err)
         }
 
   function search (name, callback) {
     VideosDB.find({ name: new RegExp(name) }, function (err, videos) {
       if (err) {
-        logger.error('Cannot search the videos.', { error: err })
+        logger.error('Cannot search the videos.')
         return callback(err)
       }