From: Paul J R Date: Sat, 29 Jun 2013 12:34:14 +0000 (+1000) Subject: yum repo maint script changes X-Git-Url: http://git.pjr.cc/?p=nodejs-repoproxy.git;a=commitdiff_plain;h=de76542532786821c02a226cc1470f6b5dd07edc yum repo maint script changes --- diff --git a/lib/repo-yum.js b/lib/repo-yum.js index a78be2e..d7a054f 100644 --- a/lib/repo-yum.js +++ b/lib/repo-yum.js @@ -17,6 +17,7 @@ function maintain(name, repoinfo, files) { function fileCheck(i) { var wasExpired = false; var inDownload = false; + var disappeared = false; log.debug("checking file: ", files[i]); log.debug("checking if file is in download mode"); @@ -63,57 +64,65 @@ function maintain(name, repoinfo, files) { } else { // STUFF!!! fs.stat(files[i], function(err, stats) { - log.debug("stats for file was: ", stats); - var curtime = new Date().getTime(); - var atime = stats.atime.getTime(); - log.debug("curtime is ", curtime); - log.debug("ctime is ", atime); - - var age = curtime - atime; - //log.debug("age is (%d) for (%d)", age, expireAge); - if(age > expireAge) { - // TODO: cleanup singular file - // TODO: cleanup meta too, fuck me - //log.debug("clean up file \n", files[i]); - //log.debug("meta for this file is \n", nfile); - cache.moveToCleanup(files[i]); - cache.moveToCleanup(metafile); - log.info("Sending expired file to trash for cleanup (%s)", files[i]); - wasExpired = true; + if(err) { + log.debug("some weird problem stating the file"); + disappeared = true; + } else { + log.debug("stats for file was: ", stats); + var curtime = new Date().getTime(); + var atime = stats.atime.getTime(); + log.debug("curtime is ", curtime); + log.debug("ctime is ", atime); + + var age = curtime - atime; + //log.debug("age is (%d) for (%d)", age, expireAge); + if(age > expireAge) { + // TODO: cleanup singular file + // TODO: cleanup meta too, fuck me + //log.debug("clean up file \n", files[i]); + //log.debug("meta for this file is \n", nfile); + cache.moveToCleanup(files[i]); + cache.moveToCleanup(metafile); + log.info("Sending expired file to trash for cleanup (%s)", files[i]); + wasExpired = true; + } } }) } // make sure we have a metadata file for our file - fs.stat(metafile, function(err, stats) { - if(err) { - log.debug("file (%s) has no metadata file - moving for cleanup"); - cache.moveToCleanup(files[i]); - cache.moveToCleanup(metafile); - } - }); - - // check meta data - fs.stat(files[i], function(err, stats) { - var fsize = stats.size; - var mfile = fs.createReadStream(metafile); - var expSize = ""; - mfile.on("data", function(data) { - expSize += data; - }); - - mfile.on("end", function(closed) { - if(fsize != parseInt(expSize)) { - log.debug("possible metadata clash for (%s) - (%d),(%s), removing file", files[i], fsize, expSize); + if(!disappeared) { + fs.stat(metafile, function(err, stats) { + if(err) { + log.debug("file (%s) has no metadata file - moving for cleanup"); cache.moveToCleanup(files[i]); cache.moveToCleanup(metafile); } else { - log.debug("metadata good for (%s) - (%d),(%s)", files[i], fsize, expSize); + + // check meta data + fs.stat(files[i], function(err, stats) { + var fsize = stats.size; + var mfile = fs.createReadStream(metafile); + var expSize = ""; + mfile.on("data", function(data) { + expSize += data; + }); + + mfile.on("end", function(closed) { + if(fsize != parseInt(expSize)) { + log.debug("possible metadata clash for (%s) - (%d),(%s), removing file", files[i], fsize, expSize); + cache.moveToCleanup(files[i]); + cache.moveToCleanup(metafile); + } else { + log.debug("metadata good for (%s) - (%d),(%s)", files[i], fsize, expSize); + } + }); + + }); } }); - - }); + } } else { log.debug("file %s was ignored as its in download", files[i]);