Renamed to EventHandler and added 'info, debug, warning and error'
This commit is contained in:
parent
a41fd15228
commit
793ad9ac03
16 changed files with 132 additions and 123 deletions
|
|
@ -1,4 +1,14 @@
|
||||||
/**
|
/**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
|
* Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -73,63 +83,54 @@ class ActorKilledException private[akka](message: String) extends AkkaEx
|
||||||
class ActorInitializationException private[akka](message: String) extends AkkaException(message)
|
class ActorInitializationException private[akka](message: String) extends AkkaException(message)
|
||||||
class ActorTimeoutException private[akka](message: String) extends AkkaException(message)
|
class ActorTimeoutException private[akka](message: String) extends AkkaException(message)
|
||||||
|
|
||||||
sealed trait ErrorHandlerEventLevel {
|
|
||||||
def asString: String
|
|
||||||
}
|
|
||||||
object HighErrorHandlerEventLevel extends ErrorHandlerEventLevel {
|
|
||||||
def asString = "high"
|
|
||||||
}
|
|
||||||
object MediumErrorHandlerEventLevel extends ErrorHandlerEventLevel {
|
|
||||||
def asString = "medium"
|
|
||||||
}
|
|
||||||
object LowErrorHandlerEventLevel extends ErrorHandlerEventLevel {
|
|
||||||
def asString = "low"
|
|
||||||
}
|
|
||||||
|
|
||||||
case class ErrorHandlerEvent(
|
|
||||||
@BeanProperty val cause: Throwable,
|
|
||||||
@BeanProperty val instance: AnyRef,
|
|
||||||
@BeanProperty val message: String = "",
|
|
||||||
@BeanProperty val level: ErrorHandlerEventLevel = MediumErrorHandlerEventLevel) {
|
|
||||||
@BeanProperty val thread: Thread = Thread.currentThread
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME add flume listener
|
|
||||||
// document writing custom
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error handler.
|
* Error handler.
|
||||||
*
|
*
|
||||||
* Create, add and remove a listener:
|
* Create, add and remove a listener:
|
||||||
* <pre>
|
* <pre>
|
||||||
* val errorHandlerEventListener = new Actor {
|
* val errorHandlerEventListener = new Actor {
|
||||||
* self.dispatcher = ErrorHandler.ErrorHandlerDispatcher
|
* self.dispatcher = EventHandler.EventHandlerDispatcher
|
||||||
*
|
*
|
||||||
* def receive = {
|
* def receive = {
|
||||||
* case ErrorHandlerEvent(cause, message, level) =>
|
* case EventHandler.Error(cause, instance, message) => ...
|
||||||
|
* case EventHandler.Warning(cause, instance, message) => ...
|
||||||
|
* case EventHandler.Info(instance, message) => ...
|
||||||
|
* case EventHandler.Debug(instance, message) => ...
|
||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* ErrorHandler.addListener(errorHandlerEventListener)
|
* EventHandler.addListener(errorHandlerEventListener)
|
||||||
* ...
|
* ...
|
||||||
* ErrorHandler.removeListener(errorHandlerEventListener)
|
* EventHandler.removeListener(errorHandlerEventListener)
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* Log an error event:
|
* Log an error event:
|
||||||
* <pre>
|
* <pre>
|
||||||
* ErrorHandler notifyListeners ErrorHandlerEvent(reason, this, message.toString)
|
* EventHandler notifyListeners EventHandler.Error(exception, this, message.toString)
|
||||||
* </pre>
|
* </pre>
|
||||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||||
*/
|
*/
|
||||||
object ErrorHandler extends ListenerManagement {
|
object EventHandler extends ListenerManagement {
|
||||||
import java.io.{StringWriter, PrintWriter}
|
import java.io.{StringWriter, PrintWriter}
|
||||||
import java.text.DateFormat
|
import java.text.DateFormat
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import akka.dispatch.Dispatchers
|
import akka.dispatch.Dispatchers
|
||||||
|
|
||||||
val error = "[error:%s] [%s] [%s] [%s] %s\n%s".intern
|
sealed trait Event {
|
||||||
val ID = "default:error:handler"
|
val thread: Thread = Thread.currentThread
|
||||||
val ErrorHandlerDispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher(ID).build
|
}
|
||||||
|
case class Error(cause: Throwable, instance: AnyRef, message: String = "") extends Event
|
||||||
|
case class Warning(cause: Throwable, instance: AnyRef, message: String = "") extends Event
|
||||||
|
case class Info(instance: AnyRef, message: String = "") extends Event
|
||||||
|
case class Debug(instance: AnyRef, message: String = "") extends Event
|
||||||
|
|
||||||
|
val error = "[ERROR] [%s] [%s] [%s] %s\n%s".intern
|
||||||
|
val warning = "[WARN] [%s] [%s] [%s] %s\n%s".intern
|
||||||
|
val info = "[INFO] [%s] [%s] [%s] %s".intern
|
||||||
|
val debug = "[DEBUG] [%s] [%s] [%s] %s".intern
|
||||||
|
val ID = "default:error:handler".intern
|
||||||
|
|
||||||
|
val EventHandlerDispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher(ID).build
|
||||||
|
|
||||||
def formattedTimestamp = DateFormat.getInstance.format(new Date)
|
def formattedTimestamp = DateFormat.getInstance.format(new Date)
|
||||||
|
|
||||||
|
|
@ -142,18 +143,35 @@ object ErrorHandler extends ListenerManagement {
|
||||||
|
|
||||||
class DefaultListener extends Actor {
|
class DefaultListener extends Actor {
|
||||||
self.id = ID
|
self.id = ID
|
||||||
self.dispatcher = ErrorHandlerDispatcher
|
self.dispatcher = EventHandlerDispatcher
|
||||||
|
|
||||||
def receive = {
|
def receive = {
|
||||||
case event @ ErrorHandlerEvent(cause, instance, message, level) =>
|
case event @ Error(cause, instance, message) =>
|
||||||
val log = error.format(
|
println(error.format(
|
||||||
level.asString,
|
|
||||||
formattedTimestamp,
|
formattedTimestamp,
|
||||||
event.thread.getName,
|
event.thread.getName,
|
||||||
instance.getClass.getSimpleName,
|
instance.getClass.getSimpleName,
|
||||||
message,
|
message,
|
||||||
stackTraceFor(cause))
|
stackTraceFor(cause)))
|
||||||
println(log)
|
case event @ Warning(cause, instance, message) =>
|
||||||
|
println(warning.format(
|
||||||
|
formattedTimestamp,
|
||||||
|
event.thread.getName,
|
||||||
|
instance.getClass.getSimpleName,
|
||||||
|
message,
|
||||||
|
stackTraceFor(cause)))
|
||||||
|
case event @ Info(instance, message) =>
|
||||||
|
println(info.format(
|
||||||
|
formattedTimestamp,
|
||||||
|
event.thread.getName,
|
||||||
|
instance.getClass.getSimpleName,
|
||||||
|
message))
|
||||||
|
case event @ Debug(instance, message) =>
|
||||||
|
println(debug.format(
|
||||||
|
formattedTimestamp,
|
||||||
|
event.thread.getName,
|
||||||
|
instance.getClass.getSimpleName,
|
||||||
|
message))
|
||||||
case _ => {}
|
case _ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -799,7 +799,8 @@ class LocalActorRef private[akka] (
|
||||||
else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString)
|
else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString)
|
||||||
} else {
|
} else {
|
||||||
val future = if (senderFuture.isDefined) senderFuture else Some(new DefaultCompletableFuture[T](timeout))
|
val future = if (senderFuture.isDefined) senderFuture else Some(new DefaultCompletableFuture[T](timeout))
|
||||||
dispatcher dispatchMessage new MessageInvocation(this, message, senderOption, future.asInstanceOf[Some[CompletableFuture[Any]]])
|
dispatcher dispatchMessage new MessageInvocation(
|
||||||
|
this, message, senderOption, future.asInstanceOf[Some[CompletableFuture[Any]]])
|
||||||
future.get
|
future.get
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -808,8 +809,7 @@ class LocalActorRef private[akka] (
|
||||||
* Callback for the dispatcher. This is the single entry point to the user Actor implementation.
|
* Callback for the dispatcher. This is the single entry point to the user Actor implementation.
|
||||||
*/
|
*/
|
||||||
protected[akka] def invoke(messageHandle: MessageInvocation): Unit = guard.withGuard {
|
protected[akka] def invoke(messageHandle: MessageInvocation): Unit = guard.withGuard {
|
||||||
if (isShutdown) {}
|
if (!isShutdown) {
|
||||||
else {
|
|
||||||
currentMessage = messageHandle
|
currentMessage = messageHandle
|
||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
|
|
@ -817,14 +817,16 @@ class LocalActorRef private[akka] (
|
||||||
actor(messageHandle.message)
|
actor(messageHandle.message)
|
||||||
currentMessage = null // reset current message after successful invocation
|
currentMessage = null // reset current message after successful invocation
|
||||||
} catch {
|
} catch {
|
||||||
case e: InterruptedException => { currentMessage = null } // received message while actor is shutting down, ignore
|
case e: InterruptedException =>
|
||||||
case e => handleExceptionInDispatch(e, messageHandle.message)
|
currentMessage = null // received message while actor is shutting down, ignore
|
||||||
|
case e =>
|
||||||
|
handleExceptionInDispatch(e, messageHandle.message)
|
||||||
} finally {
|
} finally {
|
||||||
checkReceiveTimeout // Reschedule receive timeout
|
checkReceiveTimeout // Reschedule receive timeout
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Throwable =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this, messageHandle.message.toString)
|
EventHandler notifyListeners EventHandler.Error(e, this, messageHandle.message.toString)
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -839,7 +841,7 @@ class LocalActorRef private[akka] (
|
||||||
dead.restart(reason, maxRetries, within)
|
dead.restart(reason, maxRetries, within)
|
||||||
|
|
||||||
case _ =>
|
case _ =>
|
||||||
if(_supervisor.isDefined)
|
if (_supervisor.isDefined)
|
||||||
notifySupervisorWithMessage(Exit(this, reason))
|
notifySupervisorWithMessage(Exit(this, reason))
|
||||||
else
|
else
|
||||||
dead.stop
|
dead.stop
|
||||||
|
|
@ -986,7 +988,7 @@ class LocalActorRef private[akka] (
|
||||||
}
|
}
|
||||||
|
|
||||||
private def handleExceptionInDispatch(reason: Throwable, message: Any) = {
|
private def handleExceptionInDispatch(reason: Throwable, message: Any) = {
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(reason, this, message.toString)
|
EventHandler notifyListeners EventHandler.Error(reason, this, message.toString)
|
||||||
|
|
||||||
//Prevent any further messages to be processed until the actor has been restarted
|
//Prevent any further messages to be processed until the actor has been restarted
|
||||||
dispatcher.suspend(this)
|
dispatcher.suspend(this)
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ object Scheduler {
|
||||||
initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this, receiver + " @ " + message)
|
EventHandler notifyListeners EventHandler.Error(e, this, receiver + " @ " + message)
|
||||||
throw SchedulerException(message + " could not be scheduled on " + receiver, e)
|
throw SchedulerException(message + " could not be scheduled on " + receiver, e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -59,7 +59,7 @@ object Scheduler {
|
||||||
service.scheduleAtFixedRate(runnable, initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
service.scheduleAtFixedRate(runnable, initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
throw SchedulerException("Failed to schedule a Runnable", e)
|
throw SchedulerException("Failed to schedule a Runnable", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -74,7 +74,7 @@ object Scheduler {
|
||||||
delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this, receiver + " @ " + message)
|
EventHandler notifyListeners EventHandler.Error(e, this, receiver + " @ " + message)
|
||||||
throw SchedulerException( message + " could not be scheduleOnce'd on " + receiver, e)
|
throw SchedulerException( message + " could not be scheduleOnce'd on " + receiver, e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -95,7 +95,7 @@ object Scheduler {
|
||||||
service.schedule(runnable,delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
service.schedule(runnable,delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
throw SchedulerException("Failed to scheduleOnce a Runnable", e)
|
throw SchedulerException("Failed to scheduleOnce a Runnable", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
package akka.config
|
package akka.config
|
||||||
|
|
||||||
import akka.AkkaException
|
import akka.AkkaException
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
import net.lag.configgy.{Config => CConfig, Configgy, ParseException}
|
import net.lag.configgy.{Config => CConfig, Configgy, ParseException}
|
||||||
|
|
||||||
import java.net.InetSocketAddress
|
import java.net.InetSocketAddress
|
||||||
|
|
@ -63,7 +63,7 @@ object Config {
|
||||||
val e = new ConfigurationException(
|
val e = new ConfigurationException(
|
||||||
"Config could not be loaded from -Dakka.config=" + configFile +
|
"Config could not be loaded from -Dakka.config=" + configFile +
|
||||||
"\n\tdue to: " + cause.toString)
|
"\n\tdue to: " + cause.toString)
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
throw e
|
throw e
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -77,7 +77,7 @@ object Config {
|
||||||
val e = new ConfigurationException(
|
val e = new ConfigurationException(
|
||||||
"Can't load '" + confName + "' config file from application classpath," +
|
"Can't load '" + confName + "' config file from application classpath," +
|
||||||
"\n\tdue to: " + cause.toString)
|
"\n\tdue to: " + cause.toString)
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
Configgy.config
|
Configgy.config
|
||||||
|
|
@ -94,7 +94,7 @@ object Config {
|
||||||
"AKKA_HOME is defined as [" + HOME.get + "] " +
|
"AKKA_HOME is defined as [" + HOME.get + "] " +
|
||||||
"\n\tbut the 'akka.conf' config file can not be found at [" + HOME.get + "/config/"+ confName + "]," +
|
"\n\tbut the 'akka.conf' config file can not be found at [" + HOME.get + "/config/"+ confName + "]," +
|
||||||
"\n\tdue to: " + cause.toString)
|
"\n\tdue to: " + cause.toString)
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
Configgy.config
|
Configgy.config
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ package akka.dataflow
|
||||||
import java.util.concurrent.atomic.AtomicReference
|
import java.util.concurrent.atomic.AtomicReference
|
||||||
import java.util.concurrent.{ConcurrentLinkedQueue, LinkedBlockingQueue}
|
import java.util.concurrent.{ConcurrentLinkedQueue, LinkedBlockingQueue}
|
||||||
|
|
||||||
import akka.actor.{Actor, ActorRef, ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{Actor, ActorRef, EventHandler}
|
||||||
import akka.actor.Actor._
|
import akka.actor.Actor._
|
||||||
import akka.dispatch.CompletableFuture
|
import akka.dispatch.CompletableFuture
|
||||||
import akka.AkkaException
|
import akka.AkkaException
|
||||||
|
|
@ -148,7 +148,7 @@ object DataFlow {
|
||||||
(out !! Get).as[T]
|
(out !! Get).as[T]
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
out ! Exit
|
out ! Exit
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
package akka.dispatch
|
package akka.dispatch
|
||||||
|
|
||||||
import akka.actor.{ActorRef, IllegalActorStateException, ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{ActorRef, IllegalActorStateException, EventHandler}
|
||||||
import akka.util.{ReflectiveAccess, Switch}
|
import akka.util.{ReflectiveAccess, Switch}
|
||||||
|
|
||||||
import java.util.Queue
|
import java.util.Queue
|
||||||
|
|
@ -132,7 +132,7 @@ class ExecutorBasedEventDrivenDispatcher(
|
||||||
executorService.get() execute mbox
|
executorService.get() execute mbox
|
||||||
} catch {
|
} catch {
|
||||||
case e: RejectedExecutionException =>
|
case e: RejectedExecutionException =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this, _name)
|
EventHandler notifyListeners EventHandler.Warning(e, this, _name)
|
||||||
mbox.dispatcherLock.unlock()
|
mbox.dispatcherLock.unlock()
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ package akka.dispatch
|
||||||
|
|
||||||
import akka.AkkaException
|
import akka.AkkaException
|
||||||
import akka.actor.Actor.spawn
|
import akka.actor.Actor.spawn
|
||||||
import akka.actor.{Actor, ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{Actor, EventHandler}
|
||||||
import akka.routing.Dispatcher
|
import akka.routing.Dispatcher
|
||||||
import akka.japi.Procedure
|
import akka.japi.Procedure
|
||||||
|
|
||||||
|
|
@ -36,8 +36,8 @@ object Futures {
|
||||||
try {
|
try {
|
||||||
f completeWithResult body
|
f completeWithResult body
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
f completeWithException e
|
f completeWithException e
|
||||||
}
|
}
|
||||||
})(dispatcher)
|
})(dispatcher)
|
||||||
|
|
@ -103,7 +103,7 @@ object Futures {
|
||||||
result completeWithResult r
|
result completeWithResult r
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
result completeWithException e
|
result completeWithException e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -262,8 +262,8 @@ sealed trait Future[T] {
|
||||||
fa complete (try {
|
fa complete (try {
|
||||||
Right(f(v.right.get))
|
Right(f(v.right.get))
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
Left(e)
|
Left(e)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -290,8 +290,8 @@ sealed trait Future[T] {
|
||||||
try {
|
try {
|
||||||
f(v.right.get) onComplete (fa.completeWith(_))
|
f(v.right.get) onComplete (fa.completeWith(_))
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
fa completeWithException e
|
fa completeWithException e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -320,8 +320,8 @@ sealed trait Future[T] {
|
||||||
if (p(r)) Right(r)
|
if (p(r)) Right(r)
|
||||||
else Left(new MatchError(r))
|
else Left(new MatchError(r))
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
Left(e)
|
Left(e)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import atomic.{AtomicLong, AtomicInteger}
|
||||||
import ThreadPoolExecutor.CallerRunsPolicy
|
import ThreadPoolExecutor.CallerRunsPolicy
|
||||||
|
|
||||||
import akka.util.Duration
|
import akka.util.Duration
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
|
|
||||||
object ThreadPoolConfig {
|
object ThreadPoolConfig {
|
||||||
type Bounds = Int
|
type Bounds = Int
|
||||||
|
|
@ -208,10 +208,10 @@ class BoundedExecutorDecorator(val executor: ExecutorService, bound: Int) extend
|
||||||
})
|
})
|
||||||
} catch {
|
} catch {
|
||||||
case e: RejectedExecutionException =>
|
case e: RejectedExecutionException =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Warning(e, this)
|
||||||
semaphore.release
|
semaphore.release
|
||||||
case e =>
|
case e: Throwable =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
package akka.routing
|
package akka.routing
|
||||||
|
|
||||||
import akka.actor.{Actor, ActorRef, ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{Actor, ActorRef, EventHandler}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Actor pooling
|
* Actor pooling
|
||||||
|
|
@ -84,7 +84,7 @@ trait DefaultActorPool extends ActorPool
|
||||||
future completeWithResult (delegate !! msg).getOrElse(None)
|
future completeWithResult (delegate !! msg).getOrElse(None)
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
future completeWithException e
|
future completeWithException e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ package akka.util
|
||||||
|
|
||||||
import java.util.concurrent.locks.{ReentrantReadWriteLock, ReentrantLock}
|
import java.util.concurrent.locks.{ReentrantReadWriteLock, ReentrantLock}
|
||||||
import java.util.concurrent.atomic. {AtomicBoolean}
|
import java.util.concurrent.atomic. {AtomicBoolean}
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||||
|
|
@ -125,8 +125,8 @@ class Switch(startAsOn: Boolean = false) {
|
||||||
try {
|
try {
|
||||||
action
|
action
|
||||||
} catch {
|
} catch {
|
||||||
case t =>
|
case t: Throwable =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(t, this)
|
EventHandler notifyListeners EventHandler.Error(t, this)
|
||||||
switch.compareAndSet(!from, from) //Revert status
|
switch.compareAndSet(!from, from) //Revert status
|
||||||
throw t
|
throw t
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -124,8 +124,7 @@ object ReflectiveAccess {
|
||||||
ctor.setAccessible(true)
|
ctor.setAccessible(true)
|
||||||
Some(ctor.newInstance(args: _*).asInstanceOf[T])
|
Some(ctor.newInstance(args: _*).asInstanceOf[T])
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
//ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,8 +140,7 @@ object ReflectiveAccess {
|
||||||
ctor.setAccessible(true)
|
ctor.setAccessible(true)
|
||||||
Some(ctor.newInstance(args: _*).asInstanceOf[T])
|
Some(ctor.newInstance(args: _*).asInstanceOf[T])
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
//ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -154,11 +152,9 @@ object ReflectiveAccess {
|
||||||
Option(instance.get(null).asInstanceOf[T])
|
Option(instance.get(null).asInstanceOf[T])
|
||||||
} catch {
|
} catch {
|
||||||
case e: ClassNotFoundException => {
|
case e: ClassNotFoundException => {
|
||||||
//ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
case ei: ExceptionInInitializerError => {
|
case ei: ExceptionInInitializerError => {
|
||||||
//ErrorHandler notifyListeners ErrorHandlerEvent(ei, this)
|
|
||||||
throw ei
|
throw ei
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -167,8 +163,7 @@ object ReflectiveAccess {
|
||||||
assert(fqn ne null)
|
assert(fqn ne null)
|
||||||
Some(classloader.loadClass(fqn).asInstanceOf[Class[T]])
|
Some(classloader.loadClass(fqn).asInstanceOf[Class[T]])
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
//ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
package akka.http
|
package akka.http
|
||||||
|
|
||||||
import akka.actor.{ActorRegistry, ActorRef, Actor}
|
import akka.actor.{ActorRegistry, ActorRef, Actor}
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
|
|
||||||
import javax.servlet.http.{HttpServletResponse, HttpServletRequest}
|
import javax.servlet.http.{HttpServletResponse, HttpServletRequest}
|
||||||
import javax.servlet.http.HttpServlet
|
import javax.servlet.http.HttpServlet
|
||||||
|
|
@ -388,8 +388,8 @@ trait RequestMethod {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
case io =>
|
case io: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(io, this)
|
EventHandler notifyListeners EventHandler.Error(io, this)
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -408,7 +408,7 @@ trait RequestMethod {
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
case io: IOException =>
|
case io: IOException =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(io, this)
|
EventHandler notifyListeners EventHandler.Error(io, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ package akka.http
|
||||||
import javax.servlet. {AsyncContext, AsyncListener, AsyncEvent};
|
import javax.servlet. {AsyncContext, AsyncListener, AsyncEvent};
|
||||||
import Types._
|
import Types._
|
||||||
|
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Garrick Evans
|
* @author Garrick Evans
|
||||||
|
|
@ -36,7 +36,7 @@ trait Servlet30Context extends AsyncListener {
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
case ex: IllegalStateException =>
|
case ex: IllegalStateException =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(ex, this)
|
EventHandler notifyListeners EventHandler.Error(ex, this)
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
package akka.security
|
package akka.security
|
||||||
|
|
||||||
import akka.actor.{Scheduler, Actor, ActorRef, ActorRegistry, IllegalActorStateException}
|
import akka.actor.{Scheduler, Actor, ActorRef, ActorRegistry, IllegalActorStateException}
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
import akka.actor.Actor._
|
import akka.actor.Actor._
|
||||||
import akka.config.Config
|
import akka.config.Config
|
||||||
|
|
||||||
|
|
@ -369,8 +369,8 @@ trait SpnegoAuthenticationActor extends AuthenticationActor[SpnegoCredentials] {
|
||||||
Some(UserInfo(user, null, rolesFor(user)))
|
Some(UserInfo(user, null, rolesFor(user)))
|
||||||
} catch {
|
} catch {
|
||||||
case e: PrivilegedActionException => {
|
case e: PrivilegedActionException => {
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
return None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import akka.remoteinterface._
|
||||||
import akka.actor. {Index, ActorInitializationException, LocalActorRef, newUuid, ActorRegistry, Actor, RemoteActorRef, TypedActor, ActorRef, IllegalActorStateException, RemoteActorSystemMessage, uuidFrom, Uuid, Exit, LifeCycleMessage, ActorType => AkkaActorType}
|
import akka.actor. {Index, ActorInitializationException, LocalActorRef, newUuid, ActorRegistry, Actor, RemoteActorRef, TypedActor, ActorRef, IllegalActorStateException, RemoteActorSystemMessage, uuidFrom, Uuid, Exit, LifeCycleMessage, ActorType => AkkaActorType}
|
||||||
import akka.AkkaException
|
import akka.AkkaException
|
||||||
import akka.actor.Actor._
|
import akka.actor.Actor._
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
import akka.util._
|
import akka.util._
|
||||||
import akka.remote.{MessageSerializer, RemoteClientSettings, RemoteServerSettings}
|
import akka.remote.{MessageSerializer, RemoteClientSettings, RemoteServerSettings}
|
||||||
|
|
||||||
|
|
@ -428,8 +428,8 @@ class ActiveRemoteClientHandler(
|
||||||
throw new RemoteClientException("Unknown message received in remote client handler: " + other, client.module, client.remoteAddress)
|
throw new RemoteClientException("Unknown message received in remote client handler: " + other, client.module, client.remoteAddress)
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception =>
|
case e: Throwable =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
client.notifyListeners(RemoteClientError(e, client.module, client.remoteAddress))
|
client.notifyListeners(RemoteClientError(e, client.module, client.remoteAddress))
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
|
|
@ -485,8 +485,8 @@ class ActiveRemoteClientHandler(
|
||||||
.getConstructor(Array[Class[_]](classOf[String]): _*)
|
.getConstructor(Array[Class[_]](classOf[String]): _*)
|
||||||
.newInstance(exception.getMessage).asInstanceOf[Throwable]
|
.newInstance(exception.getMessage).asInstanceOf[Throwable]
|
||||||
} catch {
|
} catch {
|
||||||
case problem =>
|
case problem: Throwable =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(problem, this)
|
EventHandler notifyListeners EventHandler.Error(problem, this)
|
||||||
UnparsableException(classname, exception.getMessage)
|
UnparsableException(classname, exception.getMessage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -557,8 +557,8 @@ class NettyRemoteServer(serverModule: NettyRemoteServerModule, val host: String,
|
||||||
bootstrap.releaseExternalResources
|
bootstrap.releaseExternalResources
|
||||||
serverModule.notifyListeners(RemoteServerShutdown(serverModule))
|
serverModule.notifyListeners(RemoteServerShutdown(serverModule))
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -589,8 +589,8 @@ trait NettyRemoteServerModule extends RemoteServerModule { self: RemoteModule =>
|
||||||
currentServer.set(Some(new NettyRemoteServer(this, _hostname, _port, loader)))
|
currentServer.set(Some(new NettyRemoteServer(this, _hostname, _port, loader)))
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
notifyListeners(RemoteServerError(e, this))
|
notifyListeners(RemoteServerError(e, this))
|
||||||
}
|
}
|
||||||
this
|
this
|
||||||
|
|
@ -903,7 +903,7 @@ class RemoteServerHandler(
|
||||||
val actorRef =
|
val actorRef =
|
||||||
try { createActor(actorInfo, channel).start } catch {
|
try { createActor(actorInfo, channel).start } catch {
|
||||||
case e: SecurityException =>
|
case e: SecurityException =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
write(channel, createErrorReplyMessage(e, request, AkkaActorType.ScalaActor))
|
write(channel, createErrorReplyMessage(e, request, AkkaActorType.ScalaActor))
|
||||||
server.notifyListeners(RemoteServerError(e, server))
|
server.notifyListeners(RemoteServerError(e, server))
|
||||||
return
|
return
|
||||||
|
|
@ -990,8 +990,8 @@ class RemoteServerHandler(
|
||||||
|
|
||||||
write(channel, messageBuilder.build)
|
write(channel, messageBuilder.build)
|
||||||
} catch {
|
} catch {
|
||||||
case e: Throwable =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
server.notifyListeners(RemoteServerError(e, server))
|
server.notifyListeners(RemoteServerError(e, server))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1007,11 +1007,11 @@ class RemoteServerHandler(
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
case e: InvocationTargetException =>
|
case e: InvocationTargetException =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
write(channel, createErrorReplyMessage(e.getCause, request, AkkaActorType.TypedActor))
|
write(channel, createErrorReplyMessage(e.getCause, request, AkkaActorType.TypedActor))
|
||||||
server.notifyListeners(RemoteServerError(e, server))
|
server.notifyListeners(RemoteServerError(e, server))
|
||||||
case e: Throwable =>
|
case e: Exception =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
write(channel, createErrorReplyMessage(e, request, AkkaActorType.TypedActor))
|
write(channel, createErrorReplyMessage(e, request, AkkaActorType.TypedActor))
|
||||||
server.notifyListeners(RemoteServerError(e, server))
|
server.notifyListeners(RemoteServerError(e, server))
|
||||||
}
|
}
|
||||||
|
|
@ -1070,8 +1070,8 @@ class RemoteServerHandler(
|
||||||
server.actorsByUuid.put(actorRef.uuid.toString, actorRef) // register by uuid
|
server.actorsByUuid.put(actorRef.uuid.toString, actorRef) // register by uuid
|
||||||
actorRef
|
actorRef
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Throwable =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
server.notifyListeners(RemoteServerError(e, server))
|
server.notifyListeners(RemoteServerError(e, server))
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
|
|
@ -1137,8 +1137,8 @@ class RemoteServerHandler(
|
||||||
server.typedActors.put(parseUuid(uuid).toString, newInstance) // register by uuid
|
server.typedActors.put(parseUuid(uuid).toString, newInstance) // register by uuid
|
||||||
newInstance
|
newInstance
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e: Throwable =>
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
EventHandler notifyListeners EventHandler.Error(e, this)
|
||||||
server.notifyListeners(RemoteServerError(e, server))
|
server.notifyListeners(RemoteServerError(e, server))
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ package akka.transactor
|
||||||
|
|
||||||
import akka.config.Config
|
import akka.config.Config
|
||||||
import akka.stm.{Atomic, DefaultTransactionConfig, TransactionFactory}
|
import akka.stm.{Atomic, DefaultTransactionConfig, TransactionFactory}
|
||||||
import akka.actor.{ErrorHandler, ErrorHandlerEvent}
|
import akka.actor.{EventHandler}
|
||||||
|
|
||||||
import org.multiverse.api.{Transaction => MultiverseTransaction}
|
import org.multiverse.api.{Transaction => MultiverseTransaction}
|
||||||
import org.multiverse.commitbarriers.CountDownCommitBarrier
|
import org.multiverse.commitbarriers.CountDownCommitBarrier
|
||||||
|
|
@ -133,13 +133,7 @@ class Coordinated(val message: Any, barrier: CountDownCommitBarrier) {
|
||||||
factory.addHooks
|
factory.addHooks
|
||||||
val result = body
|
val result = body
|
||||||
val timeout = factory.config.timeout
|
val timeout = factory.config.timeout
|
||||||
try {
|
barrier.tryJoinCommit(mtx, timeout.length, timeout.unit)
|
||||||
barrier.tryJoinCommit(mtx, timeout.length, timeout.unit)
|
|
||||||
} catch {
|
|
||||||
// Need to catch IllegalStateException until we have fix in Multiverse, since it throws it by mistake
|
|
||||||
case e: IllegalStateException =>
|
|
||||||
ErrorHandler notifyListeners ErrorHandlerEvent(e, this)
|
|
||||||
}
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue