Revision 61bfaf2e src/main/scala/gr/grnet/aquarium/service/SimpleTimerService.scala
b/src/main/scala/gr/grnet/aquarium/service/SimpleTimerService.scala | ||
---|---|---|
35 | 35 |
|
36 | 36 |
package gr.grnet.aquarium.service |
37 | 37 |
|
38 |
import gr.grnet.aquarium.util.{Loggable, Lifecycle} |
|
39 |
import gr.grnet.aquarium.util.date.TimeHelpers |
|
40 | 38 |
import java.util.{TimerTask, Timer} |
41 | 39 |
import gr.grnet.aquarium.uid.{UUIDGenerator, UIDGenerator} |
40 |
import gr.grnet.aquarium.util.chainOfCausesForLogging |
|
42 | 41 |
|
43 | 42 |
|
44 | 43 |
/** |
... | ... | |
50 | 49 |
private[this] val timer = new Timer() |
51 | 50 |
private[this] val uidGen: UIDGenerator[_] = UUIDGenerator |
52 | 51 |
|
53 |
def scheduleOnce[T](f: ⇒ T, delayMillis: Long): String = {
|
|
52 |
def scheduleOnce[T](infoString: String, f: ⇒ T, delayMillis: Long, reportException: Boolean = true): String = {
|
|
54 | 53 |
val uid = uidGen.nextUID() |
55 | 54 |
val timerTask = new TimerTask { |
56 | 55 |
def run() = { |
57 | 56 |
try f |
58 | 57 |
catch { |
59 | 58 |
case e: Exception ⇒ |
60 |
logger.warn("While running task %s".format(uid))
|
|
59 |
logger.warn("While running task %s(%s)\n%s".format(infoString, uid, chainOfCausesForLogging(e, 1)))
|
|
61 | 60 |
} |
62 | 61 |
} |
63 | 62 |
} |
Also available in: Unified diff