Author: kayyagari
Date: Mon Jun  3 17:30:32 2013
New Revision: 1489069

URL: http://svn.apache.org/r1489069
Log:
fixed an issue with the reused buffer

Modified:
    
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/RecordManager.java

Modified: 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/RecordManager.java
URL: 
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/RecordManager.java?rev=1489069&r1=1489068&r2=1489069&view=diff
==============================================================================
--- 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/RecordManager.java
 (original)
+++ 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/RecordManager.java
 Mon Jun  3 17:30:32 2013
@@ -2050,12 +2050,10 @@ public class RecordManager
         {
             return;
         }
-        
+
         // if the btree doesn't keep revisions just add them to the free page 
list
-        if( !isKeepRevisions() )
+        if( !keepRevisions )
         {
-            PageIO[] pages = new PageIO[freePages.size()];
-            
             int start = 0;
             PageIO tailPage = null;
 
@@ -2077,31 +2075,29 @@ public class RecordManager
             tailPage.setNextPage( NO_PAGE );
             tailPage.setSize( 0 );
             
-            pages[0] = tailPage;
-            
-            if( freePages.size() > start )
+            try
             {
-                for( ; start < freePages.size(); start++ )
+                flushPages( tailPage );
+                
+                if( freePages.size() > start )
                 {
-                    long nextOffset = freePages.get( start ).getOffset();
-                    tailPage.setNextPage( nextOffset );
-                    
-                    PageIO tmp = new PageIO( nextOffset );
-                    tmp.setData( data );
-                    tmp.setNextPage( NO_PAGE );
-                    tmp.setSize( 0 );
-            
-                    pages[start] = tmp;
-                    
-                    tailPage = tmp;
+                    for( ; start < freePages.size(); start++ )
+                    {
+                        long nextOffset = freePages.get( start ).getOffset();
+                        tailPage.setNextPage( nextOffset );
+                        
+                        PageIO next = new PageIO( nextOffset );
+                        data = ByteBuffer.allocateDirect( pageSize );
+                        next.setData( data );
+                        next.setNextPage( NO_PAGE );
+                        next.setSize( 0 );
+                        
+                        flushPages( tailPage, next );
+                        tailPage = next;
+                    }
                 }
-            }
-            
-            lastFreePage = tailPage.getOffset();
-            
-            try
-            {
-                flushPages( pages );
+                
+                lastFreePage = tailPage.getOffset();
             }
             catch( IOException e )
             {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to