You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2011/05/06 12:07:26 UTC

svn commit: r1100155 - in /synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp: ClientHandler.java NhttpConstants.java ServerHandler.java util/LatencyView.java

Author: hiranya
Date: Fri May  6 10:07:25 2011
New Revision: 1100155

URL: http://svn.apache.org/viewvc?rev=1100155&view=rev
Log:
Adding S2S latency JMX MBeans

Modified:
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java Fri May  6 10:07:25 2011
@@ -635,6 +635,9 @@ public class ClientHandler implements NH
      */
     public void responseReceived(final NHttpClientConnection conn) {
 
+        setServerContextAttribute(NhttpConstants.RES_HEADER_ARRIVAL_TIME,
+                System.currentTimeMillis(), conn);
+
         HttpContext context = conn.getContext();
         HttpResponse response = conn.getHttpResponse();
 

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java Fri May  6 10:07:25 2011
@@ -116,6 +116,7 @@ public class NhttpConstants {
     public static final String REQ_ARRIVAL_TIME = "REQ_ARRIVAL_TIME";
     public static final String REQ_DEPARTURE_TIME = "REQ_DEPARTURE_TIME";
     public static final String RES_ARRIVAL_TIME = "RES_ARRIVAL_TIME";
+    public static final String RES_HEADER_ARRIVAL_TIME = "RES_HEADER_ARRIVAL_TIME";
     public static final String RES_DEPARTURE_TIME = "RES_DEPARTURE_TIME";
 
     /**

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java Fri May  6 10:07:25 2011
@@ -114,6 +114,7 @@ public class ServerHandler implements NH
     private boolean restDispatching = true;
     
     private LatencyView latencyView = null;
+    private LatencyView s2sLatencyView = null;
     private ThreadingView threadingView = null;
 
     public static final String REQUEST_SINK_BUFFER = "synapse.request-sink-buffer";
@@ -135,7 +136,8 @@ public class ServerHandler implements NH
         this.connStrategy = new DefaultConnectionReuseStrategy();
         this.allocator = new HeapByteBufferAllocator();
         this.activeConnections = new ArrayList<NHttpServerConnection>();
-        this.latencyView = new LatencyView(isHttps);
+        this.latencyView = new LatencyView("NHTTPLatencyView", isHttps);
+        this.s2sLatencyView = new LatencyView("NHTTPS2SLatencyView", isHttps);
         this.threadingView = new ThreadingView("HttpServerWorker", true, 50);
         this.restDispatching = listenerContext.isRestDispatching();
 
@@ -371,7 +373,20 @@ public class ServerHandler implements NH
         final HttpResponse response) throws IOException, HttpException {
         try {
             conn.suspendInput();
-            httpProcessor.process(response, conn.getContext());
+            HttpContext context = conn.getContext();
+            httpProcessor.process(response, context);
+
+            if (context.getAttribute(NhttpConstants.REQ_ARRIVAL_TIME) != null &&
+                context.getAttribute(NhttpConstants.REQ_DEPARTURE_TIME) != null &&
+                context.getAttribute(NhttpConstants.RES_HEADER_ARRIVAL_TIME) != null) {
+
+                s2sLatencyView.notifyTimes(
+                    (Long) context.getAttribute(NhttpConstants.REQ_ARRIVAL_TIME),
+                    (Long) context.getAttribute(NhttpConstants.REQ_DEPARTURE_TIME),
+                    (Long) context.getAttribute(NhttpConstants.RES_HEADER_ARRIVAL_TIME),
+                    System.currentTimeMillis());
+            }
+
             conn.submitResponse(response);
         } catch (HttpException e) {
             shutdownConnection(conn);
@@ -600,6 +615,7 @@ public class ServerHandler implements NH
 
     public void stop() {
         latencyView.destroy();
+        s2sLatencyView.destroy();
         threadingView.destroy();
 
         try {

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java Fri May  6 10:07:25 2011
@@ -54,8 +54,6 @@ import java.util.Calendar;
  */
 public class LatencyView implements LatencyViewMBean {
 
-    private static final String NHTTP_LATENCY_VIEW = "NhttpTransportLatency";
-
     private static final int SMALL_DATA_COLLECTION_PERIOD = 5;
     private static final int LARGE_DATA_COLLECTION_PERIOD = 5 * 60;
     private static final int SAMPLES_PER_MINUTE = 60/ SMALL_DATA_COLLECTION_PERIOD;
@@ -89,14 +87,16 @@ public class LatencyView implements Late
     private int count = 0;
     private Date resetTime = Calendar.getInstance().getTime();
 
+    private String latencyMode;
     private String name;
 
-    public LatencyView(boolean isHttps) {
+    public LatencyView(final String latencyMode, boolean isHttps) {
+        this.latencyMode = latencyMode;
         name = "nio-http" + (isHttps ? "s" : "");
 
         scheduler =  Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
             public Thread newThread(Runnable r) {
-                return new Thread(r, name + "-latency-view");
+                return new Thread(r, latencyMode + "-" + name + "-latency-view");
             }
         });
 
@@ -106,7 +106,7 @@ public class LatencyView implements Late
                 LARGE_DATA_COLLECTION_PERIOD, TimeUnit.SECONDS);
         boolean registered = false;
         try {
-            registered = MBeanRegistrar.getInstance().registerMBean(this, NHTTP_LATENCY_VIEW, name);
+            registered = MBeanRegistrar.getInstance().registerMBean(this, this.latencyMode, name);
         } finally {
             if (!registered) {
                 scheduler.shutdownNow();
@@ -115,7 +115,7 @@ public class LatencyView implements Late
     }
 
     public void destroy() {
-        MBeanRegistrar.getInstance().unRegisterMBean(NHTTP_LATENCY_VIEW, name);
+        MBeanRegistrar.getInstance().unRegisterMBean(latencyMode, name);
         if (!scheduler.isShutdown()) {
             scheduler.shutdownNow();
         }