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/06/27 15:02:59 UTC
svn commit: r1606080 - in /incubator/sirona/trunk:
core/src/main/java/org/apache/sirona/store/tracking/
server/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/pathtracking/
server/reporting/src/main/resources/templates/pathtracking/ serv...
Author: olamy
Date: Fri Jun 27 13:02:59 2014
New Revision: 1606080
URL: http://svn.apache.org/r1606080
Log:
add an abstract class for path tracking storage to avoid breaking compat in the future
Added:
incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/AbstractPathTrackingDataStore.java
- copied, changed from r1599267, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java
Modified:
incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DelegatedCollectorPathTrackingDataStore.java
incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/InMemoryPathTrackingDataStore.java
incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java
incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/pathtracking/PathTrackingEndpoints.java
incubator/sirona/trunk/server/reporting/src/main/resources/templates/pathtracking/home.vm
incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java
Copied: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/AbstractPathTrackingDataStore.java (from r1599267, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java)
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/AbstractPathTrackingDataStore.java?p2=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/AbstractPathTrackingDataStore.java&p1=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java&r1=1599267&r2=1606080&rev=1606080&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/AbstractPathTrackingDataStore.java Fri Jun 27 13:02:59 2014
@@ -16,39 +16,31 @@
*/
package org.apache.sirona.store.tracking;
-import org.apache.sirona.tracking.PathCallInformation;
import org.apache.sirona.tracking.PathTrackingEntry;
import java.util.Collection;
-import java.util.Date;
-import java.util.List;
+import java.util.Collections;
/**
+ * Add new methods here to prevent breaking implementations.
+ * Because some impls are only read whereas others write
*
*/
-public interface PathTrackingDataStore
+public abstract class AbstractPathTrackingDataStore
+ implements PathTrackingDataStore
{
- void store( PathTrackingEntry pathTrackingEntry );
-
- void store( Collection<PathTrackingEntry> pathTrackingEntries );
-
- void clearEntries();
-
- /**
- * <b>the result will be orderer by startTime</b>
- *
- * @param trackingId
- * @return {@link List} of {@link org.apache.sirona.tracking.PathTrackingEntry} related to a tracking id
- */
- Collection<PathTrackingEntry> retrieve( String trackingId );
-
- /**
- * @param startTime
- * @param endTime
- * @return {@link org.apache.sirona.tracking.PathCallInformation} of all trackingIds available in the system between startTime and endTime
- */
- Collection<PathCallInformation> retrieveTrackingIds( Date startTime, Date endTime );
-
+ // FIXME olamy: maybe an exception will be more appropriate here?
+ @Override
+ public Collection<PathTrackingEntry> retrieve( String trackingId, int number )
+ {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public Collection<PathTrackingEntry> retrieve( String trackingId, String start, String end )
+ {
+ return Collections.emptyList();
+ }
}
Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DelegatedCollectorPathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DelegatedCollectorPathTrackingDataStore.java?rev=1606080&r1=1606079&r2=1606080&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DelegatedCollectorPathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/DelegatedCollectorPathTrackingDataStore.java Fri Jun 27 13:02:59 2014
@@ -67,4 +67,16 @@ public class DelegatedCollectorPathTrack
{
return this.delegatedPathTrackingDataStore.retrieveTrackingIds( startTime, endTime );
}
+
+ @Override
+ public Collection<PathTrackingEntry> retrieve( String trackingId, int number )
+ {
+ return this.delegatedPathTrackingDataStore.retrieve( trackingId, number );
+ }
+
+ @Override
+ public Collection<PathTrackingEntry> retrieve( String trackingId, String start, String end )
+ {
+ return this.delegatedPathTrackingDataStore.retrieve( trackingId, start, end );
+ }
}
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=1606080&r1=1606079&r2=1606080&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 Fri Jun 27 13:02:59 2014
@@ -41,6 +41,7 @@ import java.util.concurrent.CopyOnWriteA
* <b>MUST NOT be used in production</b>
*/
public class InMemoryPathTrackingDataStore
+ extends AbstractPathTrackingDataStore
implements PathTrackingDataStore, CollectorPathTrackingDataStore
{
Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java?rev=1606080&r1=1606079&r2=1606080&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/tracking/PathTrackingDataStore.java Fri Jun 27 13:02:59 2014
@@ -42,6 +42,10 @@ public interface PathTrackingDataStore
*/
Collection<PathTrackingEntry> retrieve( String trackingId );
+ Collection<PathTrackingEntry> retrieve( String trackingId, int number );
+
+ Collection<PathTrackingEntry> retrieve( String trackingId, String start, String end );
+
/**
* @param startTime
* @param endTime
Modified: incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/pathtracking/PathTrackingEndpoints.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/pathtracking/PathTrackingEndpoints.java?rev=1606080&r1=1606079&r2=1606080&view=diff
==============================================================================
--- incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/pathtracking/PathTrackingEndpoints.java (original)
+++ incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/pathtracking/PathTrackingEndpoints.java Fri Jun 27 13:02:59 2014
@@ -85,11 +85,19 @@ public class PathTrackingEndpoints
}
- @Regex( "/pathtrackingdetail/(.*)" )
- public Template displayPathTrackingDetail( String pathTrackingId )
+ /**
+ * retrieve a slice of pathtracking entries
+ *
+ * @param pathTrackingId
+ * @param number
+ * @return
+ */
+ @Regex( "/pathtrackingdetail/(.*)/(.*)" )
+ public Template displayPathTrackingDetail( String pathTrackingId, String number )
{
- Collection<PathTrackingEntry> entries = PATH_TRACKING_DATA_STORE.retrieve( pathTrackingId );
+ Collection<PathTrackingEntry> entries =
+ PATH_TRACKING_DATA_STORE.retrieve( pathTrackingId, Integer.parseInt( number ) );
return new Template( "pathtracking/pathtrackingdetail.vm", //
new MapBuilder<String, Object>() //
Modified: incubator/sirona/trunk/server/reporting/src/main/resources/templates/pathtracking/home.vm
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/reporting/src/main/resources/templates/pathtracking/home.vm?rev=1606080&r1=1606079&r2=1606080&view=diff
==============================================================================
--- incubator/sirona/trunk/server/reporting/src/main/resources/templates/pathtracking/home.vm (original)
+++ incubator/sirona/trunk/server/reporting/src/main/resources/templates/pathtracking/home.vm Fri Jun 27 13:02:59 2014
@@ -19,7 +19,7 @@
<div class="col-lg-9">
<ul>
#foreach( $pathCallInformation in $pathCallInformations )
- <li><a href="$mapping/pathtracking/pathtrackingdetail/$pathCallInformation.trackingId">$pathCallInformation.trackingId: $dateTool.format("yyyy-MM-dd'T'HH:mm:ssz", $pathCallInformation.startTime)</a></li>
+ <li><a href="$mapping/pathtracking/pathtrackingdetail/$pathCallInformation.trackingId/100">$pathCallInformation.trackingId: $dateTool.format("yyyy-MM-dd'T'HH:mm:ssz", $pathCallInformation.startTime)</a></li>
#end
</ul>
</div>
Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java?rev=1606080&r1=1606079&r2=1606080&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java Fri Jun 27 13:02:59 2014
@@ -17,6 +17,8 @@
package org.apache.sirona.cassandra.collector.pathtracking;
+import me.prettyprint.cassandra.model.CqlQuery;
+import me.prettyprint.cassandra.model.CqlRows;
import me.prettyprint.cassandra.serializers.LongSerializer;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.hector.api.Keyspace;
@@ -233,6 +235,72 @@ public class CassandraPathTrackingDataSt
return entries;
}
+ public Collection<PathTrackingEntry> retrieve( String trackingId, int number )
+ {
+ /*
+ QueryResult<OrderedRows<String, String, String>> cResult = //
+ HFactory.createRangeSlicesQuery( keyspace, //
+ StringSerializer.get(), //
+ StringSerializer.get(), //
+ StringSerializer.get() ) //
+ .setColumnNames( "trackingId", "nodeId", "className", "methodName", "startTime", "executionTime",
+ "level" ) //
+ .addEqualsExpression( "trackingId", trackingId ) //
+ .addEqualsExpression( "level", "0" )//
+ .setColumnFamily( family ) //
+ .setRowCount( number ) //
+ .execute();
+ */
+
+ CqlQuery<String,String, String> cqlQuery = new CqlQuery<String, String, String>( keyspace, StringSerializer.get(), StringSerializer.get(), StringSerializer.get() );
+
+ String query = "select * from " + family + " where trackingId='" + trackingId + "' AND level=" + 1 + ";";
+
+ cqlQuery.setQuery( query );
+
+ QueryResult<CqlRows<String,String,String>> cqlRowsQueryResult = cqlQuery.execute();
+
+
+
+ QueryResult<OrderedRows<String, String, String>>cResult = //
+ HFactory.createRangeSlicesQuery( keyspace, //
+ StringSerializer.get(), //
+ StringSerializer.get(), //
+ StringSerializer.get() ) //
+ .setColumnNames( "trackingId", "nodeId", "className", "methodName", "startTime", "executionTime",
+ "level" ) //
+ .addEqualsExpression( "trackingId", trackingId ) //
+ .setColumnFamily( family ) //
+ .setRowCount( number ) //
+ .execute();
+
+ Set<PathTrackingEntry> entries = new TreeSet<PathTrackingEntry>( LEVEL_COMPARATOR );
+
+ OrderedRows<String, String, String> rows = cResult.get();
+
+ if ( rows == null )
+ {
+ return entries;
+ }
+
+ for ( Row<String, String, String> row : rows.getList() )
+ {
+ ColumnSlice<String, String> columnSlice = row.getColumnSlice();
+
+ PathTrackingEntry pathTrackingEntry = map( columnSlice );
+
+ entries.add( pathTrackingEntry );
+ }
+
+ return entries;
+ }
+
+ @Override
+ public Collection<PathTrackingEntry> retrieve( String trackingId, String start, String end )
+ {
+ return super.retrieve( trackingId, start, end );
+ }
+
@Override
public Collection<PathCallInformation> retrieveTrackingIds( Date startTime, Date endTime )
{
@@ -245,7 +313,9 @@ public class CassandraPathTrackingDataSt
.setColumnNames( "trackingId", "nodeId", "className", "methodName", "startTime", "executionTime",
"level" ) //
.addEqualsExpression( "level", Long.valueOf( 1 ) ) //
- .addGteExpression( "startTime", startTime.getTime() ).setColumnFamily( family ).execute();
+ .addGteExpression( "startTime", startTime.getTime() ) //
+ .setColumnFamily( family ) //
+ .execute();
int size = cResult.get().getList().size();