Skip to content

Commit ea74d32

Browse files
committed
fix: prune old requst data
1 parent ba2cd55 commit ea74d32

File tree

2 files changed

+24
-48
lines changed

2 files changed

+24
-48
lines changed

lib/put.js

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -21,32 +21,12 @@ const Result = {
2121
}
2222

2323
const actionHandlers = {}
24-
const actions = {}
25-
var nextActionId = 1
26-
27-
const pruneActionTimeout = 60 * 60 * 1000
28-
const pruneInterval = 15 * 60 * 1000
2924

3025
module.exports = {
3126
start: function (app) {
3227
app.registerActionHandler = registerActionHandler
3328
app.deRegisterActionHandler = deRegisterActionHandler
3429

35-
setInterval(pruneActions, pruneInterval)
36-
37-
app.get(apiPathPrefix + 'actions', function (req, res, next) {
38-
res.json(actions)
39-
})
40-
41-
app.get(apiPathPrefix + 'actions/:id', function (req, res, next) {
42-
var action = actions[req.params.id]
43-
if (!action) {
44-
res.status(404).send()
45-
} else {
46-
res.json(action)
47-
}
48-
})
49-
5030
app.put(apiPathPrefix + '*', function (req, res, next) {
5131
var path = String(req.path).replace(apiPathPrefix, '')
5232

@@ -225,31 +205,3 @@ function deRegisterActionHandler (context, path, source, callback) {
225205
debug(`de-registered action handler for ${context} ${path} ${source}`)
226206
}
227207
}
228-
229-
function asyncCallback (actionId, status) {
230-
var action = actions[actionId]
231-
if (action) {
232-
action.state = status.state
233-
action.result = status.result
234-
action['endTime'] = new Date().toISOString()
235-
if (status.message) {
236-
action.message = status.message
237-
}
238-
if (status.percentComplete) {
239-
action.percentComplete = status.percentComplete
240-
}
241-
}
242-
}
243-
244-
function pruneActions () {
245-
debug('pruning actions')
246-
_.keys(actions).forEach(id => {
247-
var action = actions[id]
248-
249-
var diff = new Date() - new Date(action['end-time'])
250-
if (diff > pruneActionTimeout) {
251-
delete actions[id]
252-
debug('pruned action %d', id)
253-
}
254-
})
255-
}

lib/requestResponse.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ const _ = require('lodash')
44

55
const requests = {}
66

7+
// const pruneRequestTimeout = 60 * 60 * 1000
8+
// const pruneIntervalRate = 15 * 60 * 1000
9+
const pruneRequestTimeout = 10000
10+
const pruneIntervalRate = 1000
11+
var pruneInterval
12+
713
function createRequest (type, clientRequest, user, clientIp, updateCb) {
814
return new Promise((resolve, reject) => {
915
let requestId = clientRequest.requestId ? clientRequest.requestId : uuidv4()
@@ -19,6 +25,11 @@ function createRequest (type, clientRequest, user, clientIp, updateCb) {
1925
}
2026
requests[request.requestId] = request
2127
debug('createRequest %j', request)
28+
29+
if (!pruneInterval) {
30+
pruneInterval = setInterval(pruneRequests, pruneIntervalRate)
31+
}
32+
2233
resolve(request)
2334
})
2435
}
@@ -98,6 +109,19 @@ function filterRequests (type, state) {
98109
)
99110
}
100111

112+
function pruneRequests () {
113+
debug('pruning requests')
114+
_.keys(requests).forEach(id => {
115+
var request = requests[id]
116+
117+
var diff = new Date() - new Date(request.date)
118+
if (diff > pruneRequestTimeout) {
119+
delete requests[id]
120+
debug('pruned request %s', id)
121+
}
122+
})
123+
}
124+
101125
module.exports = {
102126
createRequest,
103127
updateRequest,

0 commit comments

Comments
 (0)