only keep a single cached output directory in per-user containers
This commit is contained in:
@@ -45,9 +45,8 @@ module.exports = OutputCacheManager =
|
|||||||
cacheRoot = Path.join(compileDir, OutputCacheManager.CACHE_SUBDIR)
|
cacheRoot = Path.join(compileDir, OutputCacheManager.CACHE_SUBDIR)
|
||||||
# Put the files into a new cache subdirectory
|
# Put the files into a new cache subdirectory
|
||||||
cacheDir = Path.join(compileDir, OutputCacheManager.CACHE_SUBDIR, buildId)
|
cacheDir = Path.join(compileDir, OutputCacheManager.CACHE_SUBDIR, buildId)
|
||||||
|
# Is it a per-user compile? check if compile directory is PROJECTID-USERID
|
||||||
# let file expiry run in the background
|
perUser = Path.basename(compileDir).match(/^[0-9a-f]{24}-[0-9a-f]{24}$/)
|
||||||
OutputCacheManager.expireOutputFiles cacheRoot, {keep: buildId}
|
|
||||||
|
|
||||||
# Archive logs in background
|
# Archive logs in background
|
||||||
if Settings.clsi?.archive_logs or Settings.clsi?.strace
|
if Settings.clsi?.archive_logs or Settings.clsi?.strace
|
||||||
@@ -83,9 +82,15 @@ module.exports = OutputCacheManager =
|
|||||||
if err?
|
if err?
|
||||||
# pass back the original files if we encountered *any* error
|
# pass back the original files if we encountered *any* error
|
||||||
callback(err, outputFiles)
|
callback(err, outputFiles)
|
||||||
|
# clean up the directory we just created
|
||||||
|
fse.remove cacheDir, (err) ->
|
||||||
|
if err?
|
||||||
|
logger.error err: err, dir: dir, "error removing cache dir after failure"
|
||||||
else
|
else
|
||||||
# pass back the list of new files in the cache
|
# pass back the list of new files in the cache
|
||||||
callback(err, results)
|
callback(err, results)
|
||||||
|
# let file expiry run in the background, expire all previous files if per-user
|
||||||
|
OutputCacheManager.expireOutputFiles cacheRoot, {keep: buildId, limit: if perUser then 0 else null}
|
||||||
|
|
||||||
archiveLogs: (outputFiles, compileDir, buildId, callback = (error) ->) ->
|
archiveLogs: (outputFiles, compileDir, buildId, callback = (error) ->) ->
|
||||||
archiveDir = Path.join(compileDir, OutputCacheManager.ARCHIVE_SUBDIR, buildId)
|
archiveDir = Path.join(compileDir, OutputCacheManager.ARCHIVE_SUBDIR, buildId)
|
||||||
@@ -116,6 +121,8 @@ module.exports = OutputCacheManager =
|
|||||||
|
|
||||||
isExpired = (dir, index) ->
|
isExpired = (dir, index) ->
|
||||||
return false if options?.keep == dir
|
return false if options?.keep == dir
|
||||||
|
# remove any directories over the requested (non-null) limit
|
||||||
|
return true if options?.limit? and index > options.limit
|
||||||
# remove any directories over the hard limit
|
# remove any directories over the hard limit
|
||||||
return true if index > OutputCacheManager.CACHE_LIMIT
|
return true if index > OutputCacheManager.CACHE_LIMIT
|
||||||
# we can get the build time from the first part of the directory name DDDD-RRRR
|
# we can get the build time from the first part of the directory name DDDD-RRRR
|
||||||
|
|||||||
Reference in New Issue
Block a user