You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directmemory.apache.org by no...@apache.org on 2012/11/01 15:28:06 UTC

svn commit: r1404610 - in /directmemory/trunk/directmemory-cache/src: main/java/org/apache/directmemory/memory/ test/java/org/apache/directmemory/memory/

Author: noctarius
Date: Thu Nov  1 14:28:06 2012
New Revision: 1404610

URL: http://svn.apache.org/viewvc?rev=1404610&view=rev
Log:
Made Pointer::BufferNumber a final field of the PointerImpl implementation since there can't be a non MemoryBuffer pointer anymore. This has an advantage in the memory visibility of the field when cleaning short living pointers.

Modified:
    directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java
    directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java
    directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java
    directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/UnsafeMemoryManagerServiceImpl.java
    directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractMemoryManagerServiceTest.java
    directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/SlabMemoryManagerServiceTest.java

Modified: directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java?rev=1404610&r1=1404609&r2=1404610&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java (original)
+++ directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java Thu Nov  1 14:28:06 2012
@@ -269,10 +269,9 @@ public class MemoryManagerServiceImpl<V>
                                              final long expires )
     {
 
-        Pointer<V> p = new PointerImpl<V>( buffer );
+        Pointer<V> p = new PointerImpl<V>( buffer, allocatorIndex );
 
         p.setExpiration( expires, expiresIn );
-        p.setBufferNumber( allocatorIndex );
         p.setFree( false );
         p.createdNow();
 

Modified: directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java?rev=1404610&r1=1404609&r2=1404610&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java (original)
+++ directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java Thu Nov  1 14:28:06 2012
@@ -40,8 +40,6 @@ public interface Pointer<T>
 
     int getBufferNumber();
 
-    void setBufferNumber( int bufferNumber );
-
     long getSize();
 
     void hit();

Modified: directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java?rev=1404610&r1=1404609&r2=1404610&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java (original)
+++ directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java Thu Nov  1 14:28:06 2012
@@ -33,6 +33,8 @@ public class PointerImpl<T>
 
     public final MemoryBuffer memoryBuffer;
 
+    public final int bufferNumber;
+
     public long created;
 
     public long expires;
@@ -45,13 +47,12 @@ public class PointerImpl<T>
 
     public AtomicLong lastHit = new AtomicLong();
 
-    public int bufferNumber;
-
     public Class<? extends T> clazz;
 
-    public PointerImpl( MemoryBuffer memoryBuffer )
+    public PointerImpl( MemoryBuffer memoryBuffer, int bufferNumber )
     {
         this.memoryBuffer = memoryBuffer;
+        this.bufferNumber = bufferNumber;
     }
 
     @Override
@@ -156,12 +157,6 @@ public class PointerImpl<T>
     }
 
     @Override
