You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by ol...@apache.org on 2014/03/03 00:01:35 UTC

svn commit: r1573396 - in /incubator/sirona/trunk: agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/ agent/store/cube/src/main/java/org/apache/sirona/cube/ core/src/main/java/org/apache/sirona/configuration/ioc/ core/src/main/jav...

Author: olamy
Date: Sun Mar  2 23:01:35 2014
New Revision: 1573396

URL: http://svn.apache.org/r1573396
Log:
collecting path tracking entries

Added:
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/CollectorPathTrackingDataStore.java
      - copied, changed from r1572432, incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DefaultCollectorPathTrackingDataStore.java
      - copied, changed from r1572432, incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java
Modified:
    incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java
    incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/Cube.java
    incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/BatchPathTrackingDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/InMemoryPathTrackingDataStore.java
    incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java
    incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/pathtracking/CassandraPathTrackingDataStore.java

Modified: incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java (original)
+++ incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java Sun Mar  2 23:01:35 2014
@@ -34,6 +34,9 @@ import org.apache.sirona.store.tracking.
 import java.util.Collection;
 import java.util.Collections;
 
+/**
+ * FIXME we do not send path tracking entries here!
+ */
 public class PullRepository extends DefaultRepository {
     private static final String REGISTRATION_TYPE = "registration";
 

Modified: incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/Cube.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/Cube.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/Cube.java (original)
+++ incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/Cube.java Sun Mar  2 23:01:35 2014
@@ -65,17 +65,11 @@ public class Cube {
     private static final String M_2 = "m2";
 
     private static final String TRACKING_D = "trackingId";
-
     private static final String NODE_ID = "nodeId";
-
     private static final String CLASSNAME = "className";
-
     private static final String METHOD_NAME = "methodName";
-
     private static final String START_TIME = "startTime";
-
     private static final String EXEC_TIME = "executionTime";
-
     private static final String LEVEL = "level";
 
     private static final String JSON_BASE = "{" +

Modified: incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java Sun Mar  2 23:01:35 2014
@@ -19,6 +19,7 @@ package org.apache.sirona.cube;
 
 import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.store.tracking.BatchPathTrackingDataStore;
+import org.apache.sirona.store.tracking.CollectorPathTrackingDataStore;
 import org.apache.sirona.tracking.PathTrackingEntry;
 
 import java.util.Set;
@@ -29,12 +30,12 @@ import java.util.concurrent.ConcurrentMa
  */
 public class CubePathTrackingDataStore
     extends BatchPathTrackingDataStore
+    implements CollectorPathTrackingDataStore
 {
     private final Cube cube = IoCs.findOrCreateInstance( CubeBuilder.class ).build();
 
     @Override
-    protected void pushEntriesByBatch( ConcurrentMap<String, Set<PathTrackingEntry>> pathTrackingEntries )
-    {
+    protected void pushEntriesByBatch( ConcurrentMap<String, Set<PathTrackingEntry>> pathTrackingEntries ) {
         cube.post( cube.pathTrackingSnapshot( pathTrackingEntries ) );
     }
 

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java Sun Mar  2 23:01:35 2014
@@ -79,7 +79,7 @@ public final class IoCs {
             SINGLETONS.put(clazz, t);
             return t;
         } catch (final Exception e) {
-            throw new SironaException(e);
+            throw new SironaException(e.getMessage(),e);
         }
     }
 

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/BatchPathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/BatchPathTrackingDataStore.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/BatchPathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/BatchPathTrackingDataStore.java Sun Mar  2 23:01:35 2014
@@ -56,20 +56,22 @@ public abstract class BatchPathTrackingD
             Executors.newSingleThreadScheduledExecutor( new DaemonThreadFactory( name + "-pathtracking-schedule-" ) );
 
         final ScheduledFuture<?> future =
-            ses.scheduleAtFixedRate( new PushGaugesTask(), period, period, TimeUnit.MILLISECONDS );
+            ses.scheduleAtFixedRate( new PushPathTrackingTask(), period, period, TimeUnit.MILLISECONDS );
 
         scheduledTask = new BatchFuture( ses, future );
     }
 
     protected int getPeriod( final String name )
     {
-        return Configuration.getInteger( Configuration.CONFIG_PROPERTY_PREFIX + name + ".pathtracking.period", //
+        int period = Configuration.getInteger( Configuration.CONFIG_PROPERTY_PREFIX + name + ".pathtracking.period", //
                                          Configuration.getInteger(
                                              Configuration.CONFIG_PROPERTY_PREFIX + name + ".period", 60000 ) );
+
+        return period;
     }
 
 
-    private class PushGaugesTask
+    private class PushPathTrackingTask
         implements Runnable
     {
         @Override

Copied: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/CollectorPathTrackingDataStore.java (from r1572432, incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java)
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/CollectorPathTrackingDataStore.java?p2=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/CollectorPathTrackingDataStore.java&p1=incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java&r1=1572432&r2=1573396&rev=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/CollectorPathTrackingDataStore.java Sun Mar  2 23:01:35 2014
@@ -15,28 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.sirona.cube;
-
-import org.apache.sirona.configuration.ioc.IoCs;
-import org.apache.sirona.store.tracking.BatchPathTrackingDataStore;
-import org.apache.sirona.tracking.PathTrackingEntry;
-
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
+package org.apache.sirona.store.tracking;
 
 /**
  *
  */
-public class CubePathTrackingDataStore
-    extends BatchPathTrackingDataStore
+public interface CollectorPathTrackingDataStore
+    extends PathTrackingDataStore
 {
-    private final Cube cube = IoCs.findOrCreateInstance( CubeBuilder.class ).build();
-
-    @Override
-    protected void pushEntriesByBatch( ConcurrentMap<String, Set<PathTrackingEntry>> pathTrackingEntries )
-    {
-        cube.post( cube.pathTrackingSnapshot( pathTrackingEntries ) );
-    }
-
-
 }

Copied: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DefaultCollectorPathTrackingDataStore.java (from r1572432, incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java)
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DefaultCollectorPathTrackingDataStore.java?p2=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DefaultCollectorPathTrackingDataStore.java&p1=incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java&r1=1572432&r2=1573396&rev=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DefaultCollectorPathTrackingDataStore.java Sun Mar  2 23:01:35 2014
@@ -14,29 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-package org.apache.sirona.cube;
-
-import org.apache.sirona.configuration.ioc.IoCs;
-import org.apache.sirona.store.tracking.BatchPathTrackingDataStore;
-import org.apache.sirona.tracking.PathTrackingEntry;
-
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
+package org.apache.sirona.store.tracking;
 
 /**
  *
  */
-public class CubePathTrackingDataStore
-    extends BatchPathTrackingDataStore
+public class DefaultCollectorPathTrackingDataStore
+    extends InMemoryPathTrackingDataStore
+    implements CollectorPathTrackingDataStore
 {
-    private final Cube cube = IoCs.findOrCreateInstance( CubeBuilder.class ).build();
-
-    @Override
-    protected void pushEntriesByBatch( ConcurrentMap<String, Set<PathTrackingEntry>> pathTrackingEntries )
-    {
-        cube.post( cube.pathTrackingSnapshot( pathTrackingEntries ) );
-    }
-
-
+    // no op currently but just in case will be easy to add something here
 }

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/InMemoryPathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/InMemoryPathTrackingDataStore.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/InMemoryPathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/InMemoryPathTrackingDataStore.java Sun Mar  2 23:01:35 2014
@@ -37,7 +37,7 @@ import java.util.concurrent.ConcurrentMa
  * <b>MUST NOT be used in production</b>
  */
 public class InMemoryPathTrackingDataStore
-    implements PathTrackingDataStore
+    implements PathTrackingDataStore, CollectorPathTrackingDataStore
 {
     /**
      * store path track tracking entries list per path tracking id

Modified: incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java (original)
+++ incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java Sun Mar  2 23:01:35 2014
@@ -37,6 +37,8 @@ import org.apache.sirona.store.counter.C
 import org.apache.sirona.store.gauge.CollectorGaugeDataStore;
 import org.apache.sirona.store.status.CollectorNodeStatusDataStore;
 import org.apache.sirona.store.status.NodeStatusDataStore;
+import org.apache.sirona.store.tracking.CollectorPathTrackingDataStore;
+import org.apache.sirona.tracking.PathTrackingEntry;
 import org.apache.sirona.util.DaemonThreadFactory;
 
 import javax.net.ssl.HttpsURLConnection;
@@ -78,6 +80,7 @@ public class Collector extends HttpServl
     private static final String VALIDATION = "validation";
     private static final String STATUS = "status";
     private static final String REGISTRATION = "registration";
+    private static final String PATH_TRACKING = "pathtracking";
 
     private static final String GET = "GET";
 
@@ -86,6 +89,7 @@ public class Collector extends HttpServl
     private CollectorCounterStore counterDataStore = null;
     private CollectorGaugeDataStore gaugeDataStore = null;
     private CollectorNodeStatusDataStore statusDataStore;
+    private CollectorPathTrackingDataStore pathTrackingDataStore;
     private ObjectMapper mapper;
 
     private final Collection<AgentNode> agents = new CopyOnWriteArraySet<AgentNode>();
@@ -125,6 +129,11 @@ public class Collector extends HttpServl
             this.statusDataStore = CollectorNodeStatusDataStore.class.cast(nds);
         }
 
+        {
+            this.pathTrackingDataStore = IoCs.findOrCreateInstance( CollectorPathTrackingDataStore.class );
+            // TODO validation
+        }
+
         this.mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true);
 
         { // pulling
@@ -209,7 +218,9 @@ public class Collector extends HttpServl
                     } else if (GAUGE.equals(type)) {
                         updateGauge(event);
                     } else if (REGISTRATION.equals(type)) {
-                        registerNode(event);
+                        registerNode( event );
+                    } else if (PATH_TRACKING.equals(type)) {
+                        updatePathTracking(event);
                     } else {
                         LOGGER.info("Unexpected type '" + type + "', skipping");
                     }
@@ -272,18 +283,31 @@ public class Collector extends HttpServl
         gaugeDataStore.addToGauge(role(data), time, value, String.class.cast(data.get("marker")));
     }
 
+    private void updatePathTracking(final Event event) {
+        final Map<String, Object> data = event.getData();
+
+        pathTrackingDataStore.store(
+            new PathTrackingEntry(  String.class.cast(data.get("trackingId")),//
+                                    String.class.cast(data.get("nodeId")), //
+                                    String.class.cast(data.get("className")), //
+                                    String.class.cast(data.get("methodName")), //
+                                    Number.class.cast(data.get("startTime")).longValue(), //
+                                    Number.class.cast(data.get("executionTime")).longValue(), //
+                                    Number.class.cast(data.get("level") ).intValue() ));
+    }
+
+
+
     private void updateCounter(final Event event) {
         final Map<String, Object> data = event.getData();
 
-        counterDataStore.update(
-            new Counter.Key(role(data), String.class.cast(data.get("name"))),
-            String.class.cast(data.get("marker")),
-            new M2AwareStatisticalSummary(data),
-            Number.class.cast(data.get("concurrency")).intValue());
+        counterDataStore.update( new Counter.Key( role( data ), String.class.cast( data.get( "name" ) ) ),
+                                 String.class.cast( data.get( "marker" ) ), new M2AwareStatisticalSummary( data ),
+                                 Number.class.cast( data.get( "concurrency" ) ).intValue() );
     }
 
     private Role role(final Map<String, Object> data) {
-        final String name = String.class.cast(data.get("role"));
+        final String name = String.class.cast( data.get( "role" ) );
         final Role existing = roles.get(name);
         if (existing != null) {
             return existing;

Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/pathtracking/CassandraPathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/pathtracking/CassandraPathTrackingDataStore.java?rev=1573396&r1=1573395&r2=1573396&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/pathtracking/CassandraPathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/pathtracking/CassandraPathTrackingDataStore.java Sun Mar  2 23:01:35 2014
@@ -31,6 +31,7 @@ import org.apache.sirona.cassandra.Dynam
 import org.apache.sirona.cassandra.collector.CassandraSirona;
 import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.store.tracking.BatchPathTrackingDataStore;
+import org.apache.sirona.store.tracking.CollectorPathTrackingDataStore;
 import org.apache.sirona.store.tracking.PathTrackingDataStore;
 import org.apache.sirona.tracking.PathTrackingEntry;
 
@@ -52,7 +53,7 @@ import static org.apache.sirona.cassandr
  */
 public class CassandraPathTrackingDataStore
     extends BatchPathTrackingDataStore
-    implements PathTrackingDataStore
+    implements PathTrackingDataStore, CollectorPathTrackingDataStore
 {
 
     private final CassandraSirona cassandra;