Update Stale Purge Lock function set

- when "No space left on device" is detected a check to see if you are over your account storage max will be done, if so then it will force an unlock and create a purge request.
merge-requests/63/head
Moe 2019-02-28 14:07:14 -08:00
parent 88149c7dd5
commit 9aabfea193
3 changed files with 21 additions and 13 deletions

View File

@ -40,6 +40,11 @@ module.exports = function(s,config){
s.onTwoFactorAuthCodeNotificationExtensions.push(callback)
}
//
s.onStalePurgeLockExtensions = []
s.onStalePurgeLock = function(callback){
s.onStalePurgeLockExtensions.push(callback)
}
//
s.cloudDiskUseStartupExtensions = {}
////// EVENTS //////

View File

@ -1035,9 +1035,10 @@ module.exports = function(s,config,lang){
s.group[e.ke].mon[e.id].spawn.stderr.on('data',function(d){
d=d.toString();
switch(true){
// case checkLog(d,'No space left on device'):
//
// break;
case checkLog(d,'No space left on device'):
s.checkUserPurgeLock(e.ke)
s.purgeDiskForGroup(e)
break;
case checkLog(d,'error while decoding'):
s.userLog(e,{type:lang['Error While Decoding'],msg:lang.ErrorWhileDecodingText});
break;

View File

@ -322,20 +322,22 @@ module.exports = function(s,config){
callback(notFound,preset)
})
}
s.checkUserPurgeLock = function(groupKey){
var userGroup = s.group[groupKey]
if(s.group[groupKey].usedSpace > s.group[groupKey].sizeLimit){
s.group[groupKey].sizePurgeQueue = []
s.group[groupKey].sizePurging = false
s.systemLog(lang.sizePurgeLockedText + ' : ' + groupKey)
s.onStalePurgeLockExtensions.forEach(function(extender){
extender(groupKey,s.group[groupKey].usedSpace,s.group[groupKey].sizeLimit)
})
}
}
if(config.cron.deleteOverMax === true){
s.checkForStalePurgeLocks = function(){
var doCheck = function(){
Object.keys(s.group).forEach(function(groupKey){
var userGroup = s.group[groupKey]
var monitorCount = 10
if(userGroup.mon)monitorCount = Object.keys(userGroup.mon).length
var purgeRequestCount = userGroup.sizePurgeQueue.length
var isLocked = (userGroup.sizePurging === true)
if(isLocked && purgeRequestCount > monitorCount + 10){
s.group[groupKey].sizePurgeQueue = []
s.group[groupKey].sizePurging = false
s.systemLog(lang.sizePurgeLockedText + ' : ' + groupKey)
}
s.checkUserPurgeLock(groupKey)
})
}
clearTimeout(s.checkForStalePurgeLocksInterval)