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/06 02:04:08 UTC

svn commit: r1574735 - in /incubator/sirona/trunk: agent/store/cube/src/main/java/org/apache/sirona/cube/CubePathTrackingDataStore.java core/src/main/java/org/apache/sirona/store/tracking/InMemoryPathTrackingDataStore.java

Author: olamy
Date: Thu Mar  6 01:04:08 2014
New Revision: 1574735

URL: http://svn.apache.org/r1574735
Log:
as we record Path tracking entries regulary we can free pointer already sended

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

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=1574735&r1=1574734&r2=1574735&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 Thu Mar  6 01:04:08 2014
@@ -24,7 +24,6 @@ import org.apache.sirona.store.tracking.
 import org.apache.sirona.store.tracking.CollectorPathTrackingDataStore;
 import org.apache.sirona.tracking.PathTrackingEntry;
 
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
@@ -65,7 +64,11 @@ public class CubePathTrackingDataStore
         {
             for ( Pointer pointer : entry.getValue() )
             {
-                cube.postBytes( readBytes( pointer ), PathTrackingEntry.class.getName() );
+                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=1574735&r1=1574734&r2=1574735&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 Thu Mar  6 01:04:08 2014
@@ -43,7 +43,6 @@ public class InMemoryPathTrackingDataSto
 {
 
 
-
     /**
      * store path track tracking entries list per path tracking id
      * the value is the memory address
@@ -160,6 +159,8 @@ public class InMemoryPathTrackingDataSto
 
         long offheapPointer;
 
+        boolean free;
+
         public int getSize()
         {
             return size;
@@ -169,6 +170,20 @@ public class InMemoryPathTrackingDataSto
         {
             return offheapPointer;
         }
+
+        public void freeMemory()
+        {
+            if ( !free )
+            {
+                UnsafeUtils.getUnsafe().freeMemory( offheapPointer );
+                free = true;
+            }
+        }
+
+        public boolean isFree()
+        {
+            return free;
+        }
     }
 
     private List<Pointer> serialize( Collection<PathTrackingEntry> entries )
@@ -204,7 +219,8 @@ public class InMemoryPathTrackingDataSto
             // clear entries to not wait gc
             for ( Pointer pointer : entry.getValue() )
             {
-                UnsafeUtils.getUnsafe().freeMemory( pointer.offheapPointer );
+                //UnsafeUtils.getUnsafe().freeMemory( pointer.offheapPointer );
+                pointer.freeMemory();
             }
         }
         pathTrackingEntries = new ConcurrentHashMap<String, List<Pointer>>( 50 );