mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Use map instead of hash for metrics
This commit is contained in:
parent
e0cf10a886
commit
feecda8ea8
1 changed files with 13 additions and 13 deletions
|
@ -1,6 +1,6 @@
|
|||
prom = require('prom-client')
|
||||
registry = require('prom-client').register
|
||||
metrics = {}
|
||||
metrics = new Map()
|
||||
|
||||
|
||||
optsKey = (opts) ->
|
||||
|
@ -33,16 +33,16 @@ PromWrapper =
|
|||
registry: registry
|
||||
|
||||
metric: (type, name) ->
|
||||
registry.getSingleMetric(name) || new MetricWrapper(type, name)
|
||||
metrics.get(name) || new MetricWrapper(type, name)
|
||||
|
||||
collectDefaultMetrics: prom.collectDefaultMetrics
|
||||
|
||||
|
||||
class MetricWrapper
|
||||
constructor: (type, name) ->
|
||||
metrics[name] = this
|
||||
metrics.set(name, this)
|
||||
@name = name
|
||||
@instances = {}
|
||||
@instances = new Map()
|
||||
@lastAccess = new Date()
|
||||
@metric = switch type
|
||||
when "counter"
|
||||
|
@ -77,22 +77,22 @@ class MetricWrapper
|
|||
|
||||
sweep: () ->
|
||||
thresh = new Date(Date.now() - 1000 * 60 * PromWrapper.ttlInMinutes)
|
||||
for key in Object.keys(@instances)
|
||||
if thresh > @instances[key].time
|
||||
@instances.forEach (instance, key) =>
|
||||
if thresh > instance.time
|
||||
if process.env['DEBUG_METRICS']
|
||||
console.log("Sweeping stale metric instance", @name, opts: @instances[key].opts, key)
|
||||
@metric.remove(optsAsArgs(@instances[key].opts, @metric.labelNames)...)
|
||||
console.log("Sweeping stale metric instance", @name, opts: instance.opts, key)
|
||||
@metric.remove(optsAsArgs(instance.opts, @metric.labelNames)...)
|
||||
|
||||
if thresh > @lastAccess
|
||||
if process.env['DEBUG_METRICS']
|
||||
console.log("Sweeping stale metric", @name)
|
||||
delete metrics[@name]
|
||||
console.log("Sweeping stale metric", @name, thresh, @lastAccess)
|
||||
metrics.delete(@name)
|
||||
registry.removeSingleMetric(@name)
|
||||
|
||||
_execMethod: (method, opts, value) ->
|
||||
opts = extendOpts(opts, @metric.labelNames)
|
||||
key = optsKey(opts)
|
||||
@instances[key] = { time: new Date(), opts } unless key == ''
|
||||
@instances.set(key, { time: new Date(), opts }) unless key == ''
|
||||
@lastAccess = new Date()
|
||||
@metric[method](opts, value)
|
||||
|
||||
|
@ -106,8 +106,8 @@ unless PromWrapper.sweepRegistered
|
|||
if PromWrapper.ttlInMinutes
|
||||
if process.env['DEBUG_METRICS']
|
||||
console.log("Sweeping metrics")
|
||||
for key in Object.keys(metrics)
|
||||
metrics[key].sweep()
|
||||
metrics.forEach (metric, key) =>
|
||||
metric.sweep()
|
||||
60000)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue