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/07 07:07:44 UTC
svn commit: r1575185 - in /incubator/sirona/trunk:
agent/store/cube/src/main/java/org/apache/sirona/cube/
core/src/main/java/org/apache/sirona/store/tracking/
core/src/test/java/org/apache/sirona/store/tracking/
Author: olamy
Date: Fri Mar 7 06:07:43 2014
New Revision: 1575185
URL: http://svn.apache.org/r1575185
Log:
use send single store send directly to the collector no local storage of PathTracking entries
Modified:
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/InMemoryPathTrackingDataStore.java
incubator/sirona/trunk/core/src/test/java/org/apache/sirona/store/tracking/InMemoryPathTrackingTest.java
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=1575185&r1=1575184&r2=1575185&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 Fri Mar 7 06:07:43 2014
@@ -23,6 +23,7 @@ import org.apache.sirona.configuration.i
import org.apache.sirona.store.tracking.BatchPathTrackingDataStore;
import org.apache.sirona.store.tracking.CollectorPathTrackingDataStore;
import org.apache.sirona.tracking.PathTrackingEntry;
+import org.apache.sirona.util.SerializeUtils;
import java.util.List;
import java.util.Map;
@@ -39,16 +40,18 @@ public class CubePathTrackingDataStore
private final Cube cube = IoCs.findOrCreateInstance( CubeBuilder.class ).build();
- private static final boolean useExecutors = Boolean.parseBoolean(
+ private static final boolean USE_EXECUTORS = Boolean.parseBoolean(
Configuration.getProperty( Configuration.CONFIG_PROPERTY_PREFIX + "pathtracking.post.useexecutors", "false" ) );
+ private static boolean USE_SINGLE_STORE = Boolean.parseBoolean(
+ Configuration.getProperty( Configuration.CONFIG_PROPERTY_PREFIX + "pathtracking.singlestore", "false" ) );
protected static ExecutorService executorService;
static
{
- if ( useExecutors )
+ if ( USE_EXECUTORS )
{
int threadsNumber =
Configuration.getInteger( Configuration.CONFIG_PROPERTY_PREFIX + "pathtracking.post.executors", 5 );
@@ -58,16 +61,26 @@ public class CubePathTrackingDataStore
}
@Override
+ public void store( PathTrackingEntry pathTrackingEntry )
+ {
+ cube.postBytes( SerializeUtils.serialize( pathTrackingEntry ), PathTrackingEntry.class.getName() );
+ }
+
+ @Override
protected void pushEntriesByBatch( Map<String, List<Pointer>> pathTrackingEntries )
{
- for ( Map.Entry<String, List<Pointer>> entry : pathTrackingEntries.entrySet() )
+ if (!USE_SINGLE_STORE)
{
- for ( Pointer pointer : entry.getValue() )
+
+ for ( Map.Entry<String, List<Pointer>> entry : pathTrackingEntries.entrySet() )
{
- if ( !pointer.isFree() )
+ for ( Pointer pointer : entry.getValue() )
{
- cube.postBytes( readBytes( pointer ), PathTrackingEntry.class.getName() );
- pointer.freeMemory();
+ if ( !pointer.isFree() )
+ {
+ cube.postBytes( readBytes( pointer ), PathTrackingEntry.class.getName() );
+ pointer.freeMemory();
+ }
}
}
}
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=1575185&r1=1575184&r2=1575185&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 Mar 7 06:07:43 2014
@@ -33,6 +33,7 @@ import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArrayList;
/**
* Very simple in memory storage for Path tracking feature
@@ -84,7 +85,7 @@ public class InMemoryPathTrackingDataSto
if ( entriesList == null )
{
- entriesList = new ArrayList<Pointer>();
+ entriesList = new CopyOnWriteArrayList<Pointer>();
}
entriesList.addAll( serialize( entry.getValue() ) );
this.pathTrackingEntries.put( entry.getKey(), entriesList );
@@ -214,16 +215,29 @@ public class InMemoryPathTrackingDataSto
@Override
public void clearEntries()
{
+ List<String> entriesToRemove = new ArrayList<String>();
for ( Map.Entry<String, List<Pointer>> entry : pathTrackingEntries.entrySet() )
{
+ boolean allFree = true;
// clear entries to not wait gc
for ( Pointer pointer : entry.getValue() )
{
- //UnsafeUtils.getUnsafe().freeMemory( pointer.offheapPointer );
- pointer.freeMemory();
+ if ( !pointer.isFree() )
+ {
+ allFree = false;
+ }
}
+ if ( allFree )
+ {
+ entriesToRemove.add( entry.getKey() );
+ }
+ }
+
+ for (String key : entriesToRemove)
+ {
+ pathTrackingEntries.remove( key );
}
- pathTrackingEntries = new ConcurrentHashMap<String, List<Pointer>>( 50 );
+
}
protected Map<String, Set<PathTrackingEntry>> getPathTrackingEntries()
@@ -243,11 +257,6 @@ public class InMemoryPathTrackingDataSto
return entries;
}
- /**
- * direct access to datas not a copy
- *
- * @return
- */
protected Map<String, List<Pointer>> getPointers()
{
return this.pathTrackingEntries;
Modified: incubator/sirona/trunk/core/src/test/java/org/apache/sirona/store/tracking/InMemoryPathTrackingTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/test/java/org/apache/sirona/store/tracking/InMemoryPathTrackingTest.java?rev=1575185&r1=1575184&r2=1575185&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/test/java/org/apache/sirona/store/tracking/InMemoryPathTrackingTest.java (original)
+++ incubator/sirona/trunk/core/src/test/java/org/apache/sirona/store/tracking/InMemoryPathTrackingTest.java Fri Mar 7 06:07:43 2014
@@ -52,12 +52,14 @@ public class InMemoryPathTrackingTest
Assert.assertEquals( "nodeId", entry.getNodeId() );
+ /*
+ we do not clear anymore entries pointer are freeing once sended
store.clearEntries();
all = store.getPathTrackingEntries();
Assert.assertNotNull( all );
Assert.assertEquals( 0, all.size() );
-
+ */
}
}