mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 22:23:42 +01:00
[clsi] make last access tracking more robust (#32192)
* [clsi] do not overwrite last access during initial scan * [clsi] cleanup submission cache 5-10min after startup * [clsi] address review comments GitOrigin-RevId: e03beec1b3deaee50629ada72b0242a8a2b2ae66
This commit is contained in:
@@ -22,6 +22,11 @@ import { LAST_ACCESS } from './LastProjectAccess.js'
|
||||
let ProjectPersistenceManager
|
||||
const oneDay = 24 * 60 * 60 * 1000
|
||||
|
||||
function setLastAccessIfNewer(id, ts) {
|
||||
const prev = LAST_ACCESS.get(id) ?? 0
|
||||
LAST_ACCESS.set(id, Math.max(ts, prev))
|
||||
}
|
||||
|
||||
let ANY_DISK_LOW = false
|
||||
let ANY_DISK_CRITICAL_LOW = false
|
||||
|
||||
@@ -118,14 +123,23 @@ export default ProjectPersistenceManager = {
|
||||
Settings.path.compilesDir,
|
||||
projectAndUserId
|
||||
)
|
||||
if (!/^[a-f0-9]{24}(-[a-f0-9]{24})?$/.test(projectAndUserId)) {
|
||||
// Submissions etc. Schedule for cleanup in 5-10min with jitter.
|
||||
const delay = (5 + 5 * Math.random()) * 60_000
|
||||
setLastAccessIfNewer(
|
||||
projectAndUserId,
|
||||
Date.now() - ProjectPersistenceManager.EXPIRY_TIMEOUT + delay
|
||||
)
|
||||
return cb()
|
||||
}
|
||||
const projectId = projectAndUserId.slice(0, 24)
|
||||
fs.stat(compileDir, (err, stats) => {
|
||||
if (err) {
|
||||
// Schedule for immediate cleanup
|
||||
LAST_ACCESS.set(projectId, 0)
|
||||
setLastAccessIfNewer(projectId, 0)
|
||||
} else {
|
||||
// Cleanup eventually.
|
||||
LAST_ACCESS.set(projectId, stats.mtime.getTime())
|
||||
setLastAccessIfNewer(projectId, stats.mtime.getTime())
|
||||
}
|
||||
cb()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user