HandlerResultPanic acquires a reason
authorChristos KK Loverdos <loverdos@gmail.com>
Fri, 1 Jun 2012 09:18:47 +0000 (12:18 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Fri, 1 Jun 2012 09:18:47 +0000 (12:18 +0300)
src/main/scala/gr/grnet/aquarium/connector/handler/HandlerResultPanic.scala
src/main/scala/gr/grnet/aquarium/connector/rabbitmq/RabbitMQConsumer.scala
src/main/scala/gr/grnet/aquarium/connector/rabbitmq/service/PayloadHandlerPostNotifier.scala

index 3aaa999..bd9330d 100644 (file)
@@ -46,4 +46,4 @@ package gr.grnet.aquarium.connector.handler
  * @author Christos KK Loverdos <loverdos@gmail.com>
  */
 
-case object HandlerResultPanic extends HandlerResult
+case class HandlerResultPanic(reason: String) extends HandlerResult
index dafa4c5..76eb837 100644 (file)
@@ -293,14 +293,15 @@ class RabbitMQConsumer(val conf: RabbitMQConsumerConf,
     try f(_channel)
     catch {
       case e: Exception ⇒
+        logger.error("While using channel %s".format(this._channel), e)
         // FIXME: What is this?
         postBusError(RabbitMQError(e))
 
-        safeStop()
+//        safeStop()
     }
   }
 
-  object RabbitMQMessageConsumer extends Consumer {
+  object RabbitMQMessageConsumer extends Consumer with Loggable {
     def handleConsumeOk(consumerTag: String) = {
     }
 
@@ -339,20 +340,24 @@ class RabbitMQConsumer(val conf: RabbitMQConsumerConf,
 
           case result @ HandlerResultResend ⇒
             doWithChannel(_.basicNack(deliveryTag, false, true))
+            logger.debug("Got {}", result)
             result
 
-          case result @ HandlerResultReject(_) ⇒
+          case result @ HandlerResultReject(reason) ⇒
             doWithChannel(_.basicReject(deliveryTag, false))
+            logger.info("Got {}", result)
             result
 
-          case result @ HandlerResultRequeue(_) ⇒
+          case result @ HandlerResultRequeue(reason) ⇒
             doWithChannel(_.basicReject(deliveryTag, true))
+            logger.info("Got {}", result)
             result
 
-          case result @ HandlerResultPanic ⇒
+          case result @ HandlerResultPanic(reason) ⇒
             // Just inform RabbitMQ and subsequent actions will be made by the notifier.
             // So, this is a `HandlerResultResend` with extra semantics.
             doWithChannel(_.basicNack(deliveryTag, false, true))
+            logger.info("Got {}", result)
             result
         }
 
index 38bf922..ac2e800 100644 (file)
@@ -39,25 +39,28 @@ import org.slf4j.Logger
 import com.ckkloverdos.maybe.{Failed, Just, Maybe}
 import gr.grnet.aquarium.connector.rabbitmq.RabbitMQConsumer
 import gr.grnet.aquarium.connector.handler.{HandlerResultPanic, HandlerResult}
-import gr.grnet.aquarium.util.shortInfoOf
+import sun.rmi.log.LogHandler
+import gr.grnet.aquarium.util.{LogHelpers, shortInfoOf}
 
 /**
  *
  * @author Christos KK Loverdos <loverdos@gmail.com>
  */
 
-class PayloadHandlerPostNotifier(logger: Logger) extends ((RabbitMQConsumer, Maybe[HandlerResult]) ⇒ Unit) {
+final class PayloadHandlerPostNotifier(logger: Logger) extends ((RabbitMQConsumer, Maybe[HandlerResult]) ⇒ Unit) {
   def apply(consumer: RabbitMQConsumer, maybeResult: Maybe[HandlerResult]) = {
     maybeResult match {
-      case Just(hr @ HandlerResultPanic) ⇒
+      case Just(hr @ HandlerResultPanic(reason)) ⇒
         // The other end is crucial to the overall operation and it is in panic mode,
         // so we stop delivering messages until further notice
-        logger.warn("Shutting down %s due to [%s]".format(consumer.toString, hr))
+        val errMsg = "Shutting down %s due to [%s]".format(consumer.toString, hr)
+        logger.error(errMsg)
         consumer.setAllowReconnects(false)
         consumer.safeStop()
 
       case Failed(e) ⇒
-        logger.warn("Shutting down %s due to [%s]".format(consumer.toString, shortInfoOf(e)))
+        val errMsg = "Shutting down %s due to [%s]".format(consumer.toString, shortInfoOf(e))
+        logger.warn(errMsg)
         consumer.setAllowReconnects(false)
         consumer.safeStop()