diff --git a/akka-actor/src/main/scala/akka/actor/Actor.scala b/akka-actor/src/main/scala/akka/actor/Actor.scala index 0a07b2b25d..f197da88cb 100644 --- a/akka-actor/src/main/scala/akka/actor/Actor.scala +++ b/akka-actor/src/main/scala/akka/actor/Actor.scala @@ -1,4 +1,14 @@ /** + + + + + + + + + + * Copyright (C) 2009-2011 Scalable Solutions AB */ @@ -73,63 +83,54 @@ class ActorKilledException private[akka](message: String) extends AkkaEx class ActorInitializationException 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. * * Create, add and remove a listener: *
  * val errorHandlerEventListener = new Actor {
- *   self.dispatcher = ErrorHandler.ErrorHandlerDispatcher
+ *   self.dispatcher = EventHandler.EventHandlerDispatcher
  *     
  *   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)
  * 
* * Log an error event: *
- * ErrorHandler notifyListeners ErrorHandlerEvent(reason, this, message.toString)
+ * EventHandler notifyListeners EventHandler.Error(exception, this, message.toString)
  * 
* @author Jonas Bonér */ -object ErrorHandler extends ListenerManagement { +object EventHandler extends ListenerManagement { import java.io.{StringWriter, PrintWriter} import java.text.DateFormat import java.util.Date import akka.dispatch.Dispatchers - val error = "[error:%s] [%s] [%s] [%s] %s\n%s".intern - val ID = "default:error:handler" - val ErrorHandlerDispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher(ID).build + sealed trait Event { + val thread: Thread = Thread.currentThread + } + 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) @@ -142,18 +143,35 @@ object ErrorHandler extends ListenerManagement { class DefaultListener extends Actor { self.id = ID - self.dispatcher = ErrorHandlerDispatcher + self.dispatcher = EventHandlerDispatcher def receive = { - case event @ ErrorHandlerEvent(cause, instance, message, level) => - val log = error.format( - level.asString, + case event @ Error(cause, instance, message) => + println(error.format( formattedTimestamp, event.thread.getName, instance.getClass.getSimpleName, message, - stackTraceFor(cause)) - println(log) + stackTraceFor(cause))) + 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 _ => {} } } diff --git a/akka-actor/src/main/scala/akka/actor/ActorRef.scala b/akka-actor/src/main/scala/akka/actor/ActorRef.scala index b44d7d6006..9b28d5f5a5 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRef.scala @@ -799,7 +799,8 @@ class LocalActorRef private[akka] ( else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString) } else { 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 } } @@ -808,8 +809,7 @@ class LocalActorRef private[akka] ( * Callback for the dispatcher. This is the single entry point to the user Actor implementation. */ protected[akka] def invoke(messageHandle: MessageInvocation): Unit = guard.withGuard { - if (isShutdown) {} - else { + if (!isShutdown) { currentMessage = messageHandle try { try { @@ -817,14 +817,16 @@ class LocalActorRef private[akka] ( actor(messageHandle.message) currentMessage = null // reset current message after successful invocation } catch { - case e: InterruptedException => { currentMessage = null } // received message while actor is shutting down, ignore - case e => handleExceptionInDispatch(e, messageHandle.message) + case e: InterruptedException => + currentMessage = null // received message while actor is shutting down, ignore + case e => + handleExceptionInDispatch(e, messageHandle.message) } finally { checkReceiveTimeout // Reschedule receive timeout } } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this, messageHandle.message.toString) + case e: Throwable => + EventHandler notifyListeners EventHandler.Error(e, this, messageHandle.message.toString) throw e } } @@ -839,7 +841,7 @@ class LocalActorRef private[akka] ( dead.restart(reason, maxRetries, within) case _ => - if(_supervisor.isDefined) + if (_supervisor.isDefined) notifySupervisorWithMessage(Exit(this, reason)) else dead.stop @@ -986,7 +988,7 @@ class LocalActorRef private[akka] ( } 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 dispatcher.suspend(this) diff --git a/akka-actor/src/main/scala/akka/actor/Scheduler.scala b/akka-actor/src/main/scala/akka/actor/Scheduler.scala index 5fdf39cb09..5fab4f8046 100644 --- a/akka-actor/src/main/scala/akka/actor/Scheduler.scala +++ b/akka-actor/src/main/scala/akka/actor/Scheduler.scala @@ -38,7 +38,7 @@ object Scheduler { initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]] } catch { 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) } } @@ -59,7 +59,7 @@ object Scheduler { service.scheduleAtFixedRate(runnable, initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]] } catch { case e: Exception => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) throw SchedulerException("Failed to schedule a Runnable", e) } } @@ -74,7 +74,7 @@ object Scheduler { delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]] } catch { 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) } } @@ -95,7 +95,7 @@ object Scheduler { service.schedule(runnable,delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]] } catch { case e: Exception => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) throw SchedulerException("Failed to scheduleOnce a Runnable", e) } } diff --git a/akka-actor/src/main/scala/akka/config/Config.scala b/akka-actor/src/main/scala/akka/config/Config.scala index acb1f2a569..1be08b14ae 100644 --- a/akka-actor/src/main/scala/akka/config/Config.scala +++ b/akka-actor/src/main/scala/akka/config/Config.scala @@ -5,7 +5,7 @@ package akka.config import akka.AkkaException -import akka.actor.{ErrorHandler, ErrorHandlerEvent} +import akka.actor.{EventHandler} import net.lag.configgy.{Config => CConfig, Configgy, ParseException} import java.net.InetSocketAddress @@ -63,7 +63,7 @@ object Config { val e = new ConfigurationException( "Config could not be loaded from -Dakka.config=" + configFile + "\n\tdue to: " + cause.toString) - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) throw e } @@ -77,7 +77,7 @@ object Config { val e = new ConfigurationException( "Can't load '" + confName + "' config file from application classpath," + "\n\tdue to: " + cause.toString) - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) throw e } Configgy.config @@ -94,7 +94,7 @@ object Config { "AKKA_HOME is defined as [" + HOME.get + "] " + "\n\tbut the 'akka.conf' config file can not be found at [" + HOME.get + "/config/"+ confName + "]," + "\n\tdue to: " + cause.toString) - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) throw e } Configgy.config diff --git a/akka-actor/src/main/scala/akka/dataflow/DataFlow.scala b/akka-actor/src/main/scala/akka/dataflow/DataFlow.scala index 1132e8f8d9..7e1cb6f99d 100644 --- a/akka-actor/src/main/scala/akka/dataflow/DataFlow.scala +++ b/akka-actor/src/main/scala/akka/dataflow/DataFlow.scala @@ -7,7 +7,7 @@ package akka.dataflow import java.util.concurrent.atomic.AtomicReference 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.dispatch.CompletableFuture import akka.AkkaException @@ -148,7 +148,7 @@ object DataFlow { (out !! Get).as[T] } catch { case e: Exception => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) out ! Exit throw e } diff --git a/akka-actor/src/main/scala/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/akka-actor/src/main/scala/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala index 0565d857f5..d4aa99c4df 100644 --- a/akka-actor/src/main/scala/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala +++ b/akka-actor/src/main/scala/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala @@ -4,7 +4,7 @@ package akka.dispatch -import akka.actor.{ActorRef, IllegalActorStateException, ErrorHandler, ErrorHandlerEvent} +import akka.actor.{ActorRef, IllegalActorStateException, EventHandler} import akka.util.{ReflectiveAccess, Switch} import java.util.Queue @@ -132,7 +132,7 @@ class ExecutorBasedEventDrivenDispatcher( executorService.get() execute mbox } catch { case e: RejectedExecutionException => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this, _name) + EventHandler notifyListeners EventHandler.Warning(e, this, _name) mbox.dispatcherLock.unlock() throw e } diff --git a/akka-actor/src/main/scala/akka/dispatch/Future.scala b/akka-actor/src/main/scala/akka/dispatch/Future.scala index 35052025fa..b76e73132d 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Future.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Future.scala @@ -6,7 +6,7 @@ package akka.dispatch import akka.AkkaException import akka.actor.Actor.spawn -import akka.actor.{Actor, ErrorHandler, ErrorHandlerEvent} +import akka.actor.{Actor, EventHandler} import akka.routing.Dispatcher import akka.japi.Procedure @@ -36,8 +36,8 @@ object Futures { try { f completeWithResult body } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + EventHandler notifyListeners EventHandler.Error(e, this) f completeWithException e } })(dispatcher) @@ -103,7 +103,7 @@ object Futures { result completeWithResult r } catch { case e: Exception => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) result completeWithException e } } @@ -262,8 +262,8 @@ sealed trait Future[T] { fa complete (try { Right(f(v.right.get)) } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + EventHandler notifyListeners EventHandler.Error(e, this) Left(e) }) } @@ -290,8 +290,8 @@ sealed trait Future[T] { try { f(v.right.get) onComplete (fa.completeWith(_)) } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + EventHandler notifyListeners EventHandler.Error(e, this) fa completeWithException e } } @@ -320,8 +320,8 @@ sealed trait Future[T] { if (p(r)) Right(r) else Left(new MatchError(r)) } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + EventHandler notifyListeners EventHandler.Error(e, this) Left(e) }) } diff --git a/akka-actor/src/main/scala/akka/dispatch/ThreadPoolBuilder.scala b/akka-actor/src/main/scala/akka/dispatch/ThreadPoolBuilder.scala index 6d8743841a..9efd64b576 100644 --- a/akka-actor/src/main/scala/akka/dispatch/ThreadPoolBuilder.scala +++ b/akka-actor/src/main/scala/akka/dispatch/ThreadPoolBuilder.scala @@ -10,7 +10,7 @@ import atomic.{AtomicLong, AtomicInteger} import ThreadPoolExecutor.CallerRunsPolicy import akka.util.Duration -import akka.actor.{ErrorHandler, ErrorHandlerEvent} +import akka.actor.{EventHandler} object ThreadPoolConfig { type Bounds = Int @@ -208,10 +208,10 @@ class BoundedExecutorDecorator(val executor: ExecutorService, bound: Int) extend }) } catch { case e: RejectedExecutionException => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Warning(e, this) semaphore.release - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Throwable => + EventHandler notifyListeners EventHandler.Error(e, this) throw e } } diff --git a/akka-actor/src/main/scala/akka/routing/Pool.scala b/akka-actor/src/main/scala/akka/routing/Pool.scala index e5e309b8bb..d8437590d1 100644 --- a/akka-actor/src/main/scala/akka/routing/Pool.scala +++ b/akka-actor/src/main/scala/akka/routing/Pool.scala @@ -4,7 +4,7 @@ package akka.routing -import akka.actor.{Actor, ActorRef, ErrorHandler, ErrorHandlerEvent} +import akka.actor.{Actor, ActorRef, EventHandler} /** * Actor pooling @@ -84,7 +84,7 @@ trait DefaultActorPool extends ActorPool future completeWithResult (delegate !! msg).getOrElse(None) } catch { case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) future completeWithException e } } diff --git a/akka-actor/src/main/scala/akka/util/LockUtil.scala b/akka-actor/src/main/scala/akka/util/LockUtil.scala index da2d6ad115..df4be3e4b1 100644 --- a/akka-actor/src/main/scala/akka/util/LockUtil.scala +++ b/akka-actor/src/main/scala/akka/util/LockUtil.scala @@ -6,7 +6,7 @@ package akka.util import java.util.concurrent.locks.{ReentrantReadWriteLock, ReentrantLock} import java.util.concurrent.atomic. {AtomicBoolean} -import akka.actor.{ErrorHandler, ErrorHandlerEvent} +import akka.actor.{EventHandler} /** * @author Jonas Bonér @@ -125,8 +125,8 @@ class Switch(startAsOn: Boolean = false) { try { action } catch { - case t => - ErrorHandler notifyListeners ErrorHandlerEvent(t, this) + case t: Throwable => + EventHandler notifyListeners EventHandler.Error(t, this) switch.compareAndSet(!from, from) //Revert status throw t } diff --git a/akka-actor/src/main/scala/akka/util/ReflectiveAccess.scala b/akka-actor/src/main/scala/akka/util/ReflectiveAccess.scala index f365d54b97..aab68f2086 100644 --- a/akka-actor/src/main/scala/akka/util/ReflectiveAccess.scala +++ b/akka-actor/src/main/scala/akka/util/ReflectiveAccess.scala @@ -124,8 +124,7 @@ object ReflectiveAccess { ctor.setAccessible(true) Some(ctor.newInstance(args: _*).asInstanceOf[T]) } catch { - case e => - //ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => None } @@ -141,8 +140,7 @@ object ReflectiveAccess { ctor.setAccessible(true) Some(ctor.newInstance(args: _*).asInstanceOf[T]) } catch { - case e => - //ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => None } @@ -154,11 +152,9 @@ object ReflectiveAccess { Option(instance.get(null).asInstanceOf[T]) } catch { case e: ClassNotFoundException => { - //ErrorHandler notifyListeners ErrorHandlerEvent(e, this) None } case ei: ExceptionInInitializerError => { - //ErrorHandler notifyListeners ErrorHandlerEvent(ei, this) throw ei } } @@ -167,8 +163,7 @@ object ReflectiveAccess { assert(fqn ne null) Some(classloader.loadClass(fqn).asInstanceOf[Class[T]]) } catch { - case e => - //ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => None } } diff --git a/akka-http/src/main/scala/akka/http/Mist.scala b/akka-http/src/main/scala/akka/http/Mist.scala index 70063b2acd..53a6d8f6d0 100644 --- a/akka-http/src/main/scala/akka/http/Mist.scala +++ b/akka-http/src/main/scala/akka/http/Mist.scala @@ -5,7 +5,7 @@ package akka.http 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.HttpServlet @@ -388,8 +388,8 @@ trait RequestMethod { true } } catch { - case io => - ErrorHandler notifyListeners ErrorHandlerEvent(io, this) + case io: Exception => + EventHandler notifyListeners EventHandler.Error(io, this) false } } @@ -408,7 +408,7 @@ trait RequestMethod { } } catch { case io: IOException => - ErrorHandler notifyListeners ErrorHandlerEvent(io, this) + EventHandler notifyListeners EventHandler.Error(io, this) } } diff --git a/akka-http/src/main/scala/akka/http/Servlet30Context.scala b/akka-http/src/main/scala/akka/http/Servlet30Context.scala index ac057a5756..1caeeb83ef 100644 --- a/akka-http/src/main/scala/akka/http/Servlet30Context.scala +++ b/akka-http/src/main/scala/akka/http/Servlet30Context.scala @@ -7,7 +7,7 @@ package akka.http import javax.servlet. {AsyncContext, AsyncListener, AsyncEvent}; import Types._ -import akka.actor.{ErrorHandler, ErrorHandlerEvent} +import akka.actor.{EventHandler} /** * @author Garrick Evans @@ -36,7 +36,7 @@ trait Servlet30Context extends AsyncListener { } catch { case ex: IllegalStateException => - ErrorHandler notifyListeners ErrorHandlerEvent(ex, this) + EventHandler notifyListeners EventHandler.Error(ex, this) false } } diff --git a/akka-http/src/main/scala/akka/security/Security.scala b/akka-http/src/main/scala/akka/security/Security.scala index 8a31a05f4e..6105c5265e 100644 --- a/akka-http/src/main/scala/akka/security/Security.scala +++ b/akka-http/src/main/scala/akka/security/Security.scala @@ -23,7 +23,7 @@ package akka.security import akka.actor.{Scheduler, Actor, ActorRef, ActorRegistry, IllegalActorStateException} -import akka.actor.{ErrorHandler, ErrorHandlerEvent} +import akka.actor.{EventHandler} import akka.actor.Actor._ import akka.config.Config @@ -369,8 +369,8 @@ trait SpnegoAuthenticationActor extends AuthenticationActor[SpnegoCredentials] { Some(UserInfo(user, null, rolesFor(user))) } catch { case e: PrivilegedActionException => { - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) - return None + EventHandler notifyListeners EventHandler.Error(e, this) + None } } } diff --git a/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala b/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala index 66e37906d3..0aa8ce22db 100644 --- a/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala +++ b/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala @@ -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.AkkaException import akka.actor.Actor._ -import akka.actor.{ErrorHandler, ErrorHandlerEvent} +import akka.actor.{EventHandler} import akka.util._ 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) } } catch { - case e: Exception => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Throwable => + EventHandler notifyListeners EventHandler.Error(e, this) client.notifyListeners(RemoteClientError(e, client.module, client.remoteAddress)) throw e } @@ -485,8 +485,8 @@ class ActiveRemoteClientHandler( .getConstructor(Array[Class[_]](classOf[String]): _*) .newInstance(exception.getMessage).asInstanceOf[Throwable] } catch { - case problem => - ErrorHandler notifyListeners ErrorHandlerEvent(problem, this) + case problem: Throwable => + EventHandler notifyListeners EventHandler.Error(problem, this) UnparsableException(classname, exception.getMessage) } } @@ -557,8 +557,8 @@ class NettyRemoteServer(serverModule: NettyRemoteServerModule, val host: String, bootstrap.releaseExternalResources serverModule.notifyListeners(RemoteServerShutdown(serverModule)) } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + 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))) } } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + EventHandler notifyListeners EventHandler.Error(e, this) notifyListeners(RemoteServerError(e, this)) } this @@ -903,7 +903,7 @@ class RemoteServerHandler( val actorRef = try { createActor(actorInfo, channel).start } catch { case e: SecurityException => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) write(channel, createErrorReplyMessage(e, request, AkkaActorType.ScalaActor)) server.notifyListeners(RemoteServerError(e, server)) return @@ -990,8 +990,8 @@ class RemoteServerHandler( write(channel, messageBuilder.build) } catch { - case e: Throwable => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + EventHandler notifyListeners EventHandler.Error(e, this) server.notifyListeners(RemoteServerError(e, server)) } @@ -1007,11 +1007,11 @@ class RemoteServerHandler( } } catch { case e: InvocationTargetException => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + EventHandler notifyListeners EventHandler.Error(e, this) write(channel, createErrorReplyMessage(e.getCause, request, AkkaActorType.TypedActor)) server.notifyListeners(RemoteServerError(e, server)) - case e: Throwable => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Exception => + EventHandler notifyListeners EventHandler.Error(e, this) write(channel, createErrorReplyMessage(e, request, AkkaActorType.TypedActor)) server.notifyListeners(RemoteServerError(e, server)) } @@ -1070,8 +1070,8 @@ class RemoteServerHandler( server.actorsByUuid.put(actorRef.uuid.toString, actorRef) // register by uuid actorRef } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Throwable => + EventHandler notifyListeners EventHandler.Error(e, this) server.notifyListeners(RemoteServerError(e, server)) throw e } @@ -1137,8 +1137,8 @@ class RemoteServerHandler( server.typedActors.put(parseUuid(uuid).toString, newInstance) // register by uuid newInstance } catch { - case e => - ErrorHandler notifyListeners ErrorHandlerEvent(e, this) + case e: Throwable => + EventHandler notifyListeners EventHandler.Error(e, this) server.notifyListeners(RemoteServerError(e, server)) throw e } diff --git a/akka-stm/src/main/scala/akka/transactor/Coordinated.scala b/akka-stm/src/main/scala/akka/transactor/Coordinated.scala index e1362e4db5..028f615216 100644 --- a/akka-stm/src/main/scala/akka/transactor/Coordinated.scala +++ b/akka-stm/src/main/scala/akka/transactor/Coordinated.scala @@ -6,7 +6,7 @@ package akka.transactor import akka.config.Config import akka.stm.{Atomic, DefaultTransactionConfig, TransactionFactory} -import akka.actor.{ErrorHandler, ErrorHandlerEvent} +import akka.actor.{EventHandler} import org.multiverse.api.{Transaction => MultiverseTransaction} import org.multiverse.commitbarriers.CountDownCommitBarrier @@ -133,13 +133,7 @@ class Coordinated(val message: Any, barrier: CountDownCommitBarrier) { factory.addHooks val result = body val timeout = factory.config.timeout - try { - 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) - } + barrier.tryJoinCommit(mtx, timeout.length, timeout.unit) result } })