-    public void setBufferNumber( int bufferNumber )
-    {
-        this.bufferNumber = bufferNumber;
-    }
-
-    @Override
     public void setExpiration( long expires, long expiresIn )
     {
         this.expires = expires;

Modified: directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/UnsafeMemoryManagerServiceImpl.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/UnsafeMemoryManagerServiceImpl.java?rev=1404610&r1=1404609&r2=1404610&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/UnsafeMemoryManagerServiceImpl.java (original)
+++ directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/UnsafeMemoryManagerServiceImpl.java Thu Nov  1 14:28:06 2012
@@ -45,7 +45,7 @@ public class UnsafeMemoryManagerServiceI
 
     protected Pointer<V> instanciatePointer( int size, long expiresIn, long expires )
     {
-        Pointer<V> p = new PointerImpl<V>( allocator.allocate( size ) );
+        Pointer<V> p = new PointerImpl<V>( allocator.allocate( size ), 1 );
 
         p.setExpiration( expires, expiresIn );
         p.setFree( false );

Modified: directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractMemoryManagerServiceTest.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractMemoryManagerServiceTest.java?rev=1404610&r1=1404609&r2=1404610&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractMemoryManagerServiceTest.java (original)
+++ directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractMemoryManagerServiceTest.java Thu Nov  1 14:28:06 2012
@@ -327,7 +327,7 @@ public abstract class AbstractMemoryMana
     public void testUpdate()
     {
 
-        final int NUMBER_OF_OBJECTS = 1;
+        final int NUMBER_OF_OBJECTS = 2;
         final int BUFFER_SIZE = NUMBER_OF_OBJECTS * SMALL_PAYLOAD_LENGTH;
 
         mms = instanciateMemoryManagerService( BUFFER_SIZE );
@@ -349,10 +349,17 @@ public abstract class AbstractMemoryMana
         final Pointer<Object> evenAnotherPointer = mms.update( otherPointer, evenAnotherPayload );
         Assert.assertNotNull( evenAnotherPointer );
         // Assert.assertEquals( pointer.getStart(), evenAnotherPointer.getStart() );
-        Assert.assertEquals( pointer.getSize() / 2, evenAnotherPointer.getSize() );
+        Assert.assertEquals( pointer.getSize(), evenAnotherPointer.getSize() );
         // Assert.assertEquals( 2, new String( mms.retrieve( evenAnotherPointer ) ).length() );
         Assert.assertTrue( new String( mms.retrieve( evenAnotherPointer ) ).startsWith( new String( evenAnotherPayload ) ) );
 
+        final byte[] andAnotherPayload = MemoryTestUtils.generateRandomPayload( SMALL_PAYLOAD_LENGTH * 2 );
+        final Pointer<Object> andAnotherPointer = mms.update( otherPointer, andAnotherPayload );
+        Assert.assertNotNull( andAnotherPointer );
+        // Assert.assertEquals( pointer.getStart(), evenAnotherPointer.getStart() );
+        Assert.assertEquals( pointer.getSize() * 2, andAnotherPointer.getSize() );
+        // Assert.assertEquals( 2, new String( mms.retrieve( evenAnotherPointer ) ).length() );
+        Assert.assertTrue( new String( mms.retrieve( andAnotherPointer ) ).startsWith( new String( andAnotherPayload ) ) );
     }
 
     @Test

Modified: directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/SlabMemoryManagerServiceTest.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/SlabMemoryManagerServiceTest.java?rev=1404610&r1=1404609&r2=1404610&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/SlabMemoryManagerServiceTest.java (original)
+++ directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/SlabMemoryManagerServiceTest.java Thu Nov  1 14:28:06 2012
@@ -34,21 +34,24 @@ public class SlabMemoryManagerServiceTes
     @Override
     protected MemoryManagerService<Object> instanciateMemoryManagerService( int bufferSize )
     {
-        final MemoryManagerService<Object> mms = new MemoryManagerServiceImpl<Object>() {
+        final MemoryManagerService<Object> mms = new MemoryManagerServiceImpl<Object>()
+        {
 
             @Override
             protected Allocator instanciateByteBufferAllocator( int allocatorNumber, int size )
             {
                 Collection<FixedSizeByteBufferAllocatorImpl> slabs = new HashSet<FixedSizeByteBufferAllocatorImpl>();
-                
-                slabs.add( new FixedSizeByteBufferAllocatorImpl(0, size, SMALL_PAYLOAD_LENGTH / 2, 1) );
-                slabs.add( new FixedSizeByteBufferAllocatorImpl(1, size, SMALL_PAYLOAD_LENGTH, 1) );
-                
-                final SlabByteBufferAllocatorImpl allocator = new SlabByteBufferAllocatorImpl( allocatorNumber, slabs, false );
-                
+
+                slabs.add( new FixedSizeByteBufferAllocatorImpl( 0, size, SMALL_PAYLOAD_LENGTH / 2, 1 ) );
+                slabs.add( new FixedSizeByteBufferAllocatorImpl( 1, size, SMALL_PAYLOAD_LENGTH, 1 ) );
+                slabs.add( new FixedSizeByteBufferAllocatorImpl( 2, size, SMALL_PAYLOAD_LENGTH * 2, 1 ) );
+
+                final SlabByteBufferAllocatorImpl allocator =
+                    new SlabByteBufferAllocatorImpl( allocatorNumber, slabs, false );
+
                 return allocator;
             }
-            
+
         };
         mms.init( 1, bufferSize );
         return mms;
@@ -58,22 +61,21 @@ public class SlabMemoryManagerServiceTes
     @Test
     public void testFullFillAndFreeAndClearBuffer()
     {
-        
+
     }
-    
+
     @Override
     @Test
     public void testStoreAllocAndFree()
     {
-        
+
     }
-    
-    
+
     @Override
     @Test
     public void testAllocate()
     {
-        
+
     }
-    
+
 }