/** * Creates a new transaction instance * * @param btreeHeader The BtreeHeader we will use for this read transaction */ public ReadTransaction( BTreeHeader<K, V> btreeHeader, ConcurrentLinkedQueue<ReadTransaction<K, V>> readTransactions ) { if ( btreeHeader != null ) { this.revision = btreeHeader.getRevision(); this.creationDate = System.currentTimeMillis(); this.btreeHeader = btreeHeader; closed = false; } this.readTransactions = readTransactions; }
/** * Creates a new transaction instance * * @param btreeHeader The BtreeHeader we will use for this read transaction */ public ReadTransaction( RecordManager recordManager, BTreeHeader<K, V> btreeHeader, ConcurrentLinkedQueue<ReadTransaction<K, V>> readTransactions ) { if ( btreeHeader != null ) { this.revision = btreeHeader.getRevision(); this.creationDate = System.currentTimeMillis(); this.btreeHeader = btreeHeader; this.recordManager = recordManager; closed = false; } this.readTransactions = readTransactions; }
/** * Store the new revision in the map of btrees, increment the current revision */ protected void storeRevision( BTreeHeader<K, V> btreeHeader ) { long revision = btreeHeader.getRevision(); synchronized ( btreeRevisions ) { btreeRevisions.put( revision, btreeHeader ); } currentRevision.set( revision ); currentBtreeHeader = btreeHeader; // And update the newBTreeHeaders map if ( btreeHeader.getBtree().getType() != BTreeTypeEnum.PERSISTED_SUB ) { transactionManager.updateNewBTreeHeaders( btreeHeader ); } }
/** * Store the new revision in the map of btrees, increment the current revision */ protected void storeRevision( BTreeHeader<K, V> btreeHeader, boolean keepRevisions ) { long revision = btreeHeader.getRevision(); if ( keepRevisions ) { synchronized ( btreeRevisions ) { btreeRevisions.put( revision, btreeHeader ); } } currentRevision.set( revision ); currentBtreeHeader = btreeHeader; // And update the newBTreeHeaders map if ( btreeHeader.getBtree().getType() != BTreeTypeEnum.PERSISTED_SUB ) { transactionManager.updateNewBTreeHeaders( btreeHeader ); } }
position = store( position, btreeHeader.getRevision(), btreeHeaderPageIos ); LOG_PAGES.debug( "Writing BTreeHeader revision {} for {}", btreeHeader.getRevision(), btree.getName() ); StringBuilder sb = new StringBuilder(); sb.append( " Revision : " ).append( btreeHeader.getRevision() ).append( "\n" ); sb.append( " NbElems : " ).append( btreeHeader.getNbElems() ).append( "\n" ); sb.append( " RootPage : 0x" ).append( Long.toHexString( btreeHeader.getRootPageOffset() ) ) .append( Long.toHexString( ( ( PersistedBTree<K, V> ) btree ).getBtreeInfoOffset() ) ).append( "\n" ); LOG_PAGES.debug( "Btree Header[{}]\n{}", btreeHeader.getRevision(), sb.toString() );
insert( key, value, getBtreeHeader().getRevision() );
insert( key, value, getBtreeHeader().getRevision() ); delete( key, getBtreeHeader().getRevision() );
long oldRevision = oldBtreeHeader.getRevision(); if ( oldRevision < newBtreeHeader.getRevision() ) btreeRevisions.remove( oldBtreeHeader.getRevision() );
PageIO[] rootPageIos = serializePage( btree, btreeHeader.getRevision(), rootPage );
PageIO[] rootPageIos = serializePage( btree, btreeHeader.getRevision(), rootPage );
btreeRevisions.remove( oldBtreeHeader.getRevision() );