You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by rh...@apache.org on 2009/11/03 09:49:22 UTC

svn commit: r832343 - in /incubator/esme/trunk/server/src/main/scala: bootstrap/liftweb/ org/apache/esme/actor/ org/apache/esme/model/

Author: rhirsch
Date: Tue Nov  3 08:49:22 2009
New Revision: 832343

URL: http://svn.apache.org/viewvc?rev=832343&view=rev
Log:
[ESME-18] JMX support
Patch from Andrew Headrick applied

Modified:
    incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/Distributor.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/MessagePullActor.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/SchedulerActor.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/UserActor.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala

Modified: incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala?rev=832343&r1=832342&r2=832343&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala Tue Nov  3 08:49:22 2009
@@ -41,12 +41,14 @@
 import snippet._
 import api._
 import net.liftweb._
+import common.Full
 import mapper._
 import provider.HTTPRequest
 import org.compass.core._
 import org.compass.core.config.CompassConfiguration
 
 import net.liftweb.widgets.tablesorter._  
+import com.twitter.stats._
 
 /**
  * A class that's instantiated early and run.  It allows the application
@@ -161,12 +163,19 @@
     LiftRules.dispatch.append(TwitterJsonAPI.dispatch)
 
     LiftRules.early.append(makeUtf8)
+    
+    //JMX
+    if (Props.getBool("jmx.enable", false))
+        StatsMBean("org.apache.esme.stats")
 
     Distributor.touch
     SchedulerActor.touch
     MessagePullActor.touch
     // ScalaInterpreter.touch
     
+    Stats.makeGauge("users"){Distributor.getUsersCount}
+    Stats.makeGauge("listener"){Distributor.getListenersCount}
+    
     val resentPeriod = Props.getLong("stats.resent.period", 1 week)
     val resentRefreshInterval: Long = Props.getLong("stats.resent.refresh") match {
       case Full(interval) if interval > (1 minute) => interval
@@ -299,6 +308,7 @@
   val tenMinutes: Long = 10 minutes
   protected def messageHandler = {
     case SessionWatcherInfo(sessions) =>
+     Stats.getCounter("liftSessions").update(sessions.size)
       if ((millis - tenMinutes) > lastTime) {
         lastTime = millis
         val rt = Runtime.getRuntime

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/Distributor.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/Distributor.scala?rev=832343&r1=832342&r2=832343&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/Distributor.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/Distributor.scala Tue Nov  3 08:49:22 2009
@@ -140,4 +140,7 @@
     }
   }
 
+  def getUsersCount = users.size
+  def getListenersCount = listeners.size
+
 }

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/MessagePullActor.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/MessagePullActor.scala?rev=832343&r1=832342&r2=832343&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/MessagePullActor.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/MessagePullActor.scala Tue Nov  3 08:49:22 2009
@@ -25,6 +25,7 @@
 import common._
 import actor._
 import org.apache.esme.actor.Distributor.{UserCreatedMessage=>Msg}
+import com.twitter.stats.Stats
 
 object MessagePullActor extends LiftActor {
   
@@ -77,6 +78,7 @@
       for (message <- lastMessages) {
         messageProcessor ! message
         lastMessage = Some(message)
+        Stats incr "messagesPulled"
       }
       
       case FetchMessages => 

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/SchedulerActor.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/SchedulerActor.scala?rev=832343&r1=832342&r2=832343&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/SchedulerActor.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/SchedulerActor.scala Tue Nov  3 08:49:22 2009
@@ -28,6 +28,8 @@
 import net.liftweb.util._
 import Helpers._
 import net.liftweb.common._
+import com.twitter.stats.Stats
+import com.twitter.stats.Stats
 
 
 object SchedulerActor extends LiftActor{
@@ -92,6 +94,10 @@
         messageProcessor ! Distributor.AddMessageToMailbox(user, msg, reason)
               // }
             }
+            Stats incr "schedulerMessagesCreated"
+            Stats incr "messagesCreated"
+            Stats incr "schedulerMessagesCreated"
+            Stats incr "messagesCreated"
     }
     
   }

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/UserActor.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/UserActor.scala?rev=832343&r1=832342&r2=832343&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/UserActor.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/actor/UserActor.scala Tue Nov  3 08:49:22 2009
@@ -35,6 +35,7 @@
 import java.util.logging._
 import java.util.{TimeZone, Calendar}
 import scala.xml.{Elem}
+import com.twitter.stats.Stats
 
 object UserActor {
   private[actor] case class StartMeUp(user: Long)
@@ -100,6 +101,8 @@
 
         this ! UpdateTracking(Distributor.TrackTrackingType)
         this ! UpdateTracking(Distributor.PerformTrackingType)
+
+        Stats incr "userCount"
         
       case RefreshMe(user) => 
          pools = Privilege.findViewablePools(user)
@@ -133,6 +136,8 @@
                  else null
 
           msg.saveMe
+          Stats incr "userMessagesCreated"
+          Stats incr "messagesCreated"
 
           Distributor ! Distributor.AddMessageToMailbox(userId, msg, NoReason)
         
@@ -231,13 +236,18 @@
         val mb = Mailbox.create.user(userId).message(msg)
         reason match {
           case TrackReason(trackId) => mb.viaTrack(trackId)
+              Stats incr "messagesDeliveredTrackReason"
           case DirectReason(fromId) => mb.directlyFrom(fromId)
+              Stats incr "messagesDeliveredDirectReason"
           case ConversationReason(convId) => mb.conversation(convId)
+              Stats incr "messagesDeliveredConversationReason"
           case ResendReason(resender) => mb.resentBy(resender)
+              Stats incr "messagesDeliveredResendReason"
           case _ =>
         }
         mb.saveMe
-          
+        Stats incr "messagesDelivered"
+
         _mailbox = ((msg.id.is, reason, false) :: _mailbox.toList).take(500).toArray
 
         listeners.foreach(_ ! MessageReceived(msg, reason))
@@ -249,11 +259,11 @@
             case m @ MailTo(_, _) =>
               User.find(userId).foreach( u =>
                 HttpSender ! HttpSender.SendAMessage(m, msg, u, reason, td.uniqueId))
-             
+                Stats incr "messagesMailed"
             case h @ HttpTo(_, _, _, _, _) =>
               User.find(userId).foreach( u =>
                 HttpSender ! HttpSender.SendAMessage(h, msg, u, reason, td.uniqueId))
-
+                Stats incr "messagesSentViaHTTP"
             case PerformResend =>
               if (! msg.saved_?) msg.save
               for (id <- followers)
@@ -267,7 +277,7 @@
               ScalaInterpreter ! ScalaInterpreter.ScalaExcerpt(userId, msg.id.is, msg.pool.is, msg.getText)
 	      */
 
-            case PerformFilter => // IGNORE
+            case PerformFilter => Stats incr "messagesFiltered" // IGNORE
           }
         }
       }

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala?rev=832343&r1=832342&r2=832343&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala Tue Nov  3 08:49:22 2009
@@ -45,6 +45,7 @@
 import org.apache.esme.view._
 import java.net.URL
 import java.util.logging._
+import com.twitter.stats.Stats
 
 object User extends User with KeyedMetaMapper[Long, User] {
   override def afterSave = profileChanged _ :: notifyActors _ :: super.afterSave
@@ -149,6 +150,8 @@
     curUser.remove()
     curUserId(Full(who.id.toString))
     onLogIn.foreach(_(who))
+
+    Stats incr "usersLoggedIn"
   }
 
   def logoutCurrentUser = logUserOut()
@@ -158,6 +161,7 @@
     curUserId.remove()
     curUser.remove()
     S.request.foreach(_.request.session.terminate)
+    Stats getCounter "usersLoggedIn" incr -1
   }
 
   private object curUserId extends SessionVar[Box[String]](Empty)