Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 76481200D46 for ; Sun, 26 Nov 2017 18:09:38 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 74DF0160BFF; Sun, 26 Nov 2017 17:09:38 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id E4C3C160BEE for ; Sun, 26 Nov 2017 18:09:36 +0100 (CET) Received: (qmail 71148 invoked by uid 500); 26 Nov 2017 17:09:36 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 71139 invoked by uid 99); 26 Nov 2017 17:09:36 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 26 Nov 2017 17:09:36 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id C18408068C; Sun, 26 Nov 2017 17:09:34 +0000 (UTC) Date: Sun, 26 Nov 2017 17:09:28 +0000 To: , "' commits@directory.apache.org" , '@gitbox.apache.org, Subject: [directory-mavibot] branch free-page-mgmt created (now bfe2e77) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <151171616863.30624.9551101535486451755@gitbox.apache.org> From: seelmann@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: directory-mavibot X-Git-Refname: refs/heads/free-page-mgmt X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: bfe2e771f278dbcfb1d0b7063a723c62d5746ffb X-Git-NotificationType: ref_changed X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated archived-at: Sun, 26 Nov 2017 17:09:38 -0000 This is an automated email from the ASF dual-hosted git repository. seelmann pushed a change to branch free-page-mgmt in repository https://gitbox.apache.org/repos/asf/directory-mavibot.git. at bfe2e77 merged with trunk revision 1642979 (stashing a lot of untested code as well) This branch includes the following new commits: new 72886fd Added th ebase structure new 4c4a7bc Added some svn:ignore properties new 8c0e34c added a sub-module new 3ff58af created the original project structure new 3fecd1e First injection of classes : they just contain the fields, no logic at all atm. new 16844c2 o Added the results for the insertion/deletion in a page o Added some first methods in the Page interface new efdb900 o Added some (empty) methods in the AbstractPage class o Created a dedicated constructor in the Node class o Added the modified value in the ModifyResult class o Added the BTree constructor, the getters/setters and a first drop of insert() method new 4f021f4 o Added the AbstractPage.findKeyInPage() and compare() methods o Added some missing getters/setters in BTree o Added place holder methods for the insert operation in the Leaf class new cc3603e o Added constructors in Leaf, and the methods used to copy a page and to replace a value in a page o Created some new constructors in AbstractPage o Moved the initialization code in the AbstractPage constructor from the Node class new 59e5835 o Removed some warnings o Added a method to copy a Node o Added some constructors, and the first step for the insert() method in the Node class new 313596e Added a LongComparator new 1e54ef9 o Some renaming o Implemented the insertion into leaf pages o Added some code in the inster method in Node (not finished yet) new cf51432 Added toString methods to ease debugging new a53a04d o Rename the recordId to id, added getId()/setId() methods o Fixed a ClassCastException in Node o Improved the toString() methods new c5bced3 Fixed various OutOfBoundExceptions new b479ed8 o Renamed the AbstractPage to BasePage : this is not an abstract class o Fixed an issue in the way we compute the power of 2 of a number o Fixed a comparison in the Leaf addAndSplit() method in Leaf o Added the addAndSplit() method in Node o Added a dumpPage() method used to pretty-print a tree new 99240bd o fixed some bugs in the Node.addAndSplit() method o modified the dumpPage() method to get a better view o the tree new ec7410c Added some toString() methods new 0742682 o Made the BasePage an abstract class, and renamed it AbstractPage (doing the opposite was a wrong move) o Added the find(K) method new 0bd1f8c Fixed a bug in the find() method for Node : we were selecting the wrong children new 71e9807 Added some tests new da674bb o Fixed the tests o Fixed several bugs in the Node.addAndSplit() method (using the wrong page, the wrong index, in two different cases) new 609cbcc Added a helper method new 05831c1 Used the correct variable new 78d1286 getNbElems now returns an int new 46f152c Added the IntComparator new d8de2e0 Added the Cursor, Tuple and Transaction classes new 5d8febc o Added the brows() method o Added a very first implementation for the transaction handling new fd17ffa o Added tests for the browse() method new dc63ced o Added the delete() method in BTree, with a preliminary implementation that only works for removing in the root page o Added a test for the delete method o Added some classes to propagate the result of a delete operation new db52093 Added some DeleteResult instances new 5f06de4 Added a constructor that takes 2 parameters for simplicity new 3efc284 o Added some of the delete use case implementations new 7c7a554 Added some tests for the deletion on a leaf new 9f09715 Added one more test new 93bb6a5 Inferred the K type from the used comparator, so that we don't get some cast exceptions when storing keys in the arrays new 492ea39 o Fixed the borrowFromLeft() method o Added a test to check that borrowing an element from left is correct new 7bbcbf3 o Fixed many issues in the merge from a right sibling o Added a test for this case o Added some images o Renamed the BorrowedFromSiblingResult class to BorrowedFromLeftResult/BorrowedFromRightResult new 3637e2f Added a new test to check that merging two leaves works new ee857db o Removed the next/prev pointers, as we can't keep them updated when we add a new revision o Replaced them by a stack that stores the current position on the tree when using a cursor o Added commons-collections dependency new 026fbab o Reorganized the DeleteResult hierarchy, adding an Abstract class o Added some javadoc new 4b58255 One more class extends the AbstractDeleteResult class new a63b436 Some more Javadoc cleanup new db45fc1 Last set of Javadoc cleanup. new 86e8797 o Implemented some use case of deletion in a Node o Made the Result fields protected, added some setters/getters o Moved the selectSibling method to the AbstractPage class new 13df2c8 o Fixed some bugs in the Node.delete() operation o Fixed some compilation errors in LeafTest o Added some test for the delete operation new e9f74e3 Added a test for the Page.findPos() method new 3daf88e o Fixed the code that manage the merge of pages which have not enough elements, except when we merge two pages o Reorganized the hierarchy of DeleteResult classes o Added some javadoc o Added the getKey() method in Page new 955307b Added some more deletion tests to cover some more use-cases. new 8ac22fa o Fixed a AOOBE in the Leaf.delete() method o Handled two more use case when a delete results in a merge of pages new 81dbcbf Added some more graphics new d6d3833 o Fixed an issue when a value is deleted on the left of the leftmost leaf o Improved some toString() method o Added some tests new 45b19aa o Added a setRoot( page ) method to the btree, as a helper methd for debug purposes o Added findLeftMost/findRightMost methods to the Page class new 98c3645 o Reorganized the Node.delete() method new a766c4f o Added some Javadoc o Renamed some private methods for clarity sake o Fixed a bug when a key was not present in a node and we remove it new e284690 o Fixed a bug when we delete an element which is the leftmost one in a leaf, and is present in a upper node o Exposed the getNewLeftMost() method in the API new ffd9719 More tests added new 115a72a Fixed a failing test due to the modification of the newLeftMost value new 7f4d713 Minor cleanups new ffecdb4 o Fixed various bugs o Simplified some code in leaf and node o Handle the null values in toString() new 2121cac Added a test to check the removal of elements when a merge occurs in a two levels tree new 6b243e1 o Rewrote the removeKey() method o Fixed some bugs when the pages are being merged during the deletion new f9dee80 Added a first test for a delete operation inducing a merge on nodes. new 1ea9ab2 o Fixed a bug when we were deleting an element which key was present in the root page o Added some more tests new fafa004 Implemented the Node update when the deletion leads to borrow an element from the right Node. new 51ca933 o Added some deletion tests o Added some extra checks o Added some helper methods new 5d0560c adding plugin management section for compiler plugin so on mac os x we do not have compiler issues with generics new da917ce o Added the borrowFromLeft method in Node o Added some tests new 7b8698c Added some more tests new 4f27f74 Added the last missing part of the deletion handling : when two node have to merge. new 7511710 Many fixes to get the delete operation working. new 96273be Added some tests to check that the delete operation works new 4438097 Removed the useless newleftMost field in the Result classes new fcca4ed Fixed a typo in the mail in file headers new d09c12d o Added a getLeftMostKey() method to avoid creating a tuple o Added some Javadoc new 8622fc3 o Added the serializer packahe o Added the ElementSerializer interface o Added the IntSerializer o Added a test for this class new c11e7c3 Added a test and some fixe addition new 729a9c9 Added the LongSerializer class and its associated test new 6428813 Added the Chare and Byte serializers new a1f7a57 Added the short and boolean serializers new 9f2e61e Added the StringSerializer class and tests new 6a5ea05 Added a first version of the DefaultSerializer Some minor formating new 9e6661e o Added a test to check the serialization/deserialization o Injected the serialization into the BTree o Added the File into the BTree o Added a counter of element sin the tree o Added a first draft of the flush() method new c84a178 Removed some useless code new 854d859 o Modified the parameters we pass to the deserialize() method, in order to be able to use some buffering between the file and the byte[] o Added a BufferHandler structure used to bufferize data from the disk and to provide byte[] on demand to teh deserializers new 9535a55 Implemented a read() method (not tested yet) new 0bafad6 o Fixed a bug in the StringSerializer o Created static methods in the LongSerializr class o Initialized the buffer in the BufferHandler when creating it, so that we already have some data in it when we will read o Fixed the read of the btree length in the BTree.read() method o Added a test for the flush/read methods new 23c387c o Created static methods in the serializers new b7e91ef Added the ByteArraySeralizer class and test new d0b1c1e Fixed some bug in the static methods (the controlled length was the Long length) new 3ee6656 Added the BTreeConfiguration so that we can create a BTree with more options. new 9abfd2f o Added a constructor taking a BTreeConfiguration parameter o Added an init() method to separate the construction of a btree from its initialization o Renamed the read() method to load() new 05d990e Added a test for BTreeConfiguration new ac135e9 o Made the rootPage volatile, so that no thread can use it while it's being modified. o Removed the useless commitTransaction() method o Transaction class now takes a Page,not the whole btree. new e57e313 Replace the btree reference to a Page. This is enough to guarantee that once we are done with the root page for this transaction, it can get garbage collected if no other thread is using it. new b7d384c o Get rid of the rootPages Map, we don't need it. o Added a thread used to cleanup the timed out transactions o Added a close() method, used to kill the cleanup thread new 0b72b5e o Added a flag to tell that the transaction is closed o Renamed a variable new 0b84d10 Closing all the btrees after usage new 789f787 Added some more perf tests new 48684f7 Exposed the revision number and the transaction creation date new d1e599e Fixed a bug in the flush method : we were incorrectly writing data in teh buffer when this buffer gets full new 383006e Added a flush in the 5M elements test new 534d4f4 Added a multi-threaded test new c947c89 Added a protection against concurrent modifications new 29fedff Reduced the number of threads and the bTree size for the multi-threaded tests, otherwise the test takes way too long new b70656f Added a test to check that we can use many threads to inject entries in the BTree new 78830ae Minor typo fixing new 37ff124 Added the readTimeOut variable in the BTree, with a default value of 10 seconds new 8682668 Added the classes used by the journal new a2be7a8 Throwing an EOFException when we can't read data in the Journal because we reached the end of it new 9bb736b o Added a first drop of modifications to handle a journal of modifications, when not using the in-memory BTree o Simplified the configuration of the file and journal names new fc187c0 o Some class renaming o Added support for the Journal o Closing the btree when done with it, so that the inner threads are closed too new 050479a Fixed a bug in the way we handle cross-boundary buffer read of values new 9de4d75 o Added the suffixes o The journal thread now stops correctly when the queue has been fully flushed o Dealing with various case of Journal and File name initialization o The BTree now uses a path and a filename o Increased the buffer used to write data on disk to speed up the flush o Empty the journal when flushing the data instead of deleting it new 017f91e Restore the load() method to be public new ddc9b56 Added the poison pill used to stop the journal thread new fd39417 o Cleaned some files when the tests end o Lowered the number of threads used for the write test o Created the 5M element BTree only once new f919ffe Added a configurable buffer size new be90684 Apply the journal if we have one even if the file does not exist new 3f4dca5 Fixed a failing test new d8a1e52 Create a smaller file (1M instead of 5M) new 3b355af o Changed the way we inject serializers in the BTree : we now inject the key and value serializer, and not anymore the key comparator, which is now part of the serializers o Added some missing comparators new 117b8eb o Added a exception o Added a delete(K, V) method o Renamed the find() method to get() o The get() method now throws a KeyNotFond exception if the key we are looking for does not exist : this has been done to allow the addition of null values in a BTree new 7d74887 Added the exist() method, with the associated test new 583af5a o Allowing null value additions o Fixed a /0 error new 75e5032 Added some Javadoc new 1cd897d Added a SoftReference used to store data only when needed. new 4ab5c8f o Added a way to store WeakReferences instead of plain values, in case we want to store a BTree in a file, but not kep all the values in memory. new 9a690a6 Added some needed comparator and serializer for long[] new f0c74e6 Fixed the javadoc new e87d3d9 o Added a name to the BTree class o Created a new package for exceptions, moved the KeyNotFoundException there new a18d160 Added some utility methods new 31665e5 Fixed some compilation errors new 20110bf o Added a very first version of the RecordManager (not finished yet) o Moved some exceptions in a dedicated package new f16a0d8 Make the revision and nbElems visible new 716100b Added an exception when we try to write beyond the file new 9800abc Added static serializers new b5892f5 o Used a ByteBuffer instead of a byte[] to store data o Added a toString() method new 950b3ae Partially working file. I commit it so that it gets visible to others. new cf1eeaf Added a method that stores an Integer in one or 2 PageIOs new cf38585 Added a method to store a Long into pages new e0cf875 o Commented some not functional code o Fixed a bug in the pagePosition computation in storeBytes new c9f925f Added tests for the RecordManager new 6d63026 Added some tests new 29217e2 o Fixed a buffer overflow o Fixed a bug in the long addition in pages o Added a test for long injection in pages new 763f471 Added the first draft of the storeBytes( byte[] ) method. It needs more tests. new 1563695 Added a first test for the storeBytes(byte[]) method. new 2e7f7f4 Fixed bugs in the storeBytes( byte[] ) method new afb4606 Added test for the storeBytes( byte[] ) method new e0997d0 o Fixed a bug in the PageIO.toString() method : direct buffers don't return anything when the array() method is called o Added a way to get the offset of an added page, when many pages are added o Added some constants o Removed the global PAGE_BUFFER variable : it's useless o Fixed the manage(Btree) method. o Renamed the storeBytes() method to store() o Removed commented code new c305fc6 Renamed the storeBytesTest method to storeTest new 365412a The first letter was a lowerCase : made it a UpperLater new ea7ad0c Write the header which was not written new 8476f9b o Added some setters in the BTree class (we need them in order to create a BTree when we deserialize it) o Removed the HEADER_BUFFER static field, it's useless o Added the readInt() method o Added the readPages(offset) method o Added some Javadoc o Added a test for readInt() new 0958622 Added the readLong() method and the associated test new 683d2a6 Added the readBytes() method and the associated tests new 85fe0f2 o Added a BTreeFactory to create BTrees, Nodes and Leaf o Made some of the BTree setters package protected o Node and Leaf class are now public o Added the code taht create the BTrees in the RecordManager new 5e47cbc o Changed the position of the PageIO[] parameter in the store() method, so that we can pass a single page, or many (using ellipsis) new 6664848 Added the SLF4J depenency new de57d38 o Fixed the getFreePageIOs( size )method o Added a test for this method o Added some more elements in the RecordManager test o Fixed the PageIO toString() method new 116fab9 o Created a method to write the header when we update it o Fixed the nbBtree which was not correctly updated o The ValueSerializer was not written, we were writing the KeySerializer instead o The Btree Page nbElem was stored in a Long, instead of an Int new 820f7ca o Forgot to set the comparator new d719585 o Removed the ID from the BTree Page : we don't use it anymore o The revision and nbElems are initialized when the constructor is called o The rootPage is created before calling the init() method, so that we can deserialize a BTree without having to create a rootPage that will anyway be loaded from disk. new 88d40c2 Fixed a compilation error due to the removal of the ID from pages new 2d7de7e o Added e getRoot() method to the BTreeFactory class o The nextPage field is now updated when we inject data in the PageIO instances o Added a setSize() that compute the size of teh data stored in PageIOs o Many fixes in RM in order to be able to write and read back many btrees. It currently works for empty BTrees. o Removed the reference on id in some test o Added a dump() method in the RM (not complete yet) new 43180c3 o Added some method to get access to the managed BTrees in the RM o Added some check on the RM test new d22c3f4 o Added a enum to define the BTree type (in-memory, persisted and managed) o Injected the RM into the BTree o Added an Offset field in the BTree for when it's managed o Update the BTree Header on disk when we modify the content of a Managed BTree o Added toString() methods to the ValueHolder classes o Injected the BTree in the ValueHolder classes o Made the ValueHolder interface public o Added an Offset in the BTree Pages to be able to retrieve them on disk o First drop [...] new abf1ee0 Added data structure images new ab3e4c9 o Incremented the revision before using it, as we start at revision 0 o Moved the flush on disk in the public insert() method, so that the BTree number of elements is updated when we update the BTree header o Fixed a bug in the flushPages() method : we were writing the pages at the end of the file, no matter what... new 337f288 Fixed an offset computation in the BTree Header. new 74c510b Updated the data structure images new 91ef4eb o Renamed the BtreeHeader to BTreeHeader o Added some more data into this class new f07b0ba Added deserializers that take a ByteBuffer as an input. new 6f220ac o Added a method in AbtsractPage to inject a key into a specific position (used by the deserialization process) o Added a method in Leaf and Node to store a value at a given position (used by the deserialization process) o Moved all the BTree common data into a BTreeHeader class o Added the NextBtreeOffset field to manage the links between btrees o Made the MemoryValueHolder public o Improved the ReferenceValueHolder toString() method o Now manage the link between BTrees [...] new 2d5232e Added this class to store header informations about BTrees new 5422e7c Updated the data structure graphics new b66c2fa o Updated the Javadoc o Removed the BTreeHeader constructor 'name' argument new d766745 Refactored the ValueHolder to make it easier to understand and to use new 488e5cc o Added more than one value in a page, stored the btree, and read it back o Fixed a NPE when writing data in a page : when the data was filling the last page completely, that was generating a NPE. new 1d1fb93 o The references to pages are now done using a ReferenceHolder o Renamed the RM.modifyPage method to writePage o Added a first drop of code to manage the injection of values that leads to a page split (not yet functional) new b6df5a4 o Used the BTree.createHolder() instead of crating a new ReferenceHolder in Node. o We can keep all the elements in memory of the bTree is not managed new 2abe86f o The Leaf is no longer responsible to write the modified page on disk, it's done by either the node referring it, or the BTree if the rootpage is a leaf o Added a Node constructor that takes ElementHolder as parameters for managed BTrees o Writing on disk pages when a Leaf has been modified in Node o Removed a wrong operation on nbElems in the serializePage method new c4f3faa o Added the offset the AbstractPage toString() method o Fixed the creation of a new node when the rootPage was previously a leaf o Handled the insertion of pages in a Node, and written those pages on disk There is still one case to handle : the split of a node when it's full. new 783a662 o Create a helper method to create holder. o Modify all the delete() methods to create new holders, which should allow the BTRee modifications to b stored on disk, either for additions, modifications, or deletions (to be tested) new 03c9018 o Made the getOffset() method public to be able to use it from the RM o Fixed the usage of nbElems for Node : it's a negative value, we have to make it >0 to create the arrays o Correctly write the Nodes new 25e67e2 o Fixed the Node.setValue() method, we don't have to create a ElementHolder when we get one as a parameter o Correctly read the Node references to children (they are Offset, not pages) new fffad21 o Added the code that fetch an element from the disk, when it's not present in memory o Propagated various exceptions up to the top o The RecordManager was not stored into a BTree we read from disk, leading to NPEs new de67ddd Creates a new SoftReference when the element has been discarded from memory new efbfb39 Propagated the Exception new 949255f Added an @ignored performance test new c050b88 Made the createLeaf()./createNode() method return Leaf/Node instead of Page new 4cc828e a builder class to build a BTree from bottom new a86c49c o build the tree based on the number of keys in the node o removed the hard coded tree building code new 25b9a8e o fixed an NPE o added test class new ec37c76 fixed the key index new 9eb3d13 added 'public' qualifier new 1ed0f53 utility for sorting large number of keys using secondary storage new 6991adc fixed a typo in the package name and moved Strings class to util package new e77c118 merged multivalue branch new 92e186e Fixed a test error when it was ran more than once. We were trying to delete the mavibot file, when the created file was mavibot.db new f7539fb Added the copiedPages lists into the results new 1006e75 modified the internal insert method to return the InsertResult type new 5fe207b o moved the persist mode handling code to init() method o many trivial javadoc fixes new 320fe59 o fixed the initialization of BTree when a type is set o fixed the constructor with config new 22719bb added type parameter new ce9ab09 o fixed some miscellaneous issues o added a new method to return a new managed btree o modified RecordManager tests to utilize the new changes new 2951f0c Fixed an issue with the RM default page size : if we set it to something different than 4096, the test is failing. We must inject the correctpage size when we create the RM in those tests new 017a9a7 Make the test really inject 1M elements new be3ac52 o added a static instance o fixed the missing null value case new 7f77efe hold the value container in a soft reference if the parent btree is in managed mode new 40cfcba o added some more constructors o removed the allowDuplicates flag and replaced it with the one from header o moved the header update block from insert(k,v) to insert(k,v,r) new 8eb814b added a integer flag for allowing duplicates new e23d75b o managed btrees are loaded when needed o added a new btree to hold the name and offset of each managed btree o ignored the tests till we finalize the RM format and functionality new 9f99bab o first shot at freepage management o fixed some managed tree getters new 3626701 tell record manager about the copied pages new cc8d978 moved keepRevisions flag to RecordManager new 34469fb fixed a typo in the page size new 33a3f32 do not treat the current page as a copy of it is the first insertion new 131b1a1 fixed an issue with the reused buffer new bd7a7d3 o added commons-io to use the FileUtils in tests o added a test for freepage management code new 02019b0 Updated the way the free pages are managed. Some tests are failing. new 225bd9f Fixed a bug in the LongArraySerializer : we weren't allocating enough butes for the serialized array. new 54454df o fixed the size of children's array o fixed the getRightmostKey() method new 9a6b7e2 update offset BTree when root page changes new c27ba3e added a FIXME note new 7f49eff Formatting the code new 318ada6 Formatting the code new ed0b95d removed the offset btree new 5c1a884 set the page size to default value new 6abe58a o Removed an @Ignore for a test o Added some sysout new 524fa38 o The first root page is now used o Improved a toString() new bb16956 o Update the rootPage offset o Adding a load of logs o Flushed all the PageIO in one call when updating the BTree header o Fixed the reload : we were creating a new page when we tried to update the last page, because of the wrong test : if ( fileChannel.size() <= ( pageIo.getOffset() + pageSize ) ) instead of if ( fileChannel.size() < ( pageIo.getOffset() + pageSize ) ) in the flushPages() method o Removed useless methods new b8d4c11 o Speed up the update by using a global buffer isntead of allocating a new one every time we need to update the header o Removed useless fields new 843fa8b fixed the wrong tree variable passed for loading new 382cc93 o Added the lastOffset pointer in the Page o Store the lastOffset in page referenceHolder o Added some javadoc o Improved the way we pdate the free page, leading to a gain of 25% n speed o Improved the output of some tests to provide more realistic numbers new 241e0e1 o do not attach internal BTree offsets to the main data BTrees o skip freepages with offset 0, they are always in-memory and not valid for storing new f7acad8 fixed the test case new cea9b97 allow custom comparator new cb8e215 o added a checks to avoid ClassCastException while deriving the key type o set the comparator also while setting the serializer new f324cab o fixed an issue with direction change in moveToNextNonDuplicateKey() when the cursor is on the last key o added tests new 4d0e13b o set the BTree offset after loading the duplicate btree o reset the page data before reuse new 3934082 Fixed a bug in the delete() method : the page was not copied if we haven't removed any key in it new 0e9870f fixed a typo new 09eb272 renamed the readPage*s*() method to readPageIOs() new c00947a set the offsets while reading the page new 49bcab4 Removed a useless cast new 898248a o Initialized the offset and lastOffset to -1 for new Page o Added a logger for BTree new 8c0f718 o Added a dedicated logger in RM to logs the RM checks o Added logs o Added a check() method which control the file after each update o Called the check() method after each update o Fixed the readPageIOs() method so that we don't read extra pages when the last offset is -1 o Changed the way we are managing free pages : there are now added before the first free page, instead of adding them at the end of the list of free pages. This makes the lastFreePage pretty useless no [...] new 6742a42 Added the part that checks free pages new 493a5bf Some more checks for the RM new 8feb57c o Store the RecordManager header in a full PageIO o Added the checkRoot preliminary implementation new a290434 Added a test that demonstrate a pb in a managed btree with duplicate values new 9c01340 Made the dupsAllowed value been stored in a byte instead of an integer. new cf2d2a4 Minor formatting new 7b4b312 Fixed a bad increment in the position while reading the first btree new bb15cad Rmoved the @Ignored new fb67b57 o reverted the allowDuplicate flag to int value o fixed the offset comparision (the default value was set to -1 in a previous commit) new 10235df Added a test injecting 128 values with duplicates new 97a4ceb o Update the lastOffset of pages o Update the BTree header when we do an update in the BTree, otherwise the old rootPage would be pointed by the BTree and by the FreePages list, and be reused by another BTree, leading to inconsistencies. o We don't anymore update the lastFreePage (it's useless) o Commented the checkRoot() method, it's not yet completed new 294675b load duplicate trees based on their offset instead of name new 329f59c moving to directory project new 08e4396 Added some images new ab8bbbb renamed the package and the artifact id new 67e802e Added the dsitribution module new b6a58d0 Added some missing requied files, fixed the pom.xml file new aed545f Fixed a typo new f36ac74 Updated the poms to get the release happy new 0f9c003 Moved images new 1248572 Excluding images from apache-rat, as they are binaries new 92b08b3 Removed the tar.bz2 format, remove the README new e0031ba Generate a jar instead of a bundle new c4eaa23 Aded the tools-maven-plugin dependency new b4aca9b Ignoring files new e50ad51 Cleaned up the pom new 55489b2 some fixes in the pom.xml new 4f8aa56 Added the bin in rat exclusion new 46107be Deleted the empty diectory new 73ccbc2 Removed the manfestLocation directive in the felix plugin new 3158cdd Removed the 'i' that has been injected at the first position with vi new dfe6084 Another attempr to get rid of the legal-gfiles error... new 4b1aaa4 Some fix in the main pom relative to the maven release plugin new 93b5bad Removed the plugin versions from the pom, we already have them in the project pom new 65bf7ac Removed some plugins from the pluginManagement, they are already declared in project new f3005b3 [maven-release-plugin] prepare release 1.0.0-M1 new 7afdef3 [maven-release-plugin] prepare for next development iteration new 7861854 rolling back to 1.0.0-M1 new aeb94d5 [maven-release-plugin] prepare release 1.0.0-M1 new 97da0b1 [maven-release-plugin] prepare for next development iteration new 0c49762 Made the generic easier to use for the end user. Fix for MAVIBOT-2 new 5b63f1c Updated the mail link new 957c02c Fixed many warnings new fd388ed Some more warnings removal new c05eb3f Some more generic fixes new d9bdedd Use TemporaryFolder rule for all test, should solve build issues on Windows. new e2d3087 o write to journal after completing the operation (MAVIBOT-5) o truncate the journal after applying and after flushing the data to disk new 13e1f2a Cleaned the generics for the BTreeFactory class new 4e68a05 More generic improvements new f308dc8 Renamed DuplicateKeyMemoryHolder to MultipleMemoryHolder new c6064e0 Implemented the Closeable interface (MAVIBOT-1) new 561e950 Switched to Java 6 instead of Java 7 new c798dbd Added the Javadoc and xref generation new 98cb012 avoid creating a sub-tree if only one value is present for a key in a tree that allows duplicate keys (MAVIBOT-8) new 19e94b0 Added some counters new dcb901e Added a schema used in the site new 47b4b32 o Replaced the ReferenceHolder by a CacheHolder everywhere we have a managed BTree o The offsets are now set in the CacheHolder class o Added a EhCache instance with a default value of 1000 o Added a configuration element to set the cache size new ded3a2c Forgot to commit the pom which refers to the ehcache dependency new 67f1434 Fixed a constructor, a parameter was ignored new ea9dcc8 Split the BTree packages into 2 different packages : - one for in-memory btrees - one for managed btree new 0cb9eb3 Added a KeyHolder to store the key or a reference if it's not yet deserialized new 5cbf456 Removed a useless data structure new 8ddee7e Avoided useless ByteBuffer -> byte[] -> ByteBuffer copies when dealing with page reads new 9b04590 Forgot to commit the addition of a utf8ToStrin(ByteBuffer) method new d2c126f o Changed the key serialization so that we load KeyHolders instead of Keys new 3060e18 Added some javadoc new 9a63479 o Get rid of some unused code o Added some missing generics new bd2f26e o Renamed the CacheHolder to PageHolder, to reflect the data it stores o Simplified the generics in use for this class new 65c15ad Injected the type into the serializers new b64760e Applied a lot of changes to be able to inject more than 50 000 entries in a BTree (mainly dealing with the replacement of WeakReference with a cache). We now have two different ind of BTrees : - managed (ie, written on disk) - in-memory Duplicate values are stored as an array of values up to a number of values, then a sub-btree is created (for managed btrees only). new 65d627d Speedup : throw a static exception when a key is not found, instead of creating a new one new bfd8beb Applied the KeyNotFoundException speedup in the InMemory BTree new 3957061 [maven-release-plugin] prepare release 1.0.0-M2 new d6cf654 [maven-release-plugin] prepare for next development iteration new 1791200 o Added a getKeyHolder method in Node, it's needed if we want to get the raw value o A fix in the ValueHolder.hasNext() method : we were going one step too far in the elements stored o The ValueHolder.remove() method was growing the array used to store the element instead of decrementing it new 51a7fc6 Removed the useless comparator field : it's deduced from the keySerializer new 7b4217d Used TupleCursor instead of CursorImpl new 97ae523 Renamed CursorImpl to TupleCursorImpl new 1e15f10 o Rename dupsContaier to valueHolder o Fixed some methods in InternalUtils, they weren't initializing correctly the parentPos.valueHolder new af39573 o Modified the way we handle the values when we have duplicates. We now use either an Array or sub-btree o Modified the cursor and the way it works (no more linkedList created, we use a direct array) new 567fa8d Removed some useless sysout new 8ab562a o Shared the cache with any sub-btree, to avoid creating a new one for each sub-btree new 5c4023e o Fixed a bug in the way we were serializing keys in pages o Added a way to inject a different cache size new fb391da Fixed a bug in delete : when we remove a value in a ValueHodler having more than 1 value, we have to copy the ValueHolder and delete the value in this copy. This was not what we were doing, leading to some modified ValueHolder in the previous revision. new aab254c Fixed some potential NPE when browsing an empty BTree new 286c503 o Fixed some issue when browsing from a non existing key outside of the range of keys new 8047399 o Some more fix for the browseFrom() method : we were not remembering the current position o We also started from the first element of a node, which is not good for the browseFrome method new 94d6a8b Added some methods to test the browseFrom method new 95e2226 o Huge refactoring in the way we hold ValueHolder o The TupleCursor interface have renamed methods and added ones o Many fixes in the serialization/deserialition o SpeedUp in managed BTrees new a26e299 added a test to check the root page count new 543c0eb fixed the wrong count new 8a49554 fixed wrong index value new cabc300 o modified the TupleReaderWriter interface for better control in implementations o updated the managed BTree builder class to use RecordManager and renamed o added a test class for managed BTree builder new c96a2c1 o Added a dump(PageIO) method for debug purpose o Fixed a bad comparison that made the conversion of an array to a subbtree too early, and resulted in a deserialization of an array to a subbtree. new 9681fa8 o Fixed some bad positioning in the nextKey method, when we try to move after one key which is in the last page new 09adba0 Don't store the sub-btree into the managedBTrees Map, so they aren't stored in memory for ever even when a page is discarded new da8c39b Update the value when we try to insert an existing value (because the value might have changed but the comparator does not see this modification) new 8ef5de2 Removed some System.out.println new b4a9711 Fixed a big bug in the delete operation : we were copying the modified page into a new page, smaller from the original one, but all the values were copied, which led to a ArrayOutOfBoundException. This exception was silently ignored... new 084496a o The ElementHolder.getValue() does not need a BTre argument anymore o Renamed the ParentPos.dupsContainer to valueCursor (an attempt to close the gap with the managerBTree ParentPos class) o Using the TupleCursor interface instead of the TupleCursorImpl class o Some minor cleanup new e210afc The value cursor is now created in the Leaf new 41ae03e Fixed typoes new 0c37369 o Heavy refactoring of both managed and in-memory btree, which are now sharing more code (Result classes, Page, ParentPos, Transaction) o Lots of fixes in the cursor code o Fixes in the tests to reflect those changes new ff4e511 o Moved some more Result classes to a common package o Fixed a potential ByteBuffer modification in Strings o Removed some warnings new 2adbafd o Fixed some warnings o @Ignore a debug test new 0a0f9dc [maven-release-plugin] prepare release 1.0.0-M3 new bcc728d [maven-release-plugin] prepare for next development iteration new 96d27b8 Modified the tests which took too long to run new 26516dd o Removed some useless methods in the in-memory btree and in the in-memory BTreeFactory class new 597525c Don't anymore update the RecordManager header when we use a free page, but do that globally, in the insert/delete method. This save a lot of updates. new 3241e4b Some more big refactoring : o Created a BTree interface, and an AbstractBTree class to gather the common methods of the managed and inMemory BTree o Renamed the managed and inMemory BTree to PersistedBTree and InMemoryBTree new 962c3c0 Some more refactoring : o An AbstractPage has been created which share the methods and fileds for the two types of trees, and the AbstractPage in managed and in-memory have been renamed o An AbstractTupleCursor holds the shared methods and fields for the TupleCursor implementations o A KeyHolder class has been created and is now used by he two BTrees o The getKeyType() method has been removed o The ElementHolder class has been removed new 5437fba Renamed the managed package into persisted new 938d50d o Added a ValueHolder common interface, and an AbstractValueHolder class o Use an Array to store values in the InMemory Btree, instead of a simple value. A little bit more memory used, a little bit slower, but benefits from a common access with the Persisted Btree o The ValueArrayCursor is now shared new 4053087 o Moved the getCursor(), findPos(), arrayContains(), btreeContains(), contains(), addInArray(), addInBtree() and ad() method to the AbstractValueHolder new 316afb2 Replaced the reference to InMemoryValueHolde rby a reference to the ValueHolder interface new 75f90ef o Fixed a NPE in the Array holding for values o Added a PageHolder common class for in-memory and persisted btrees o The abstract in-memory and persisted page class have been removed o The in-memory/persisted Leaf classes have been removed to InMemoryLeaf/PersistedLeaf new bac7877 Fixed some Javadoc new 17e7013 o Removed the children array from the persisted Node class o Updated the persisted classes accordingly new 095e861 o Moved the afterLast and beforeFirst methods down to the AbstractTupleCursor class o Added the getValue( pos ) method in AbstractPage new 5988140 Merged the various TupleCursor interface/abstract Class/classes into one single shared class new efe03ee Moved many methods from the in-memory and persisted Node into the AbstractPage class new 197d15a Renamed the Node classes to InMemoryNode and PersistedNode new dadf97b Mobed the MergedWithSiblingResult class in the btree package new 34fd8c7 Moved around many classes in order to be able to package protect them (and their methods) new dd33402 Made many classes package protected new adad48b Deleted two packages new d792ee9 Made many methods and classes package protected. Some javadoc cleanup new 9332a85 o Cleaned the cache at shutdown o Close the Btree and deleted the temp file in one test new bfbb5ac Was a bit too aggressive when cleaning the cache... It has to be alive to remove all. new a4a2d09 Closing all the BTrees new 51704d2 Added some cleanup in tests new 563c304 o Merged the PersistedBTreeFactory and InMemortFactory into a single BTreeFactory class o Added the isLeaf/isNode methods in Page new 51c1ba4 Removed a commented method new cf40256 Made the insert(K, V, revision ) package protected new 4ab3f6c Add many exceptions classes new d2bff20 o Fixed MAVIBOT-20 (the allowDuplicate flag was ignored) o Added many specific exceptions to replace the RuntimeException beig thrown (MAVIBOT-30) o No need to call the BTree.init() method anymore for most of the cases o Removed the RevisionName* classes from the persisted package o Removed the spaces at the end of each line new 35b4ce8 Made the RevisionName* classes package protected new c000d19 Formatted the code new 5da15a9 o Used PageHolder instead of PersistedPageHolder when we can o Added some Javadoc new f10e0c4 o Added the WriteTransaction class o Renamed the Transaction class to ReadTransaction o Modified the PersistentBTree code to leverage the WriteTransaction, if created new 3008996 o First drop of transaction support. It really does nothing but encapsulates the transaction mechanisms to get it working when t will be ready. new d23ef38 Small improvement in serialization new 270f79b The Transaction class has been renamed to WriteTransaction new 0e8e542 Another small serialization optimization new 88cc6bf Added some generics new 1290224 o Added the NameRevision class to be used by the BtreeOfBtrees, and the associated comparator and serializer o The RevisionName class inherits from Tuple now new 628c5cd o Added the BtreeOfBtree tree o Removed useless constants o Created a helper method for file creation o The RMHeader now contains two more pointers to the BOB trees o Removed all the references to the LastFreePage : t's never used new e0f8ea8 Formatting new 19222a2 Increased the memory used by tests, and change the GC settings new 6f66163 Updated an image new 944eed3 Improved the toString() method new b1634ba Created a branch to commit the addition of transaction support new a7c07b6 Created a branch to commit the addition of transaction support new 0676fc6 Checked in the code I'm working on in a branch new bae6c91 o Get rid of the WriteTransaction class, it's now replaced by a simple flag o We don't support the explicit transaction. Only automatic transactions are supported. o Removal of the synchronized sections new 1ac2349 o Many changes in the RecordManager to make it possible to add new B-trees, and to insert values in them. o The file layout has been changed. o The write transaction is now implemented o revisions are created and kept on disk o Still not possible to read back the file, and the CopiedPage btree is not updated new 13c3f6e o Injecting the rootPage in the BTreeHeader will compute the rootPageOffset if needed (no need to inject it) o Added the rollback() call in the insert method o Written the rootPage on disk when we have a split new 4662feb o Modified the BtreeEnumType to contained specific types for BOB and CPB btrees o Fixed the RecordManager header update on disk o Added some logs and a dedicated logger new 5403983 o Implemented the load method for persisted btrees new 518c3c7 o Fixed a failing tests when we are reopening a BTree, as we should not see the old revisions o Added the EmptyCursor used when we have no element to return o Fixed a NPE new 0a15ae5 Added an empty constructor, used by the EmptyCursor constructor new 40f4ff0 Fixed some failing test, as the brwosefrom() method was not handling absent revisions new 7ccc924 Added missing headers new f41f969 [maven-release-plugin] prepare release 1.0.0-M4 new 288ace7 [maven-release-plugin] prepare for next development iteration new edc7d1a Fixed the delete operation when used with transaction on a persisted btre. new 44b31f0 o Fixed some tests o Added the EmptyValueCursor cursor for when we don't have any value to return o Managed the missing revisions i various method in AbstracBtree new 7c2dcf3 Fixed a failing test new a18adcf Updated the BtreeHeader image new 8ae1ff5 Switched to 1.0.0-M5 new a3fff6f Updated the date to 2014 in Notices new ffa3426 o Fixed a bug in dups value handling : we weren't storing the new btreeHeader of sub-b-trees when we add a new value o Fixed a bug in the nextKey() method o Added a test (ignored atm) new 9f41ccc Massively improve the performances by removing the dump of free pages used only for debug purpose... new cabb249 Removed a system.out new 1d21e59 o Modified the PersistedBTree initialization to use the parent cache and readTransactions set when it's a sub-btree o The PersistedBTree.getBtreeOffset() method now correctly return the BtreeHeader offset, instead of the BtreeInfo offset o The RecordMaager.loadBtree() method takes the parentBtree as a parameter if required o Removed some commented code new 7e0d56f Many changes : o We now use a Transactionmanager (the RecordManager for persisted btrees, and a dedicated InMemoryTransactionManager) o transactions are automatic, and inner transactions are committed by the parent transaction o The KeyNotFoundException is propagated new 852b2a2 o Fixed the multi threaded insert test : the InMemoryTransactionManager was not implementing any of the beginTransaction/commit/rollback operations... o Fixed a bug in the RecordManager.commit() method : we were not returning immediately when the number of pending transaction was 0, leading to a double decrement of the lock hold. new 7e025d8 Improved the output of the toString method to generate hex values for offset new 24ef44b bumped up version to the latest snapshot new 05a80b7 create a new instance if the INSTANCE field is not found new aa85f3f o added a utility to inspect the DB file o modified the visibility of few methods in RecordManager to make them callable from the MavibotInspector class o made all check/dump methods to print to standard output (a file stream support will be added later) new 4763b4c o Created a method to print out the checked pages o Using int[] instead of long[] for checked pages o Made the non existing pages shown as '.' (as an int might have moe bits than existing pages in the file) new e525587 Moved the check methods out of the recordManager, otherwise this class would be overly long. They are now in MavibotInspector. new 28b7820 o Added the checkOffset helper method o Checked the RecordManagerHeader pointers (BOB and CPB) At this point, we should check the BOB and CPB before checking the other trees new 67f7928 o Added some more methods to check the btrees. We now have a dedicated method for the BOB and CPB checks (not yet finished). o Added a helper method to update the checkedPges o the checkBtrees is not called, as it's buggy. new 4cd72ce Added more methods to check the btrees. We are now analysing the Btree info page, and go down the btree. new d418f0a Added some extra tests new 1d346b5 Cleanup the code, removing useless methods and useless parameters : we are *not* rebuilding a tree when we check it ! new 83a2535 o replaced exceptions with a combination of sysout and return statements o javadoc typo new 0f01a84 o moved the offset setting lines from deserialize() to readPage() o made the loadBTree() method package protected to access it from MavibotInspector new 3cb5b98 o added code to check pages of all the managed BTrees o ignored a test new aadd61f Processed the full Btree of Btrees. We now are able to read all the entries in it. new ca03d10 o Added the check for user's B-tree. Currently, we are only checking the b-tree header and the b-tree info. o The updateCheckedPages has been changed to not generate an exception when a page has already been seen, as this will occur many times : first the info page is shared between all the b-trees, second many pages will be shared between two versions of a b-tree. Bottom line, we have to change the way we show the checked pages, bits are not enough (it would be better t [...] new 37120d9 o We know dump the page used by ever b-tree (and every revision) o Improved the Info page dump using hex offsets new c6e909c o Added the check of user's btrees, when they hold simple values (sub-btrees are to be done) o Added the needed BtreeInfo class in the inspector o Made some fields package protected in RecordManager new d11a180 Added the code to check the CopiedPages b-tree. We now are checking the full file, except the sub-btrees. new e7888f1 o Added support for sub-btree check. o commented the copiedPagesBtree check, as we have some issue with it atm (seems like the longArray serializer is not working as expected) new e53edf6 o Fixed the LongArray serializer o Added a test for the LongArraySerializer new 9c63c97 o Fixed the CPB generation and check. o Fixed the LongArraySerializer to fix the CPB storage There is still a pb with the LongArraySerializer, which is not symetric, due to the way we serialize values... It has to be fixed new 096ba4b Fixed a typo new fff4759 created a static instance of KeyNotFoundException and used it wherever possible new 5c87ae9 Added a test new 9375bc7 Removed dead code new a473ffc Added the code that allows us to gather all the updates made on many BTrees within one data structure globally validated when we commit a transaction. o We now have a Map containing the current revisions of all the btrees, and a Map containing the new revisions o Added some check to protect the user against operations done on a BTree without recordManager o Committing the transaction for a delete operation (this was missing) o We don't anymore start a transaction for sub [...] new 196231c Removed some useless import, fixed some warnings new 08af34a Removed unused variable new 52590ea Added some check to forbid operations on a BTree without a transactionManager new c16c368 Set the BOB and CPB btrees' cache default size to 1000. That solves the OOM error we get when we inject a lot of elements, as the Cache was unlimited. new 3cbd7ba merged trunk changes into the branch new daf296d Merged the with-txns branch into teh trunk new 5da6329 o Use the newBtreHeaders Map only when processing an update, instead of using the current's one. This allow all the modifications to be waiting for the encapsulating transaction to be committed. o Fixed the TxnLevel counter manipulation : we weren't correctly decrementing it when we got some exception o Close the recordManager in tests new 846c5bd o avoid copying pages and incrementing revision when the key and value already exist (MAVIBOT-39) o do not create value holders in sub-btrees (MAVIBOT-38) o updated serialization code in RecordManager to handle the changes made to sub-btrees o added a new cursor to browse keys of sub-btree o added test for KeyCursor new 9db86af added support to create sub-btree manually rather than using a series of insert operations new b35b28f o removed the 'static' qualifier of the header buffer variables o renamed loggers new 5c7f7da added a method to set the value array to null (this is mainly used by the bulk loader to avoid OOM error) new 7be3618 bumped up the slf4j version new 4e55469 o replaced ehcache's Cache with LRUMap o updated PersistedPageHolder constructor to NOT to hold a reference to the Page (this will be reloaded or will be fetched from cache this fix helps in avoiding OOM issues during bulkload) new 58fe2da removed dependency on ehCache new dc8f135 Don't check the firstfree page if it's -1. new 8475e11 o Added a constant for ROLLBACKs o Added a check after the RM initialization o Removed a check that is done too early o Fixed a BufferUnderflow error : we were trying to read too much data in a pageIO while logging the content of a page new 3f41e8a Added some commented test for free page management new b661d05 [maven-release-plugin] prepare release 1.0.0-M5 new 7b3b502 rollbacked the release prepare, as we have had a error 500 new 229036d [maven-release-plugin] prepare release 1.0.0-M5 new f63e8bf Reverted again... Cannot create the tag on SVN :/ new 980be82 [maven-release-plugin] prepare release 1.0.0-M5 new 6dd0f12 Reverted again... Cannot create the tag on SVN :/ new 76d7497 [maven-release-plugin] prepare release 1.0.0-M5 new 0910ebf Rollbacked again... WTF vi mavibot/pom.xml! I still cannot create a tag using the mvn release:prepare command... new e8a5018 Fixed some compilation errors new b3c4ed9 Pointed to project 32, moved the properties to the parent pom new 2081c36 [maven-release-plugin] prepare release 1.0.0-M5 new 777c8ca [maven-release-plugin] rollback the release of 1.0.0-M5 new d0f6220 [maven-release-plugin] prepare release 1.0.0-M5 new cb2a6bb [maven-release-plugin] rollback the release of 1.0.0-M5 new 7c067e8 Replave the tags/1.0.0-M5 in the scm part by trunk new 0bfbd18 [maven-release-plugin] prepare release 1.0.0-M5 new a87cbd2 [maven-release-plugin] prepare for next development iteration new ba5a83b set nbUsers to zero in the clone new f3dd134 o made CPB field and checkOffset() method package protected o added a test that demonstrates bad offset values present in CPB after reloading RM new 18dd174 Fixed the bad CPB offset (due to a wrong LongArray deserialization) new 5b8cc96 a new data structure to hold revision number and offsets of the copied pages of that revision new b6102da o added a class for reclaiming space by freeing up the copied pages o the copied pages are now stored in a concurrent hashmap instead of a BTree o the copied page map is processed after reaching a certain write commit count o updated a test and removed another unused test new 32b7b4b o added support for replacing value of an existing key o fixed an issue in InMemoryBTree when a key already exists o fixed an NPE in findLeftMost() findRightMost() of PersistedLeaf of a persisted sub-BTree o made RevisionName serializable o added and updated tests new f624aa7 made the classes serializable new b7f7834 fixed the free() method, this was not freeing the associated PageIOs new 52dd1d7 branch for testing free page management code new 7c13134 removed COPIED_PAGES_BTREE type new 2d92852 fixed the way sub-btree is built new b292bdd protected accessor to the internal sub-btree new 2d56ed4 fixed javadoc new 7996b04 o removed current and previous CPB offset references o modified the structure of BoB and changed the way RM is loaded o added ability to mark a PageIO as freed o added a check to detect a free page before freeing a page o removed storeRootPage() method o added support for deleting managed and internal sub-btrees new 748d237 o new data structure to hold revision and associated BTreeHeader's offset o the comparator and serializers new 7ee04e6 fixed bad method name new 685d271 fixed a NPE reported by findbus new 292af68 o optimized the addition of a single value o removed dead code new 53990b3 o added support for chopping a tree upto a given key o added a method to count the number of keys present upto the given key new a0c9470 fixed some edge cases new bfe2e77 merged with trunk revision 1642979 (stashing a lot of untested code as well) The 508 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. -- To stop receiving notification emails like this one, please contact ['"commits@directory.apache.org" '].