deathticks = MAX_REQUEST_IN_TRANSACTION / TICKER_REPEAT
transactionTicker = (repeat)->
old = []
tick = ->
setTimeout ->
str = (list)->
list.map (i)->i.name?.slice(0, 5) ? '????'
.join ' '
processing = str(_.values(Transaction.processing))
implicit = str(Transaction.implicit)
requests = str(Transaction.unanswered)
nopen = _.size(Transaction.processing) +
Transaction.implicit.length +
Transaction.unanswered.length
if nopen > 0
Request.logger.info("Transactions: PRC: #{processing} " +
"IMP: #{implicit} REQ: #{requests}")
Transaction.unanswered.slice().map (r, i)->
if !r.deferred?.promise.isPending()
Transaction.unanswered.splice(i, 1)
return
oi = _.findIndex old, (o)->o.request == r
if oi != -1
o = old[oi]
o.ticks += 1
if o.ticks > deathticks
o.request.reject new Error('Waited too long')
old.splice(oi, 1)
else
old.push { request: r, ticks: 0 }
tick()
, repeat
tick()
transactionTicker(TICKER_REPEAT)
module.exports = Transaction