@@ -44,6 +44,7 @@ function Collector (options) {
4444 // init required variables
4545 this . _noStack = options . noStack
4646 this . _eventTtl = options . eventTtl || 1
47+ this . _lockExpriryMs = 240000
4748 this . _eventBuffers = { }
4849 this . _sampler = reservoirSampler . create ( this . samplerLimit )
4950}
@@ -374,6 +375,7 @@ Collector.prototype._addLockToCache = function (cacheId) {
374375 cacheId = cacheId || 'root'
375376 if ( this . _eventBuffers [ cacheId ] ) {
376377 ++ this . _eventBuffers [ cacheId ] . locks
378+ this . _eventBuffers [ cacheId ] . lastLocked = Date . now ( )
377379 }
378380}
379381
@@ -418,26 +420,28 @@ Collector.prototype.collect = function () {
418420 var lockedCount = 0
419421 Object . keys ( this . _eventBuffers ) . forEach ( function ( key ) {
420422 if ( self . _eventBuffers [ key ] . locks > 0 ) {
421- ++ lockedCount
422- return
423- } else {
424- if ( ! self . _eventBuffers [ key ] . skipped &&
425- some ( self . _eventBuffers [ key ] . severityBuf . elements ( ) , function ( severity ) {
426- return levels . gte ( severity , self . mustCollectSeverity )
427- } ) ) {
428- var events = self . _eventBuffers [ key ] . eventBuf . flush ( )
429- if ( events . length ) {
430- self . _sampler . add ( events )
431- }
423+ var deltaSinceLastLocked = Date . now ( ) - self . _eventBuffers [ key ] . lastLocked
424+ if ( deltaSinceLastLocked < self . _lockExpriryMs ) {
425+ ++ lockedCount
426+ return
432427 }
433- self . _eventBuffers [ key ] . eventBuf . expire ( )
434- self . _eventBuffers [ key ] . severityBuf . expire ( )
435-
436- if ( self . _eventBuffers [ key ] . skipped ||
437- self . _eventBuffers [ key ] . severityBuf . isEmpty ( ) ) {
438- delete self . _eventBuffers [ key ]
428+ }
429+ if ( ! self . _eventBuffers [ key ] . skipped &&
430+ some ( self . _eventBuffers [ key ] . severityBuf . elements ( ) , function ( severity ) {
431+ return levels . gte ( severity , self . mustCollectSeverity )
432+ } ) ) {
433+ var events = self . _eventBuffers [ key ] . eventBuf . flush ( )
434+ if ( events . length ) {
435+ self . _sampler . add ( events )
439436 }
440437 }
438+ self . _eventBuffers [ key ] . eventBuf . expire ( )
439+ self . _eventBuffers [ key ] . severityBuf . expire ( )
440+
441+ if ( self . _eventBuffers [ key ] . skipped ||
442+ self . _eventBuffers [ key ] . severityBuf . isEmpty ( ) ) {
443+ delete self . _eventBuffers [ key ]
444+ }
441445 } )
442446 debug ( '#collect' , lockedCount + ' buffers locked' )
443447 return this . _sampler . flush ( ) . reduce ( function ( acc , x ) {
0 commit comments