This list is closed, nobody may subscribe to it.
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(139) |
Aug
(94) |
Sep
(232) |
Oct
(143) |
Nov
(138) |
Dec
(55) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
(127) |
Feb
(90) |
Mar
(101) |
Apr
(74) |
May
(148) |
Jun
(241) |
Jul
(169) |
Aug
(121) |
Sep
(157) |
Oct
(199) |
Nov
(281) |
Dec
(75) |
2012 |
Jan
(107) |
Feb
(122) |
Mar
(184) |
Apr
(73) |
May
(14) |
Jun
(49) |
Jul
(26) |
Aug
(103) |
Sep
(133) |
Oct
(61) |
Nov
(51) |
Dec
(55) |
2013 |
Jan
(59) |
Feb
(72) |
Mar
(99) |
Apr
(62) |
May
(92) |
Jun
(19) |
Jul
(31) |
Aug
(138) |
Sep
(47) |
Oct
(83) |
Nov
(95) |
Dec
(111) |
2014 |
Jan
(125) |
Feb
(60) |
Mar
(119) |
Apr
(136) |
May
(270) |
Jun
(83) |
Jul
(88) |
Aug
(30) |
Sep
(47) |
Oct
(27) |
Nov
(23) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(4) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <tho...@us...> - 2010-08-03 15:10:37
|
Revision: 3399 http://bigdata.svn.sourceforge.net/bigdata/?rev=3399&view=rev Author: thompsonbry Date: 2010-08-03 15:10:31 +0000 (Tue, 03 Aug 2010) Log Message: ----------- added 'final' in a few places. Modified Paths: -------------- trunk/bigdata/src/java/com/bigdata/striterator/ChunkedConvertingIterator.java Modified: trunk/bigdata/src/java/com/bigdata/striterator/ChunkedConvertingIterator.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/striterator/ChunkedConvertingIterator.java 2010-08-03 10:26:41 UTC (rev 3398) +++ trunk/bigdata/src/java/com/bigdata/striterator/ChunkedConvertingIterator.java 2010-08-03 15:10:31 UTC (rev 3399) @@ -99,7 +99,7 @@ * * @return A converted chunk of elements. */ - protected F[] convert(IChunkedOrderedIterator<E> src) { + protected F[] convert(final IChunkedOrderedIterator<E> src) { final F[] tmp = converter.convert(src); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-08-03 10:26:47
|
Revision: 3398 http://bigdata.svn.sourceforge.net/bigdata/?rev=3398&view=rev Author: martyncutcher Date: 2010-08-03 10:26:41 +0000 (Tue, 03 Aug 2010) Log Message: ----------- Fix addressing errors for deferedFree list and temporarly backoff call of deferFree from RWStrategy to avoid build timeout until we can solve the problem Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java 2010-08-03 00:14:08 UTC (rev 3397) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java 2010-08-03 10:26:41 UTC (rev 3398) @@ -1635,11 +1635,10 @@ final long offset = entry.getKey(); // offset in file to update - registerWriteStatus(offset, md.recordLength, 'W'); - nwrites += FileChannelUtility.writeAll(opener, view, offset); // if (log.isInfoEnabled()) // log.info("writing to: " + offset); + registerWriteStatus(offset, md.recordLength, 'W'); } final WriteCacheCounters counters = this.counters.get(); Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java 2010-08-03 00:14:08 UTC (rev 3397) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java 2010-08-03 10:26:41 UTC (rev 3398) @@ -307,15 +307,16 @@ final int rwaddr = decodeAddr(addr); final int sze = decodeSize(addr); - if (service == null) { + // FIXME: need to decide on correct way to handle transaction oriented + // allocations + if (true || service == null) { m_store.free(rwaddr, sze); } else { /* * May well be better to always defer and then free in batch, * but for now need to confirm transaction logic */ - m_store.deferFree(rwaddr, sze, service - .getLastCommitTime()); + m_store.deferFree(rwaddr, sze, m_rb.getLastCommitTime()); } } Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java 2010-08-03 00:14:08 UTC (rev 3397) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java 2010-08-03 10:26:41 UTC (rev 3398) @@ -968,7 +968,7 @@ String cacheDebugInfo = m_writeCache.addrDebugInfo(paddr); log.warn("Invalid data checksum for addr: " + paddr + ", chk: " + chk + ", tstchk: " + tstchk + ", length: " + length - + ", first byte: " + buf[0] + ", successful reads: " + m_diskReads + + ", first bytes: " + toHexString(buf, 32) + ", successful reads: " + m_diskReads + ", at last extend: " + m_readsAtExtend + ", cacheReads: " + m_cacheReads + ", writeCacheDebug: " + cacheDebugInfo); @@ -987,6 +987,25 @@ } } + static final char[] HEX_CHAR_TABLE = { + '0', '1','2','3', + '4','5','6','7', + '8','9','a','b', + 'c','d','e','f' + }; + + // utility to display byte array of maximum i bytes as hexString + private String toHexString(byte[] buf, int n) { + n = n < buf.length ? n : buf.length; + StringBuffer out = new StringBuffer(); + for (int i = 0; i < n; i++) { + int v = buf[i] & 0xFF; + out.append(HEX_CHAR_TABLE[v >>> 4]); + out.append(HEX_CHAR_TABLE[v &0xF]); + } + return out.toString(); + } + /** * FIXME: This method is not currently used with BigData, if needed then * the address mangling needs re-working @@ -1492,14 +1511,6 @@ bb.flip(); m_deferredFreeListAddr = (int) alloc(deferBuf, addrSize); m_deferredFreeListEntries = addrs; - final int chk = ChecksumUtility.getCHK().checksum(deferBuf); - try { - m_writeCache.write(physicalAddress(m_deferredFreeListAddr), bb, chk); - } catch (IllegalStateException e) { - throw new RuntimeException(e); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } free(oldDeferredFreeListAddr, 0); } else { m_deferredFreeListAddr = 0; @@ -2658,10 +2669,14 @@ m_currentTxnFreeList.clear(); long rwaddr = alloc(buf, buf.length); + long paddr = physicalAddress((int) rwaddr); rwaddr <<= 32; - rwaddr += addrCount; + rwaddr += buf.length; + if (log.isTraceEnabled()) + log.trace("saveDeferrals: " + paddr + ", size: " + buf.length); + // Now add the reference of this block m_deferredFreeList.add(m_lastTxReleaseTime); m_deferredFreeList.add(rwaddr); @@ -2675,9 +2690,12 @@ * @param blockAddr */ protected void freeDeferrals(long blockAddr) { - int addr = (int) -(blockAddr >> 32); + int addr = (int) (blockAddr >> 32); int sze = (int) blockAddr & 0xFFFFFF; + if (log.isTraceEnabled()) + log.trace("freeDeferrals at " + physicalAddress(addr) + ", size: " + sze); + byte[] buf = new byte[sze+4]; // allow for checksum getData(addr, buf); final DataInputStream strBuf = new DataInputStream(new ByteArrayInputStream(buf)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mrp...@us...> - 2010-08-03 00:14:15
|
Revision: 3397 http://bigdata.svn.sourceforge.net/bigdata/?rev=3397&view=rev Author: mrpersonick Date: 2010-08-03 00:14:08 +0000 (Tue, 03 Aug 2010) Log Message: ----------- rolling back my changes to previous revision Modified Paths: -------------- trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java =================================================================== --- trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java 2010-08-02 23:19:07 UTC (rev 3396) +++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java 2010-08-03 00:14:08 UTC (rev 3397) @@ -2803,28 +2803,11 @@ */ @SuppressWarnings("unchecked") static <V extends BigdataValue> IChunkedIterator<V> newT2IdIterator( - final LexiconRelation r, final Iterator<V> itr, - final int chunkSize) { + final Iterator<V> itr, final int chunkSize) { - return new ChunkedWrappedIterator(new Striterator(itr) - .addFilter(new Filter() { + return new ChunkedWrappedIterator(new Striterator(itr), chunkSize, + BigdataValue.class); - private static final long serialVersionUID = 1L; - - /* - * Filter hides inline terms since we don't want to write - * them on the forward index. - */ - @Override - protected boolean isValid(Object obj) { - - // will set IV on BigdataValues as a side-effect - return r.getInlineIV((Value) obj) != null; - - } - - }), chunkSize, BigdataValue.class); - } /** @@ -3081,13 +3064,6 @@ } - if (v.getIV().isInline()) { - - // Do not write inline terms on the reverse index. - continue; - - } - final byte[] key = v.getIV().encode(tmp.reset()) .getKey(); @@ -3791,9 +3767,8 @@ try { final Callable<Void> task = new AsyncTerm2IdIndexWriteTask( - tidsLatch, lexiconRelation, newT2IdIterator( - lexiconRelation, values.values().iterator(), - producerChunkSize), + tidsLatch, lexiconRelation, newT2IdIterator(values + .values().iterator(), producerChunkSize), buffer_t2id); // queue chunks onto the write buffer. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-08-02 23:19:13
|
Revision: 3396 http://bigdata.svn.sourceforge.net/bigdata/?rev=3396&view=rev Author: thompsonbry Date: 2010-08-02 23:19:07 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Added more detailed error messages to the numberic comparison method. Modified Paths: -------------- trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java =================================================================== --- trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java 2010-08-02 23:16:12 UTC (rev 3395) +++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java 2010-08-02 23:19:07 UTC (rev 3396) @@ -91,12 +91,28 @@ */ public static int numericalCompare(IV iv1, IV iv2) { - if (!iv1.isInline() || !iv2.isInline()) - throw new IllegalArgumentException("not inline terms"); + if (!iv1.isInline()) + throw new IllegalArgumentException("left term is not inline: left=" + + iv1 + ", right=" + iv2); + + if (!iv2.isInline()) + throw new IllegalArgumentException( + "right term is not inline: left=" + iv1 + ", right=" + iv2); - if (!iv1.isLiteral() || !iv2.isLiteral()) - throw new IllegalArgumentException("not literals"); +// if (!iv1.isInline() || !iv2.isInline()) +// throw new IllegalArgumentException("not inline terms"); + if (!iv1.isLiteral()) + throw new IllegalArgumentException( + "left term is not literal: left=" + iv1 + ", right=" + iv2); + + if (!iv2.isLiteral()) + throw new IllegalArgumentException( + "right term is not literal: left=" + iv1 + ", right=" + iv2); + +// if (!iv1.isLiteral() || !iv2.isLiteral()) +// throw new IllegalArgumentException("not literals"); + final DTE dte1 = iv1.getDTE(); final DTE dte2 = iv2.getDTE(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-08-02 23:16:19
|
Revision: 3395 http://bigdata.svn.sourceforge.net/bigdata/?rev=3395&view=rev Author: thompsonbry Date: 2010-08-02 23:16:12 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Handled edge case when the statement buffer is empty Modified Paths: -------------- trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java =================================================================== --- trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java 2010-08-02 21:37:44 UTC (rev 3394) +++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java 2010-08-02 23:16:12 UTC (rev 3395) @@ -916,6 +916,11 @@ * {@inheritDoc} */ public long flush() { + if (numStmts == 0) { + // Nothing to write. + return 0; + } + { // The output directory for the next file. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mrp...@us...> - 2010-08-02 21:37:50
|
Revision: 3394 http://bigdata.svn.sourceforge.net/bigdata/?rev=3394&view=rev Author: mrpersonick Date: 2010-08-02 21:37:44 +0000 (Mon, 02 Aug 2010) Log Message: ----------- keeping inline values out of the lexicon indices Modified Paths: -------------- trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java =================================================================== --- trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java 2010-08-02 21:36:53 UTC (rev 3393) +++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java 2010-08-02 21:37:44 UTC (rev 3394) @@ -2803,11 +2803,28 @@ */ @SuppressWarnings("unchecked") static <V extends BigdataValue> IChunkedIterator<V> newT2IdIterator( - final Iterator<V> itr, final int chunkSize) { + final LexiconRelation r, final Iterator<V> itr, + final int chunkSize) { - return new ChunkedWrappedIterator(new Striterator(itr), chunkSize, - BigdataValue.class); + return new ChunkedWrappedIterator(new Striterator(itr) + .addFilter(new Filter() { + private static final long serialVersionUID = 1L; + + /* + * Filter hides inline terms since we don't want to write + * them on the forward index. + */ + @Override + protected boolean isValid(Object obj) { + + // will set IV on BigdataValues as a side-effect + return r.getInlineIV((Value) obj) != null; + + } + + }), chunkSize, BigdataValue.class); + } /** @@ -3064,6 +3081,13 @@ } + if (v.getIV().isInline()) { + + // Do not write inline terms on the reverse index. + continue; + + } + final byte[] key = v.getIV().encode(tmp.reset()) .getKey(); @@ -3767,8 +3791,9 @@ try { final Callable<Void> task = new AsyncTerm2IdIndexWriteTask( - tidsLatch, lexiconRelation, newT2IdIterator(values - .values().iterator(), producerChunkSize), + tidsLatch, lexiconRelation, newT2IdIterator( + lexiconRelation, values.values().iterator(), + producerChunkSize), buffer_t2id); // queue chunks onto the write buffer. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mrp...@us...> - 2010-08-02 21:36:59
|
Revision: 3393 http://bigdata.svn.sourceforge.net/bigdata/?rev=3393&view=rev Author: mrpersonick Date: 2010-08-02 21:36:53 +0000 (Mon, 02 Aug 2010) Log Message: ----------- made the getInlineIV method public Modified Paths: -------------- trunk/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/LexiconRelation.java Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/LexiconRelation.java =================================================================== --- trunk/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/LexiconRelation.java 2010-08-02 17:10:15 UTC (rev 3392) +++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/LexiconRelation.java 2010-08-02 21:36:53 UTC (rev 3393) @@ -2313,7 +2313,7 @@ * the inline internal value, or <code>null</code> if it cannot * be converted */ - private IV getInlineIV(Value value) { + final public IV getInlineIV(Value value) { return getLexiconConfiguration().createInlineIV(value); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-08-02 17:10:32
|
Revision: 3392 http://bigdata.svn.sourceforge.net/bigdata/?rev=3392&view=rev Author: thompsonbry Date: 2010-08-02 17:10:15 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Merging trunk into branch JOURNAL_HA_BRANCH [r2980 : r3391]. Resolved the following conflicts: Incoming version but also replaced KeyBuilder with the version from the trunk to get decodeUUID(): C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java Resolved by edit. The conflict was just comments around parallel edits made in the HA branch and the trunk: C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata/src/java/com/bigdata/btree/Node.java Used the version in the HA branch: C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata/src/java/com/bigdata/rwstore/RWStore.java Used the version in the HA branch. There were no edits of significance in the trunk. C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata/src/java/com/bigdata/journal/FileMetadata.java Reconciled conflicts in StoreCounters.getCounters(): C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata/src/java/com/bigdata/journal/WORMStrategy.java Reconciled by hand. The conflict dealt with the reorganization of the AbstractJournal contructor handling of the initialization of the buffer strategy in the HA branch and the cutover in the trunk so that Disk means the same thing as DiskWORM (that is, it uses the WORMStrategy). C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata/src/java/com/bigdata/journal/AbstractJournal.java Resolved conflicts by hand. There was some new code in the HA branch to provide details on the RWStore allocation policy. I've isolated that in a getStoreInfo() method. C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/NanoSparqlServer.java Used the incoming version and the reorganized the imports - conflicts were just on imports. C C:/Documents and Settings/Bryan Thompson/workspace/bigdata-journal-HA-branch/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailRepositoryConnection.java Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/.classpath branches/JOURNAL_HA_BRANCH/bigdata/src/architecture/mergePriority.xls branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/LRUNexus.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/bfs/BlobOverflowHandler.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/AbstractBTree.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/BTree.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/BigdataMap.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/BloomFilterFactory.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/Checkpoint.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/DefaultTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/IndexMetadata.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/IndexSegment.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/IndexSegmentBuilder.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/IndexSegmentStore.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/NOPTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/Node.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/NodeSerializer.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/isolation/IsolatedFusedView.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/keys/CollatorEnum.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/keys/DefaultKeyBuilderFactory.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/keys/ICUSortKeyGenerator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/keys/JDKSortKeyGenerator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/proc/AbstractKeyArrayIndexProcedure.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/view/FusedView.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/cache/HardReferenceGlobalLRU.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/counters/AbstractStatisticsCollector.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/DirectBufferPool.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/AbstractBufferStrategy.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/AbstractJournal.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/BufferMode.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/CommitRecordIndex.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/DiskOnlyStrategy.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/Name2Addr.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/Options.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/WORMStrategy.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/mdi/IndexPartitionCause.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/mdi/LocalPartitionMetadata.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/mdi/MetadataIndex.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/mdi/PartitionLocator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/IRelation.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/accesspath/SameVariableConstraint.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/locator/DefaultResourceLocator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/IPredicate.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/Rule.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/Var.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/eval/DefaultRuleTaskFactory.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/eval/QueryTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/eval/RuleState.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/eval/pipeline/JoinTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/relation/rule/eval/pipeline/LocalJoinTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/CompactingMergeTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/IncrementalBuildTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/IndexManager.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/JoinIndexPartitionTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/JournalIndex.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/MoveTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/OverflowManager.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/ResourceEvents.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/ScatterSplitTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/SplitIndexPartitionTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/SplitUtility.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/StoreManager.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/resources/ViewMetadata.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/search/ReadIndexTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/AbstractEmbeddedLoadBalancerService.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/AbstractFederation.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/AbstractService.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/CommitTimeIndex.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/DataService.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/DefaultServiceFederationDelegate.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/ILoadBalancerService.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/LoadBalancerService.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/MetadataService.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/ndx/RawDataServiceTupleIterator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/ndx/pipeline/KVOC.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/ndx/pipeline/KVOList.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/proxy/RemoteAsynchronousIteratorImpl.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/service/proxy/RemoteChunk.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/sparse/AbstractAtomicRowReadOrWrite.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/sparse/GlobalRowStoreHelper.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/sparse/KeyDecoder.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/sparse/Schema.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/sparse/SparseRowStore.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/sparse/TPS.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/sparse/TPSTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/striterator/IKeyOrder.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/util/concurrent/ExecutionExceptions.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/util/concurrent/Latch.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/util/concurrent/QueueSizeMovingAverageTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/util/concurrent/ThreadPoolExecutorBaseStatisticsTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/util/concurrent/ThreadPoolExecutorStatisticsTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/util/config/NicUtil.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/util/httpd/NanoHTTPD.java branches/JOURNAL_HA_BRANCH/bigdata/src/resources/logging/log4j.properties branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/AbstractIndexSegmentTestCase.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestAll_IndexSegment.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIncrementalWrite.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexPartitionFencePosts.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderCacheInteraction.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithCompactingMerge.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithIncrementalBuild.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithLargeTrees.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithSmallTree.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexSegmentWithBloomFilter.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestInsertLookupRemoveKeysInRootLeaf.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIterators.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestLeafSplitShortestSeparatorKey.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestLinearListMethods.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestMutableBTreeCursors.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestReopen.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestSplitJoinRootLeaf.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestSplitJoinThreeLevels.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestSplitRootLeaf.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestTouch.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestTransientBTree.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/filter/TestTupleFilters.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/keys/TestICUUnicodeKeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/keys/TestJDKUnicodeKeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/keys/TestSuccessorUtil.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/raba/codec/AbstractRabaCoderTestCase.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/raba/codec/RandomURIGenerator.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/cache/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/cache/TestRingBuffer.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/counters/httpd/TestCounterSetHTTPDServer.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/TestConcurrentJournal.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/TestJournalBasics.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/TestRootBlockView.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/relation/accesspath/TestSameVariableConstraint.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/relation/locator/TestDefaultResourceLocator.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/relation/rule/AbstractRuleTestCase.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/relation/rule/TestRule.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/resources/AbstractResourceManagerTestCase.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/resources/TestBuildTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/resources/TestBuildTask2.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/resources/TestMergeTask.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/resources/TestOverflow.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/resources/TestResourceManagerBootstrap.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/resources/TestSegSplitter.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/search/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/search/TestKeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/search/TestSearchRestartSafe.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestBasicIndexStuff.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestDistributedTransactionService.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestMove.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestRangeQuery.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestResourceService.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestRestartSafe.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestScatterSplit.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/TestSplitJoin.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/service/ndx/pipeline/TestMasterTaskWithSplits.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/sparse/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/sparse/TestKeyEncodeDecode.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/test/ExperimentDriver.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/util/concurrent/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/util/concurrent/TestLatch.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/AbstractServicesManagerService.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/MonitorCreatePhysicalServiceLocksTask.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/ServicesManagerServer.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/config/AbstractHostConstraint.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/config/JiniServiceConfiguration.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/config/MaxClientServicesPerHostConstraint.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/config/MaxDataServicesPerHostConstraint.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/config/ZookeeperServerConfiguration.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/config/ZookeeperServerEntry.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/process/JiniCoreServicesProcessHelper.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/jini/start/process/ZookeeperProcessHelper.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/AbstractServer.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/LoadBalancerServer.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/benchmark/ThroughputMaster.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/master/FileSystemScanner.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/master/MappedTaskMaster.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/master/TaskMaster.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/util/BroadcastSighup.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/util/DumpFederation.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/util/LookupStarter.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/service/jini/util/config/lookup.config branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/zookeeper/ZooHelper.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/resources/config/bigdataStandaloneTesting.config branches/JOURNAL_HA_BRANCH/bigdata-jini/src/test/com/bigdata/jini/start/config/TestZookeeperServerEntry.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/test/com/bigdata/jini/start/testReggie.config branches/JOURNAL_HA_BRANCH/bigdata-jini/src/test/com/bigdata/jini/start/testStartJini.config branches/JOURNAL_HA_BRANCH/bigdata-jini/src/test/com/bigdata/service/jini/AbstractServerTestCase.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/test/com/bigdata/service/jini/TestBigdataClient.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/test/com/bigdata/zookeeper/testzoo.config branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/axioms/Axioms.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/axioms/BaseAxioms.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainOwlSameAsIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainOwlSameAsPropertiesIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainOwlSameAsPropertiesPIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainOwlSameAsPropertiesPOIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainOwlSameAsPropertiesSPIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainOwlSameAsPropertiesSPOIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainTypeResourceIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/FullyBufferedJustificationIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/Justification.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/OwlSameAsPropertiesExpandingIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/RdfTypeRdfsResourceFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/SPOAssertionBuffer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/TruthMaintenance.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/BigdataRDFFullTextIndex.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/ITermIndexCodes.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/Id2TermTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/Id2TermWriteProc.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/KVOTermIdComparator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/LexiconKeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/LexiconRelation.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/ReverseIndexWriterTask.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/Term2IdTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/Term2IdWriteProc.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/Term2IdWriteTask.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/TermIdEncoder.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/AbstractRDFTaskFactory.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/MappedRDFDataLoadMaster.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/MappedRDFFileLoadTask.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/RDFFilenameFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/RDFLoadTaskFactory.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/RDFVerifyTaskFactory.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/SingleResourceReaderTask.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/load/VerifyStatementBuffer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/IMagicTuple.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/IRISUtils.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicAccessPath.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicIndexWriteProc.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicKeyOrder.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicPredicate.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicRelation.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicTuple.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BNodeContextFactory.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataResourceImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataStatementImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueFactory.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueFactoryImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueIdComparator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/StatementEnum.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/TermIdComparator2.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rio/BasicRioLoader.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rio/IRioLoader.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rio/PresortRioLoader.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rio/StatementBuffer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/AbstractRuleDistinctTermScan.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/AbstractRuleFastClosure_11_13.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/AbstractRuleFastClosure_3_5_6_7_9.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/AbstractRuleFastClosure_5_6_7_9.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/BackchainAccessPath.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/DoNotAddFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/FastClosure.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/MatchRule.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/RDFJoinNexus.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/rules/RuleFastClosure3.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/DefaultGraphSolutionExpander.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/DistinctMultiTermAdvancer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/DistinctSPOIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/DistinctTermAdvancer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/ExplicitSPOFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/ISPO.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/InGraphBinarySearchFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/InGraphHashSetFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/InferredSPOFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/JustificationRemover.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/JustificationTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/NamedGraphSolutionExpander.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/NoAxiomFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/OSPComparator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/POSComparator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPO.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOAccessPath.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOComparator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOIndexWriteProc.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOKeyOrder.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOPredicate.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPORelation.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOSortKeyBuilder.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOStarJoin.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/AbstractTripleStore.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/BigdataSolutionResolverator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/BigdataStatementIteratorImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/BigdataValueIteratorImpl.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/DataLoader.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/IRawTripleStore.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/ITripleStore.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/ScaleOutTripleStore.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/TripleStoreUtility.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/vocab/BaseVocabulary.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/vocab/Vocabulary.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/axioms/TestAxioms.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestAddTerms.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestComparators.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestCompletionScan.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestFullTextIndex.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestId2TermTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestTerm2IdTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/lexicon/TestVocabulary.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/load/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/magic/TestIRIS.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/magic/TestMagicKeyOrderStrategy.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/magic/TestMagicStore.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/metrics/TestMetrics.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rio/AbstractRIOTestCase.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rio/EDSAsyncLoader.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rio/TestAsynchronousStatementBufferFactory.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rio/TestRDFXMLInterchangeWithStatementIdentifiers.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestBackchainOwlSameAsPropertiesIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestBackchainTypeResourceIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestDatabaseAtOnceClosure.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestDistinctTermScan.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestJustifications.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestOptionals.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestOwlSameAsPropertiesExpandingIterator.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestRuleExpansion.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestRuleFastClosure_11_13.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestRuleFastClosure_3_5_6_7_9.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestSlice.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/rules/TestTruthMaintenance.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestDefaultGraphAccessPath.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPO.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOAccessPath.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOKeyCoders.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOKeyOrder.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOPredicate.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPORelation.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOStarJoin.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOTupleSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOValueCoders.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/AbstractDistributedTripleStoreTestCase.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/AbstractEmbeddedTripleStoreTestCase.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/AbstractServerTestCase.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/AbstractTestCase.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/RDFLoadAndValidateHelper.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/TestBulkFilter.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/TestLocalTripleStoreTransactionSemantics.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/TestRestartSafe.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/TestStatementIdentifiers.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/TestTripleStore.java branches/JOURNAL_HA_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/store/TestTripleStoreBasics.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataConstructIterator.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataEvaluationStatistics.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataEvaluationStrategyImpl2.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSail.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailGraphQuery.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailHelper.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailRepository.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailRepositoryConnection.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/FreeTextSearchExpander.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/HitConvertor.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/BigdataLoader.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/NanoSparqlClient.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/NanoSparqlServer.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestAll.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailEvaluationStrategyImpl.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithQuads.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithQuadsAndPipelineJoins.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithSids.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithoutSids.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestJoinScope.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestNamedGraphs.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestOptionals.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestProvenanceQuery.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestQuery.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/TestUnions.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataConnectionTest.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataSparqlTest.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataSparqlTest2.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataStoreTest.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/stress/LoadClosureAndQueryTest.java branches/JOURNAL_HA_BRANCH/bigdata-sails/src/test/org/openrdf/query/parser/sparql/SPARQLQueryTest.java branches/JOURNAL_HA_BRANCH/build.properties branches/JOURNAL_HA_BRANCH/build.xml branches/JOURNAL_HA_BRANCH/src/resources/analysis/queries/benchmark.txt branches/JOURNAL_HA_BRANCH/src/resources/analysis/queries/rdfDataLoad.txt branches/JOURNAL_HA_BRANCH/src/resources/bin/config/browser.config branches/JOURNAL_HA_BRANCH/src/resources/bin/config/reggie.config branches/JOURNAL_HA_BRANCH/src/resources/bin/config/serviceStarter.config branches/JOURNAL_HA_BRANCH/src/resources/bin/config/zookeeper.config branches/JOURNAL_HA_BRANCH/src/resources/bin/pstart branches/JOURNAL_HA_BRANCH/src/resources/config/bigdataCluster.config branches/JOURNAL_HA_BRANCH/src/resources/config/bigdataCluster16.config branches/JOURNAL_HA_BRANCH/src/resources/config/jini/reggie.config branches/JOURNAL_HA_BRANCH/src/resources/config/jini/startAll.config branches/JOURNAL_HA_BRANCH/src/resources/config/log4j.properties branches/JOURNAL_HA_BRANCH/src/resources/config/logging.properties branches/JOURNAL_HA_BRANCH/src/resources/config/standalone/bigdataStandalone.config branches/JOURNAL_HA_BRANCH/src/resources/scripts/archiveRun.sh branches/JOURNAL_HA_BRANCH/src/resources/scripts/bigdata branches/JOURNAL_HA_BRANCH/src/resources/scripts/extractCounters.sh Added Paths: ----------- branches/JOURNAL_HA_BRANCH/bigdata/lib/bnd-0.0.384.jar branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/IndexSegmentMultiBlockIterator.java branches/JOURNAL_HA_BRANCH/bigdata/src/releases/RELEASE_0_83_0.txt branches/JOURNAL_HA_BRANCH/bigdata/src/releases/RELEASE_0_83_1.txt branches/JOURNAL_HA_BRANCH/bigdata/src/releases/RELEASE_0_83_2.txt branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/TestIndexSegmentMultiBlockIterators.java branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/btree/keys/AbstractUnicodeKeyBuilderTestCase.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/attr/ branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/attr/ServiceInfo.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/disco/ branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/disco/DiscoveryTool.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/disco/config/ branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/disco/config/disco.config branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/disco/config/logging.properties branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/util/Util.java branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/util/config/ branches/JOURNAL_HA_BRANCH/bigdata-jini/src/java/com/bigdata/util/config/ConfigDeployUtil.java branches/JOURNAL_HA_BRANCH/bigdata-perf/ branches/JOURNAL_HA_BRANCH/bigdata-perf/README.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/RWStore.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/WORMStore.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/build.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/build.xml branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/lib/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/lib/jdom.jar branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/lib/log4j-1.2.12.jar branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/lib/ssj.jar branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/DateGenerator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/Generator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/NormalDistGenerator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/NormalDistRangeGenerator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/ParetoDistGenerator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/RandomBucket.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/TextGenerator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/generator/ValueGenerator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/BSBMResource.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/Offer.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/Person.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/Producer.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/Product.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/ProductFeature.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/ProductType.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/RatingSite.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/Review.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/model/Vendor.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/qualification/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/qualification/Qualification.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/qualification/QualificationDefaultValues.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/qualification/QueryResult.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/NTriples.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/ObjectBundle.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/SQLSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/Serializer.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/TriG.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/Turtle.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/VirtSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/serializer/XMLSerializer.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/AbstractParameterPool.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/ClientManager.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/ClientThread.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/CompiledQuery.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/CompiledQueryMix.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/LocalSPARQLParameterPool.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/NetQuery.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/PreCalcParameterPool.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/Query.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/QueryMix.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/SPARQLConnection.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/SQLConnection.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/SQLParameterPool.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/ServerConnection.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/TestDriver.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/testdriver/TestDriverDefaultValues.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/tools/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/tools/ResultTransform.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/BSBM.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/DC.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/FOAF.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/ISO3166.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/RDF.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/RDFS.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/REV.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/java/benchmark/vocabulary/XSD.java branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/givennames.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/ignoreQueries.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query1.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query10.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query10desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query10valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query11.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query11desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query11valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query12.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query12desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query12valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query1desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query1valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query2.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query2desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query2valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query3.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query3desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query3valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query4-original.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query4-rewritten.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query4.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query4desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query4valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query5.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query5desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query5valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query6.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query6desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query6valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query7.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query7desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query7valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query8.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query8desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query8valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9-modified.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9-original.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9desc.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9valid.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/querymix.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/bsbm-data/titlewords.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/logging/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/resources/logging/log4j.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/test/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/test/benchmark/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/test/benchmark/bigdata/ branches/JOURNAL_HA_BRANCH/bigdata-perf/bsbm/src/test/benchmark/bigdata/TestBSBM.java branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/ branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/RWStore.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/Splitter.config branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/WORMStore.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/build.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/build.xml branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/src/ branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/src/resources/ branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/src/resources/logging/ branches/JOURNAL_HA_BRANCH/bigdata-perf/btc/src/resources/logging/log4j.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/LEGAL/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/LEGAL/LICENSE.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/README.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/RWStore.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/WORMStore.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/build.properties branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/build.xml branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/lib/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/CompressEnum.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/DamlWriter.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/Generator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/OwlWriter.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/RdfWriter.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/Writer.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/uba/readme.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/ConfigParser.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/KbConfigParser.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/KbSpecification.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/QueryConfigParser.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/QuerySpecification.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/QueryTestResult.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/RepositoryCreator.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/Test.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/api/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/api/Atom.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/api/Query.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/api/QueryResult.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/api/Repository.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/api/RepositoryFactory.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/bigdata/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/bigdata/SparqlRepository.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/bigdata/SparqlRepositoryFactory.java branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/config.kb.example.dldb branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/config.kb.example.sesame branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/config.query.example.dldb branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/config.query.example.sesame branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/ubt/readme.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/java/edu/lehigh/swat/bench/univ-bench.owl branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/answers (U1)/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/answers (U1)/answers_query14.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/answers (U1)/answers_query6.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/answers (U1)/answers_query8.txt branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/answers (U1)/reference query answers.url branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/ branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.kb.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query1.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query10.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query14.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query2.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query3.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query4.sparql branches/JOURNAL_HA_BRANCH/bigdata-perf/lubm/src/resources/config/config.query6.sparql branches/JOURNAL_HA_B... [truncated message content] |
From: <tho...@us...> - 2010-08-02 15:06:55
|
Revision: 3391 http://bigdata.svn.sourceforge.net/bigdata/?rev=3391&view=rev Author: thompsonbry Date: 2010-08-02 15:06:48 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Updated the HABranch notes as the relate to quorum management. Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/ha/HABranch.txt Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/ha/HABranch.txt =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/ha/HABranch.txt 2010-08-02 14:48:13 UTC (rev 3390) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/test/com/bigdata/journal/ha/HABranch.txt 2010-08-02 15:06:48 UTC (rev 3391) @@ -356,6 +356,36 @@ ============================================================ +Quorum next steps: + + I am closing out the zookeeper quorum integration. It appears to + work fine and in exact the same manner for the mock quorum fixture + and the zookeeper integration with the quorum logic. + + I want to revisit some aspects of the quorum's internal behavior in + the context of addressing the resynchronization protocol for the + services in the quorum. The basic issue is that there is some + concurrent indeterminism in the ordering of events as observed by + the local quorum objects for each service. I think that the right + way to handle this may be to split the quorum into a model class + with atomic set/get methods for its state, whose implementations + could be trivially unit tested, and a behavior class which is + responsible for bringing the quorum state for a service to the + target "run state" for that service. + + I am thinking of target run states as {MEMBER, SYNCHRONIZE, JOIN}. + MEMBER would correspond to a service which was online but not + synchronized. SYNCHRONIZE would correspond to a service which was + attempting to join a quorum and was making up for the delta in its + persistent state so it could join. JOIN would be a service which + was synchronized. + + Since the details of any such run levels really interact with the + resynchronization protocol and other issues such as hot spare + recruitment, I'd like to put them off until we take up the + resynchronization logic. + + TODO: - RWStore, write cache, write replication, standalone HA in This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-08-02 14:48:19
|
Revision: 3390 http://bigdata.svn.sourceforge.net/bigdata/?rev=3390&view=rev Author: thompsonbry Date: 2010-08-02 14:48:13 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Bug fix to DefaultKeyBuilderFactory, which was passing the default into properties.getProperty(key,def) and therefore was never testing System.getProperty(key,def). This was causing the ICU collator to always be chosen by this code path even when the collator had been explicitly set as a JVM property. Added final in a bunch of places to ICUSortKeyGenerator. Removed logic in the GlobalRowStoreHelper which was forcing the ASCII collator when the JDK collator had been requested due to a historical problem with the JDK collator and the global row store. In order to use the JDK collator you must now turn on unicode clean support in the SparseRowStore class. Since this breaks binary compatibility (for both the JDK and ICU collator options), I plan to do this as part of our next release. Improved the inline comments in KeyDecoder regarding the ArrayIndexOutOfBoundsException. Modified Paths: -------------- trunk/bigdata/src/java/com/bigdata/btree/keys/DefaultKeyBuilderFactory.java trunk/bigdata/src/java/com/bigdata/btree/keys/ICUSortKeyGenerator.java trunk/bigdata/src/java/com/bigdata/sparse/GlobalRowStoreHelper.java trunk/bigdata/src/java/com/bigdata/sparse/KeyDecoder.java Modified: trunk/bigdata/src/java/com/bigdata/btree/keys/DefaultKeyBuilderFactory.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/btree/keys/DefaultKeyBuilderFactory.java 2010-08-02 12:54:49 UTC (rev 3389) +++ trunk/bigdata/src/java/com/bigdata/btree/keys/DefaultKeyBuilderFactory.java 2010-08-02 14:48:13 UTC (rev 3390) @@ -207,7 +207,7 @@ if (properties != null) { - val = properties.getProperty(key, def); + val = properties.getProperty(key);//, def); } Modified: trunk/bigdata/src/java/com/bigdata/btree/keys/ICUSortKeyGenerator.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/btree/keys/ICUSortKeyGenerator.java 2010-08-02 12:54:49 UTC (rev 3389) +++ trunk/bigdata/src/java/com/bigdata/btree/keys/ICUSortKeyGenerator.java 2010-08-02 14:48:13 UTC (rev 3390) @@ -108,7 +108,7 @@ } - ICUSortKeyGenerator(Locale locale, Object strength, DecompositionEnum mode) { + ICUSortKeyGenerator(final Locale locale, final Object strength, final DecompositionEnum mode) { if (locale == null) throw new IllegalArgumentException(); @@ -132,7 +132,7 @@ } else { - StrengthEnum str = (StrengthEnum) strength; + final StrengthEnum str = (StrengthEnum) strength; if (log.isInfoEnabled()) log.info("strength=" + str); @@ -200,9 +200,9 @@ * Buffer is reused for each {@link String} from which a sort key is * derived. */ - private RawCollationKey raw = new RawCollationKey(128); + final private RawCollationKey raw = new RawCollationKey(128); - public void appendSortKey(KeyBuilder keyBuilder, String s) { + public void appendSortKey(final KeyBuilder keyBuilder, final String s) { // RawCollationKey raw = collator.getRawCollationKey(s, null); Modified: trunk/bigdata/src/java/com/bigdata/sparse/GlobalRowStoreHelper.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/sparse/GlobalRowStoreHelper.java 2010-08-02 12:54:49 UTC (rev 3389) +++ trunk/bigdata/src/java/com/bigdata/sparse/GlobalRowStoreHelper.java 2010-08-02 14:48:13 UTC (rev 3390) @@ -103,24 +103,28 @@ indexMetadata .setSplitHandler(LogicalRowSplitHandler.INSTANCE); - if (CollatorEnum.JDK.toString().equals( - System.getProperty(KeyBuilder.Options.COLLATOR))) { - /* - * The JDK RulesBasedCollator embeds nul bytes in the - * Unicode sort keys. This makes them unsuitable for the - * SparseRowStore, which can not locate the start of the - * column name if there are embedded nuls in a Unicode - * primary key. As a work around, this forces an ASCII - * collation sequence if the JDK collator is the - * default. This is not ideal since non-ascii - * distinctions will be lost, but it is better than - * being unable to decode the column names. - */ - log.warn("Forcing ASCII collator."); - indexMetadata - .setTupleSerializer(new DefaultTupleSerializer( - new ASCIIKeyBuilderFactory())); - } +/* + * This is now handled by using the UTF8 encoding of the primary key regardless + * of the collator mode chosen (this fixes the problem with embedded nuls). + */ +// if (CollatorEnum.JDK.toString().equals( +// System.getProperty(KeyBuilder.Options.COLLATOR))) { +// /* +// * The JDK RulesBasedCollator embeds nul bytes in the +// * Unicode sort keys. This makes them unsuitable for the +// * SparseRowStore, which can not locate the start of the +// * column name if there are embedded nuls in a Unicode +// * primary key. As a work around, this forces an ASCII +// * collation sequence if the JDK collator is the +// * default. This is not ideal since non-ascii +// * distinctions will be lost, but it is better than +// * being unable to decode the column names. +// */ +// log.warn("Forcing ASCII collator."); +// indexMetadata +// .setTupleSerializer(new DefaultTupleSerializer( +// new ASCIIKeyBuilderFactory())); +// } // Register the index. indexManager.registerIndex(indexMetadata); Modified: trunk/bigdata/src/java/com/bigdata/sparse/KeyDecoder.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/sparse/KeyDecoder.java 2010-08-02 12:54:49 UTC (rev 3389) +++ trunk/bigdata/src/java/com/bigdata/sparse/KeyDecoder.java 2010-08-02 14:48:13 UTC (rev 3390) @@ -278,10 +278,23 @@ this.schemaBytesLength = schemaBytesLength; this.primaryKeyTypeOffset = schemaBytesLength; + + /* + * Note: ArrayIndexOutOfBounds with index==-1 is an indication that + * the schema name or a Unicode primary key contained embedded nul + * bytes. This should no longer be possible when using the unicode + * clean options on the SparseRowStore which encoded those data as + * UTF8 rather than as Unicode sort keys. Historically, these were + * encoded as Unicode sort keys. However, the JDK CollatorEnum + * option does not support compressed Unicode sort keys and embeds + * nul bytes in its generated sort keys. We rely on nul bytes as + * boundary markers when decoding the row store keys. The presence + * of those nul byte within the scheme and and/or the a Unicode + * primary key was causing the ArrayIndexOutOfBoundsException here. + */ + this.primaryKeyType = KeyType.getKeyType(KeyBuilder + .decodeByte(key[primaryKeyTypeOffset])); - // note: ArrayIndexOutOfBounds with index==-1 means ICU library not on classpath! - this.primaryKeyType = KeyType.getKeyType(KeyBuilder.decodeByte(key[primaryKeyTypeOffset])); - } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-08-02 12:54:55
|
Revision: 3389 http://bigdata.svn.sourceforge.net/bigdata/?rev=3389&view=rev Author: martyncutcher Date: 2010-08-02 12:54:49 +0000 (Mon, 02 Aug 2010) Log Message: ----------- disable breadcrumb logging leading to OutOfMemory for builds Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java 2010-08-02 12:33:45 UTC (rev 3388) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java 2010-08-02 12:54:49 UTC (rev 3389) @@ -319,14 +319,14 @@ * * Toggle comment appropriately to activate/deactivate */ - final long[] addrsUsed = new long[4024 * 1024]; +// final long[] addrsUsed = new long[4024 * 1024]; +// int addrsUsedCurs = 0; +// final char[] addrActions = new char[addrsUsed.length]; +// final int[] addrLens = new int[addrsUsed.length]; + final long[] addrsUsed = null; int addrsUsedCurs = 0; - final char[] addrActions = new char[addrsUsed.length]; - final int[] addrLens = new int[addrsUsed.length]; -// final long[] addrsUsed = null; -// int addrsUsedCurs = 0; -// final char[] addrActions = null; -// final int[] addrLens = null; + final char[] addrActions = null; + final int[] addrLens = null; /** * The current file extent. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-08-02 12:33:51
|
Revision: 3388 http://bigdata.svn.sourceforge.net/bigdata/?rev=3388&view=rev Author: thompsonbry Date: 2010-08-02 12:33:45 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Modified to create the output directory path (mkdirs). Added a default output chunk size (10,000). Modified Paths: -------------- trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java =================================================================== --- trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java 2010-08-02 09:44:30 UTC (rev 3387) +++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/util/Splitter.java 2010-08-02 12:33:45 UTC (rev 3388) @@ -181,10 +181,12 @@ String OUT_FORMAT = "outFormat"; /** - * The number of RDF statements per output file. + * The number of RDF statements per output file (10,000 is a good number). */ String OUT_CHUNK_SIZE = "outChunkSize"; + int DEFAULT_OUT_CHUNK_SIZE = 10000; + /** * The compression style for the output files. */ @@ -288,8 +290,9 @@ ConfigurationOptions.OUT_COMPRESS, CompressEnum.class, CompressEnum.None/* default */); - outChunkSize = (Integer) c.getEntry(COMPONENT, - ConfigurationOptions.OUT_CHUNK_SIZE, Integer.TYPE); + outChunkSize = (Integer) c.getEntry(COMPONENT, + ConfigurationOptions.OUT_CHUNK_SIZE, Integer.TYPE, + ConfigurationOptions.DEFAULT_OUT_CHUNK_SIZE); { /* @@ -1105,6 +1108,8 @@ final Settings settings = new Settings(c); + settings.outDir.mkdirs(); + final Splitter splitter = new Splitter(settings); /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-08-02 09:44:36
|
Revision: 3387 http://bigdata.svn.sourceforge.net/bigdata/?rev=3387&view=rev Author: martyncutcher Date: 2010-08-02 09:44:30 +0000 (Mon, 02 Aug 2010) Log Message: ----------- provide support for deferred frees including access to the local transaction service Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/AbstractBufferStrategy.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/IBufferStrategy.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/Journal.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/AbstractBufferStrategy.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/AbstractBufferStrategy.java 2010-08-02 09:42:54 UTC (rev 3386) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/AbstractBufferStrategy.java 2010-08-02 09:44:30 UTC (rev 3387) @@ -673,4 +673,7 @@ return false; } + public void setTransactionManager(AbstractLocalTransactionManager localTransactionManager) { + // NOP + } } Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/IBufferStrategy.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/IBufferStrategy.java 2010-08-02 09:42:54 UTC (rev 3386) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/IBufferStrategy.java 2010-08-02 09:44:30 UTC (rev 3387) @@ -258,4 +258,16 @@ */ public boolean useChecksums(); + /** + * Needed to enable transaction support for standalone buffer strategies. + * + * The WORMStrategy does not need this since no data is ever deleted, but + * the RWStrategy must manage deletions such that no data is deleted until + * it can be guaranteed not to be accessed by existing transactions. + * + * @param localTransactionManager + * The transaction manager for the owning Journal + */ + public void setTransactionManager(AbstractLocalTransactionManager localTransactionManager); + } Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/Journal.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/Journal.java 2010-08-02 09:42:54 UTC (rev 3386) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/Journal.java 2010-08-02 09:44:30 UTC (rev 3387) @@ -220,6 +220,8 @@ concurrencyManager = new ConcurrencyManager(properties, localTransactionManager, this); + + getBufferStrategy().setTransactionManager(localTransactionManager); } Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java 2010-08-02 09:42:54 UTC (rev 3386) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/journal/RWStrategy.java 2010-08-02 09:44:30 UTC (rev 3387) @@ -31,6 +31,8 @@ import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.locks.ReentrantLock; import org.apache.log4j.Logger; @@ -41,6 +43,7 @@ import com.bigdata.rawstore.AbstractRawStore; import com.bigdata.rawstore.IAddressManager; import com.bigdata.rwstore.RWStore; +import com.bigdata.service.AbstractTransactionService; import com.bigdata.util.ChecksumUtility; /** @@ -82,6 +85,14 @@ private volatile IRootBlockView m_rb0; private volatile IRootBlockView m_rb1; + final ReentrantLock m_commitLock = new ReentrantLock(); + + /** + * Access to the transaction manager of any owning Journal, needed by + * RWStrategy to manager deleted data. + */ + private AbstractLocalTransactionManager localTransactionManager = null; + // CounterSet m_counters = new CounterSet(); /** @@ -242,6 +253,9 @@ return retaddr; } catch (RuntimeException re) { + + re.printStackTrace(); + m_needsReopen = true; reopen(); // FIXME @@ -282,8 +296,27 @@ return (int) (addr & 0xFFFFFFFF); } + /** + * Must check whether there are existing transactions which may access + * this data, and if not free immediately, otherwise defer. + */ public void delete(long addr) { - m_store.free(decodeAddr(addr), decodeSize(addr)); + final JournalTransactionService service = (JournalTransactionService) (localTransactionManager == null ? null + : localTransactionManager.getTransactionService()); + + final int rwaddr = decodeAddr(addr); + final int sze = decodeSize(addr); + + if (service == null) { + m_store.free(rwaddr, sze); + } else { + /* + * May well be better to always defer and then free in batch, + * but for now need to confirm transaction logic + */ + m_store.deferFree(rwaddr, sze, service + .getLastCommitTime()); + } } public static class RWAddressManager implements IAddressManager { @@ -471,18 +504,29 @@ m_rb.getCommitRecordAddr(), m_rb.getCommitRecordIndexAddr(), getMetaStartAddr(), getMetaBitsAddr(), m_rb.getCloseTime() ); } + + /** + * commit must use a commit lock to synchronize the rootBlock with the commit. + * + * Must pass in earliestTxnTime to commitChanges to enable + */ public void commit() { - m_store.commitChanges(); // includes a force(false) - IRootBlockView rb = getRootBlock(); - - writeRootBlock(rb, ForceEnum.No); - - m_rb = rb; - - if (m_rb.isRootBlock0()) { - m_rb0 = m_rb; - } else { - m_rb1 = m_rb; + m_commitLock.lock(); + try { + m_store.commitChanges(); // includes a force(false) + IRootBlockView rb = getRootBlock(); + + writeRootBlock(rb, ForceEnum.No); + + m_rb = rb; + + if (m_rb.isRootBlock0()) { + m_rb0 = m_rb; + } else { + m_rb1 = m_rb; + } + } finally { + m_commitLock.unlock(); } } @@ -664,4 +708,9 @@ } + public void setTransactionManager(AbstractLocalTransactionManager localTransactionManager) { + this.localTransactionManager = localTransactionManager; + m_store.setTransactionService((JournalTransactionService) localTransactionManager.getTransactionService()); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-08-02 09:43:00
|
Revision: 3386 http://bigdata.svn.sourceforge.net/bigdata/?rev=3386&view=rev Author: martyncutcher Date: 2010-08-02 09:42:54 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Add support for management of deferred frees and testing for address allocation Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/AllocBlock.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/Allocator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/BlobAllocator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/FixedAllocator.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/AllocBlock.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/AllocBlock.java 2010-08-02 09:40:26 UTC (rev 3385) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/AllocBlock.java 2010-08-02 09:42:54 UTC (rev 3386) @@ -116,7 +116,8 @@ RWStore.clrBit(m_bits, bit); if (!RWStore.tstBit(m_commit, bit)) { - m_writeCache.clearWrite(addr); + // Should not be cleared here! + // m_writeCache.clearWrite(addr); RWStore.clrBit(m_transients, bit); Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/Allocator.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/Allocator.java 2010-08-02 09:40:26 UTC (rev 3385) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/Allocator.java 2010-08-02 09:42:54 UTC (rev 3386) @@ -39,6 +39,7 @@ public int getDiskAddr(); public void setDiskAddr(int addr); public long getPhysicalAddress(int offset); + public boolean isAllocated(int offset); public int getPhysicalSize(int offset); public byte[] write(); public void read(DataInputStream str); Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/BlobAllocator.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/BlobAllocator.java 2010-08-02 09:40:26 UTC (rev 3385) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/BlobAllocator.java 2010-08-02 09:42:54 UTC (rev 3386) @@ -265,4 +265,8 @@ str.append("Index: " + m_index + ", address: " + getStartAddr() + ", BLOB\n"); } + public boolean isAllocated(int offset) { + return m_hdrs[offset] != 0; + } + } Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/FixedAllocator.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/FixedAllocator.java 2010-08-02 09:40:26 UTC (rev 3385) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/FixedAllocator.java 2010-08-02 09:42:54 UTC (rev 3386) @@ -372,7 +372,7 @@ } } } - + return false; } @@ -501,4 +501,15 @@ return alloted * m_size; } + + public boolean isAllocated(int offset) { + offset -= 3; + + int allocBlockRange = 32 * m_bitSize; + + AllocBlock block = (AllocBlock) m_allocBlocks.get(offset / allocBlockRange); + int bit = offset % allocBlockRange; + + return RWStore.tstBit(block.m_bits, bit); + } } Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java 2010-08-02 09:40:26 UTC (rev 3385) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/rwstore/RWStore.java 2010-08-02 09:42:54 UTC (rev 3386) @@ -38,11 +38,14 @@ import java.util.Collections; import java.util.Iterator; import java.util.Map; +import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import javax.naming.OperationNotSupportedException; + import org.apache.log4j.Logger; import com.bigdata.io.FileChannelUtility; @@ -50,6 +53,8 @@ import com.bigdata.io.writecache.WriteCache; import com.bigdata.journal.ForceEnum; import com.bigdata.journal.IRootBlockView; +import com.bigdata.journal.ITransactionService; +import com.bigdata.journal.JournalTransactionService; import com.bigdata.journal.Options; import com.bigdata.journal.RWStrategy.FileMetadataView; import com.bigdata.quorum.Quorum; @@ -159,6 +164,46 @@ * to determine chained blocks for freeing. This is particularly important * for larger stores where a disk cache could be flushed through simply freeing * BLOB allocations. + * + * Deferred Free List + * + * In order to provide support for read-only transactions across store + * mutations, storage that is free'd in the mutation cannot be free'd immediately. + * + * The deferredFreeList is effectively a table of txReleaseTimes and + * and addresses to data with lists of addresses to be freed. + * + * OTOH, if in general we only ever free store "in the next transaction" then + * the big advantage of storage reallocation in bulk upload is lost. The logic + * should hold that if we can be sure that no read-only transaction can be + * active then we can free immediately, otherwise we should defer call to + * complete the free until the commit point of any current transaction has + * been passed. + * + * The logic of determining whether to call free or deferFree is left to the + * client and whatever transaction management policy they follow. The support + * assmumes that a safety-first policy of always calling deferFree should not + * cause performance or resource problems. + * + * Since there is a cost of synchronizing with the transaction service to check + * the transaction state, the check is only made either prior to commit or + * after every so many deferFree requests. + * + * The management of the deferredFreeList is via a management block referenced + * from the metaAllocation data. This contains a reference to a block of + * addresses that each reference a block of deferred frees. + * + * At runtime, this list includes the txnReleaseTime when the allocation was + * "freed". + * + * The release times stored are the last commit time at the time of the + * original free request. The current transaction environment covers a window + * of first release time and the current commit time. When the stored release + * time is before the current first release time then that allocation can + * be safely freed. + * + * When a store is opened this window is not needed and any deferred frees can + * be immediately freed since no transactions will be active. */ public class RWStore implements IStore { @@ -275,9 +320,44 @@ * significant contention may be avoided. */ final private ReentrantLock m_allocationLock = new ReentrantLock(); + + /** + * This lock controls access to the deferredFree structures used + * in deferFree. + * + * The deferral of freeing storage supports processing of read-only + * transactions concurrent with modifying/mutation tasks + */ + final private ReentrantLock m_deferFreeLock = new ReentrantLock(); - private ReopenFileChannel m_reopener = null; + /** + * The deferredFreeList is simply an array of releaseTime,freeListAddrs + * stored at commit. + * + * Note that when the deferredFreeList is saved, ONLY thefreeListAddrs + * are stored, NOT the releaseTime. This is because on any open of + * the store, all deferredFrees can be released immediately. This + * mechanism may be changed in the future to enable explicit history + * retention, but if so a different header structure would be used since + * it would not be appropriate to retain a simple header linked to + * thousands if not milions of commit points. + * + * If the current txn list exceeds the MAX_DEFERRED_FREE then it is + * incrementally saved and a new list begun. The master list itself + * serves as a BLOB header when there is more than a single entry with + * the same txReleaseTime. + */ + private static final int MAX_DEFERRED_FREE = 4094; // fits in 16k block + final ArrayList<Long> m_deferredFreeList = new ArrayList<Long>(); + volatile int m_deferredFreeListAddr = 0; + volatile int m_deferredFreeListEntries = 0; + volatile long m_lastTxReleaseTime = 0; + final ArrayList<Integer> m_currentTxnFreeList = new ArrayList<Integer>(); + + volatile long deferredFreeCount = 0; + private ReopenFileChannel m_reopener = null; + class WriteCacheImpl extends WriteCache.FileChannelScatteredWriteCache { public WriteCacheImpl(final ByteBuffer buf, final boolean useChecksum, @@ -304,6 +384,12 @@ } } + + // Added to enable debug of rare problem + // FIXME: disable by removal once solved + protected void registerWriteStatus(long offset, int length, char action) { + m_writeCache.debugAddrs(offset, length, action); + } }; @@ -359,7 +445,8 @@ } int buffers = m_fmv.getFileMetadata().writeCacheBufferCount; - // buffers = 10; + log.warn("RWStore using writeCacheService with buffers: " + buffers); + try { m_writeCache = new RWWriteCacheService( buffers, m_raf @@ -546,12 +633,16 @@ FileChannelUtility.readAll(m_reopener, ByteBuffer.wrap(buf), rawmbaddr); final DataInputStream strBuf = new DataInputStream(new ByteArrayInputStream(buf)); + + final int deferredFreeListAddr = strBuf.readInt(); + final int deferredFreeListEntries = strBuf.readInt(); + int allocBlocks = strBuf.readInt(); m_allocSizes = new int[allocBlocks]; for (int i = 0; i < allocBlocks; i++) { m_allocSizes[i] = strBuf.readInt(); } - m_metaBitsSize = metaBitsStore - allocBlocks - 1; + m_metaBitsSize = metaBitsStore - allocBlocks - 3; // allow for deferred free m_metaBits = new int[m_metaBitsSize]; if (log.isInfoEnabled()) { log.info("Raw MetaBitsAddr: " + rawmbaddr); @@ -573,6 +664,8 @@ readAllocationBlocks(); + clearOutstandingDeferrels(deferredFreeListAddr, deferredFreeListEntries); + if (log.isTraceEnabled()) { final StringBuffer str = new StringBuffer(); this.showAllocators(str); @@ -590,6 +683,55 @@ + ", " + m_metaBitsAddr); } + /* + * Called when store is opened to make sure any deferred frees are + * cleared. + * + * Stored persistently is only the list of addresses of blocks to be freed, + * the knowledge of the txn release time does not need to be held persistently, + * this is only relevant for transient state while the RWStore is open. + * + * The deferredCount is the number of entries - integer address and integer + * count at each address + */ + private void clearOutstandingDeferrels(final int deferredAddr, final int deferredCount) { + if (deferredAddr != 0) { + assert deferredCount != 0; + final int sze = deferredCount * 8 + 4; // include spce fo checksum + byte[] buf = new byte[sze]; + getData(deferredAddr, buf); + + final byte[] blockBuf = new byte[8 * 1024]; // maximum size required + + ByteBuffer in = ByteBuffer.wrap(buf); + for (int i = 0; i < deferredCount; i++) { + int blockAddr = in.getInt(); + int addrCount = in.getInt(); + + // now read in this block and free all addresses referenced + getData(blockAddr, blockBuf, 0, addrCount*4 + 4); + ByteBuffer inblock = ByteBuffer.wrap(blockBuf); + for (int b = 0; b < addrCount; b++) { + final int defAddr = inblock.getInt(); + Allocator alloc = getBlock(defAddr); + if (alloc instanceof BlobAllocator) { + b++; + assert b < addrCount; + alloc.free(defAddr, inblock.getInt()); + } else { + alloc.free(defAddr, 0); // size ignored for FreeAllocators + } + } + // once read then free the block allocation + free(blockAddr, 0); + } + + // lastly free the deferredAddr + free(deferredAddr, 0); + } + + } + /********************************************************************* * make sure resource is closed! **/ @@ -827,10 +969,13 @@ int chk = ChecksumUtility.getCHK().checksum(buf, offset, length-4); // read checksum int tstchk = bb.getInt(offset + length-4); if (chk != tstchk) { + String cacheDebugInfo = m_writeCache.addrDebugInfo(paddr); log.warn("Invalid data checksum for addr: " + paddr + ", chk: " + chk + ", tstchk: " + tstchk + ", length: " + length + ", first byte: " + buf[0] + ", successful reads: " + m_diskReads - + ", at last extend: " + m_readsAtExtend + ", cacheReads: " + m_cacheReads); + + ", at last extend: " + m_readsAtExtend + ", cacheReads: " + m_cacheReads + + ", writeCacheDebug: " + cacheDebugInfo); + throw new IllegalStateException("Invalid data checksum"); } @@ -908,11 +1053,17 @@ m_allocationLock.lock(); try { final Allocator alloc = getBlockByAddress(addr); - final long pa = alloc.getPhysicalAddress(getOffset(addr)); + final int addrOffset = getOffset(addr); + final long pa = alloc.getPhysicalAddress(addrOffset); alloc.free(addr, sze); // must clear after free in case is a blobHdr that requires reading! + // the allocation lock protects against a concurrent re-allocation + // of the address before the cache has been cleared + assert pa != 0; m_writeCache.clearWrite(pa); m_frees++; + if (alloc.isAllocated(addrOffset)) + throw new IllegalStateException("Reallocation problem with WriteCache"); if (!m_commitList.contains(alloc)) { m_commitList.add(alloc); @@ -920,6 +1071,7 @@ } finally { m_allocationLock.unlock(); } + } /** @@ -991,13 +1143,13 @@ addr = allocator.alloc(this, size); - if (log.isDebugEnabled()) - log.debug("New FixedAllocator for " + cmp + " byte allocations at " + addr); + if (log.isTraceEnabled()) + log.trace("New FixedAllocator for " + cmp + " byte allocations at " + addr); m_allocs.add(allocator); } else { // Verify free list only has allocators with free bits - { + if (log.isDebugEnabled()){ int tsti = 0; Iterator<Allocator> allocs = list.iterator(); while (allocs.hasNext()) { @@ -1209,10 +1361,20 @@ * @throws IOException */ private void writeMetaBits() throws IOException { - final int len = 4 * (1 + m_allocSizes.length + m_metaBits.length); + // the metabits is now prefixed by two ints representing the + // deferred frees - the address and number of defer block addresses + // to be found there + final int len = 4 * (2 + 1 + m_allocSizes.length + m_metaBits.length); final byte buf[] = new byte[len]; final FixedOutputStream str = new FixedOutputStream(buf); + + saveDeferrals(); + + str.writeInt(m_deferredFreeListAddr); + str.writeInt(m_deferredFreeListEntries); + + str.writeInt(m_allocSizes.length); for (int i = 0; i < m_allocSizes.length; i++) { str.writeInt(m_allocSizes[i]); @@ -1317,7 +1479,36 @@ // if (m_commitCallback != null) { // m_commitCallback.commitCallback(); // } + + checkDeferredFrees(); + // save deferredFree data + if (m_deferredFreeList.size() > 0) { + final int oldDeferredFreeListAddr = m_deferredFreeListAddr; + // list contains txReleaseTime,addr of addrs to be freed + final int addrs = m_deferredFreeList.size() / 2; + final int addrSize = addrs*8; + byte[] deferBuf = new byte[addrSize]; // each addr is a long + ByteBuffer bb = ByteBuffer.wrap(deferBuf); + for (int i = 0; i < addrs; i++) { + bb.putLong(m_deferredFreeList.get(1 + (i*2))); + } + bb.flip(); + m_deferredFreeListAddr = (int) alloc(deferBuf, addrSize); + m_deferredFreeListEntries = addrs; + final int chk = ChecksumUtility.getCHK().checksum(deferBuf); + try { + m_writeCache.write(physicalAddress(m_deferredFreeListAddr), bb, chk); + } catch (IllegalStateException e) { + throw new RuntimeException(e); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + free(oldDeferredFreeListAddr, 0); + } else { + m_deferredFreeListAddr = 0; + m_deferredFreeListEntries = 0; + } // Allocate storage for metaBits long oldMetaBits = m_metaBitsAddr; int oldMetaBitsSize = (m_metaBits.length + m_allocSizes.length + 1) * 4; @@ -1387,6 +1578,28 @@ } /** + * Called prior to commit, so check whether storage can be freed and then + * whether the deferredheader needs to be saved. + */ + private void checkDeferredFrees() { + checkFreeable(); + + this.m_deferredFreeListEntries = m_deferredFreeList.size(); + if (m_deferredFreeListEntries > 0) { + int bufSize = 4 + m_deferredFreeListEntries*8; + byte[] buf = new byte[bufSize]; + ByteBuffer bb = ByteBuffer.wrap(buf); + bb.putInt(m_deferredFreeListEntries); + for (int i = 0; i < m_deferredFreeListEntries; i++) { + bb.putLong(m_deferredFreeList.get(i)); + } + m_deferredFreeListAddr = (int) alloc(buf, bufSize); + } else { + this.m_deferredFreeListAddr = 0; + } + } + + /** * * @return conservative requirement for metabits storage, mindful that the * request to allocate the metabits may require an increase in the @@ -1402,6 +1615,8 @@ int allocBlocks = (8 + commitInts)/8; ints += 9 * allocBlocks; + ints += 2; // for deferredFreeListAddr and size + return ints*4; // return as bytes } @@ -2074,8 +2289,8 @@ long ret = physicalAddress((int) m_metaBitsAddr); ret <<= 16; - // include space for allocSizes - int metaBitsSize = m_metaBits.length + m_allocSizes.length + 1; + // include space for allocSizes and deferred free info + int metaBitsSize = 2 + m_metaBits.length + m_allocSizes.length + 1; ret += metaBitsSize; if (log.isInfoEnabled()) @@ -2317,4 +2532,183 @@ return allocated; } + /* + * Adds the address for later freeing to the deferred free list. + * + * This is maintained in a set of chained 4K buffers, with the head and + * tail referenced from the meta allocation block. + * + * If the allocation is for a BLOB then the sze is also stored + * + * The deferred list is checked on AllocBlock and prior to commit. + * + * There is also a possibility to check for deferral at this point, since + * we are passed both the currentCommitTime - against which this free + * will be deferred and the earliest tx start time against which we + * can check to see if + */ + public void deferFree(int rwaddr, int sze, long currentCommitTime) { + + m_deferFreeLock.lock(); + try { + deferredFreeCount++; + if (currentCommitTime != m_lastTxReleaseTime) { + assert m_lastTxReleaseTime == 0; + + m_lastTxReleaseTime = currentCommitTime; + } + m_currentTxnFreeList.add(rwaddr); + + final Allocator alloc = getBlockByAddress(rwaddr); + if (alloc instanceof BlobAllocator) { + m_currentTxnFreeList.add(sze); + } + if (m_currentTxnFreeList.size() >= MAX_DEFERRED_FREE) { + // Save current list and clear + saveDeferrals(); + + assert m_currentTxnFreeList.size() == 0; + } + + // every so many deferrals, check for free + if (deferredFreeCount % 100 == 0) { + checkFreeable(); + } + } finally { + m_deferFreeLock.unlock(); + } + } + + private void checkFreeable() { + if (transactionService == null) { + return; + } + + try { + transactionService.callWithLock(new Callable<Object>() { + + public Object call() throws Exception { + if (transactionService.getActiveCount() == 0) { + freeAllDeferrals(Long.MAX_VALUE); + } else { + freeAllDeferrals(transactionService.getEarliestTxStartTime()); + } + return null; + } + + }); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + + /** + * Frees all storage deferred against a txn release time less than that + * passed in. + * + * @param txnRelease - the max release time + */ + protected void freeAllDeferrals(long txnRelease) { + final Iterator<Long> defers = m_deferredFreeList.iterator(); + while (defers.hasNext() && defers.next() < txnRelease) { + if (txnRelease != Long.MAX_VALUE) { + System.out.println("Freeing deferrals"); // FIXME remove debug + } + defers.remove(); + freeDeferrals(defers.next()); + defers.remove(); + } + if (m_lastTxReleaseTime < txnRelease) { + final Iterator<Integer> curdefers = m_currentTxnFreeList.iterator(); + while (curdefers.hasNext()) { + final int rwaddr = curdefers.next(); + Allocator alloc = getBlock(rwaddr); + if (alloc instanceof BlobAllocator) { + assert curdefers.hasNext(); + + free(rwaddr, curdefers.next()); + } else { + free(rwaddr, 0); // size ignored for FreeAllocators + } + } + m_currentTxnFreeList.clear(); + } + } + + /** + * Writes the content of currentTxnFreeList to the store. + * + * These are the current buffered frees that have yet been saved into + * a block referenced from the deferredFreeList + * + * @return the address of the deferred addresses saved on the store + */ + private void saveDeferrals() { + int addrCount = m_currentTxnFreeList.size(); + + if (addrCount == 0) { + return; + } + + byte[] buf = new byte[4 * (addrCount+1)]; + ByteBuffer out = ByteBuffer.wrap(buf); + out.putInt(addrCount); + for (int i = 0; i < addrCount; i++) { + out.putInt(m_currentTxnFreeList.get(i)); + } + + // now we've saved it to the store, clear the list + m_currentTxnFreeList.clear(); + + long rwaddr = alloc(buf, buf.length); + + rwaddr <<= 32; + rwaddr += addrCount; + + // Now add the reference of this block + m_deferredFreeList.add(m_lastTxReleaseTime); + m_deferredFreeList.add(rwaddr); + + + + } + + /** + * Provided with the address of a block of addresses to be freed + * @param blockAddr + */ + protected void freeDeferrals(long blockAddr) { + int addr = (int) -(blockAddr >> 32); + int sze = (int) blockAddr & 0xFFFFFF; + + byte[] buf = new byte[sze+4]; // allow for checksum + getData(addr, buf); + final DataInputStream strBuf = new DataInputStream(new ByteArrayInputStream(buf)); + m_allocationLock.lock(); + try { + int addrs = strBuf.readInt(); + while (addrs-- > 0) { + int nxtAddr = strBuf.readInt(); + Allocator alloc = getBlock(nxtAddr); + if (alloc instanceof BlobAllocator) { + assert addrs > 0; // a Blob address MUST have a size + --addrs; + free(nxtAddr, strBuf.readInt()); + } else { + free(nxtAddr, 0); // size ignored for FreeAllocators + } + } + } catch (IOException e) { + throw new RuntimeException("Problem freeing deferrals", e); + } finally { + m_allocationLock.unlock(); + } + } + + private JournalTransactionService transactionService = null; + public void setTransactionService(final JournalTransactionService transactionService) { + this.transactionService = transactionService; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-08-02 09:40:32
|
Revision: 3385 http://bigdata.svn.sourceforge.net/bigdata/?rev=3385&view=rev Author: martyncutcher Date: 2010-08-02 09:40:26 +0000 (Mon, 02 Aug 2010) Log Message: ----------- ensure deleted address is removed from cache Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/AbstractBTree.java Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/AbstractBTree.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/AbstractBTree.java 2010-08-02 09:33:17 UTC (rev 3384) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/btree/AbstractBTree.java 2010-08-02 09:40:26 UTC (rev 3385) @@ -3695,6 +3695,7 @@ // write the serialized node or leaf onto the store. final long addr; + final long oldAddr; { final long begin = System.nanoTime(); @@ -3704,7 +3705,9 @@ // now we have a new address, delete previous identity if any if (node.isPersistent()) { - store.delete(node.getIdentity()); + oldAddr = node.getIdentity(); + } else { + oldAddr = 0; } btreeCounters.writeNanos += System.nanoTime() - begin; @@ -3721,6 +3724,13 @@ */ node.setIdentity(addr); + if (oldAddr != 0L) { + if (storeCache!=null) { + // remove from cache. + storeCache.remove(oldAddr); + } + store.delete(oldAddr); + } node.setDirty(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-08-02 09:33:24
|
Revision: 3384 http://bigdata.svn.sourceforge.net/bigdata/?rev=3384&view=rev Author: martyncutcher Date: 2010-08-02 09:33:17 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Add support for breadcrumbing address useage - add/write/clear/remove - to track down rare errors. Modified Paths: -------------- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java 2010-08-02 00:49:40 UTC (rev 3383) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCache.java 2010-08-02 09:33:17 UTC (rev 3384) @@ -1634,6 +1634,9 @@ view.position(pos); final long offset = entry.getKey(); // offset in file to update + + registerWriteStatus(offset, md.recordLength, 'W'); + nwrites += FileChannelUtility.writeAll(opener, view, offset); // if (log.isInfoEnabled()) // log.info("writing to: " + offset); @@ -1757,6 +1760,10 @@ } } + protected void registerWriteStatus(long offset, int length, char action) { + // NOP to be overidden for debug if required + } + boolean m_written = false; private long lastOffset; @@ -1792,7 +1799,10 @@ * Using the conditional remove on ConcurrentMap guards against * this. */ - serviceRecordMap.remove(addr, this); + boolean removed = serviceRecordMap.remove(addr, this); + + registerWriteStatus(addr, 0, removed ? 'R' : 'L'); + } } else { Modified: branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java =================================================================== --- branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java 2010-08-02 00:49:40 UTC (rev 3383) +++ branches/JOURNAL_HA_BRANCH/bigdata/src/java/com/bigdata/io/writecache/WriteCacheService.java 2010-08-02 09:33:17 UTC (rev 3384) @@ -313,8 +313,22 @@ * {@link #writeChk(long, ByteBuffer, int)}). */ final private WriteCache[] buffers; - + /** + * Debug arrays to chase down write/removal errors. + * + * Toggle comment appropriately to activate/deactivate + */ + final long[] addrsUsed = new long[4024 * 1024]; + int addrsUsedCurs = 0; + final char[] addrActions = new char[addrsUsed.length]; + final int[] addrLens = new int[addrsUsed.length]; +// final long[] addrsUsed = null; +// int addrsUsedCurs = 0; +// final char[] addrActions = null; +// final int[] addrLens = null; + + /** * The current file extent. */ final private AtomicLong fileExtent = new AtomicLong(-1L); @@ -1422,6 +1436,7 @@ final WriteCache cache = acquireForWriter(); try { + debugAddrs(offset, 0, 'A'); // write on the cache. if (cache.write(offset, data, chk, useChecksum)) { @@ -1598,6 +1613,19 @@ } + public void debugAddrs(long offset, int length, char c) { + if (addrsUsed != null) { + addrsUsed[addrsUsedCurs] = offset; + addrActions[addrsUsedCurs] = c; + addrLens[addrsUsedCurs] = length; + + addrsUsedCurs++; + if (addrsUsedCurs >= addrsUsed.length) { + addrsUsedCurs = 0; + } + } + } + /** * Write a record whose size (when combined with the optional checksum) is * larger than the capacity of an individual {@link WriteCache} buffer. This @@ -1917,6 +1945,7 @@ if (cache == null) return; acquireForWriter(); // in case current + debugAddrs(offset, 0, 'F'); try { cache.clearAddrMap(offset); } finally { @@ -1928,6 +1957,41 @@ } /** + * An array of writeCache actions is maintained that can be used + * to provide a breadcrumb of how that address has been written, saved, + * freed or removed. + * + * Write errors often show up as a checksum error, so the length of + * data written to the address cab be crucial information in determining the + * root of any problem. + * + * @param address for which info requested + * @return summary of writeCache actions + */ + public String addrDebugInfo(final long paddr) { + if (addrsUsed == null) { + return "No WriteCache debug info"; + } + + StringBuffer ret = new StringBuffer(); + // first see if address was ever written + boolean written = false; + for (int i = 0; i < addrsUsed.length; i++) { + if (i == addrsUsedCurs) { + ret.append("|...|"); + } + if (addrsUsed[i] == paddr) { + ret.append(addrActions[i]); + if (addrActions[i]=='W') { + ret.append("[" + addrLens[i] + "]"); + } + } + } + + return ret.toString(); + } + + /** * Performance counters for the {@link WriteCacheService}. * * @author <a href="mailto:tho...@us...">Bryan This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-08-02 00:49:46
|
Revision: 3383 http://bigdata.svn.sourceforge.net/bigdata/?rev=3383&view=rev Author: thompsonbry Date: 2010-08-02 00:49:40 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Added logic to NanoSparqlServer to optionally include the namespace for all triple stores when the URL query parameter "showNamespaces" is specified. Added logic to NanoSparqlServer to show all properties for the specified namespace. Conditional logging in TPS. Modified Paths: -------------- trunk/bigdata/src/java/com/bigdata/sparse/TPS.java trunk/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/NanoSparqlServer.java Modified: trunk/bigdata/src/java/com/bigdata/sparse/TPS.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/sparse/TPS.java 2010-08-01 18:53:21 UTC (rev 3382) +++ trunk/bigdata/src/java/com/bigdata/sparse/TPS.java 2010-08-02 00:49:40 UTC (rev 3383) @@ -53,9 +53,9 @@ protected static final transient Logger log = Logger.getLogger(TPS.class); - protected static final transient boolean INFO = log.isInfoEnabled(); - - protected static final transient boolean DEBUG = log.isDebugEnabled(); +// protected static final transient boolean INFO = log.isInfoEnabled(); +// +// protected static final transient boolean DEBUG = log.isDebugEnabled(); /** * @@ -220,7 +220,7 @@ if (tpv != null) { - if (INFO) + if (log.isInfoEnabled()) log.info("Exact timestamp match: name=" + name + (timestamp == Long.MAX_VALUE ? ", current value" @@ -271,14 +271,14 @@ * encountered by the iterator. */ - if (INFO) + if (log.isInfoEnabled()) log.info("No match: name=" + name); return new TPV(schema, name, 0L, null); } - if (INFO) + if (log.isInfoEnabled()) log.info("Most recent match: name=" + name + ", value=" + last.value + ", timestamp=" + last.timestamp); @@ -335,7 +335,7 @@ */ public TPS currentRow(final INameFilter filter) { - if(DEBUG) { + if(log.isDebugEnabled()) { log.debug("filter=" + filter + ", preFilter=" + this); @@ -352,7 +352,7 @@ if (filter != null && !filter.accept(tpv.name)) { - if(DEBUG) { + if(log.isDebugEnabled()) { log.debug("rejecting on filter: "+tpv); @@ -367,7 +367,7 @@ // remove binding. final TPV old = m.remove(tpv.name); - if (DEBUG && old != null) { + if (log.isDebugEnabled() && old != null) { log.debug("removed binding: " + old); @@ -378,7 +378,7 @@ // (over)write binding. final TPV old = m.put(tpv.name, tpv); - if (DEBUG && old != null) { + if (log.isDebugEnabled() && old != null) { log.debug("overwrote: \nold=" + old + "\nnew=" + tpv); @@ -408,7 +408,7 @@ } - if(DEBUG) { + if(log.isDebugEnabled()) { log.debug("postFilter: "+tps); @@ -453,7 +453,7 @@ if (toTime <= fromTime) throw new IllegalArgumentException(); - if(DEBUG) { + if(log.isDebugEnabled()) { log.debug("fromTime=" + fromTime + ", toTime=" + toTime + ", filter=" + filter + ", preFilter=" + this); @@ -479,7 +479,7 @@ // Outside of the half-open range. - if (DEBUG) { + if (log.isDebugEnabled()) { log.debug("rejecting on timestamp: " + tp); @@ -491,7 +491,7 @@ if (filter != null && !filter.accept(tp.name)) { - if (DEBUG) { + if (log.isDebugEnabled()) { log.debug("rejecting on filter: " + tp); @@ -506,7 +506,7 @@ } - if(DEBUG) { + if(log.isDebugEnabled()) { log.debug("postFilter: "+tps); @@ -736,7 +736,7 @@ // #of tuples. final int n = in.readInt(); - if (INFO) + if (log.isDebugEnabled()) log.info("n=" + n + ", schema=" + schema); for (int i = 0; i < n; i++) { @@ -761,7 +761,7 @@ tuples.put(new TP(name, timestamp), tpv); - if (INFO) + if (log.isDebugEnabled()) log.info("tuple: name=" + name + ", timestamp=" + timestamp + ", value=" + value); @@ -899,7 +899,7 @@ public String toString() { - return "TPS{name="+name+",timestamp="+timestamp+",value="+value+"}"; + return "TPV{name="+name+",timestamp="+timestamp+",value="+value+"}"; } Modified: trunk/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/NanoSparqlServer.java =================================================================== --- trunk/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/NanoSparqlServer.java 2010-08-01 18:53:21 UTC (rev 3382) +++ trunk/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/NanoSparqlServer.java 2010-08-02 00:49:40 UTC (rev 3383) @@ -43,6 +43,9 @@ import java.util.Date; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.TreeMap; import java.util.Vector; @@ -84,8 +87,10 @@ import com.bigdata.rdf.sail.bench.NanoSparqlClient.QueryType; import com.bigdata.rdf.store.AbstractTripleStore; import com.bigdata.relation.AbstractResource; +import com.bigdata.relation.RelationSchema; import com.bigdata.service.IBigdataFederation; import com.bigdata.service.jini.JiniClient; +import com.bigdata.sparse.ITPS; import com.bigdata.util.concurrent.DaemonThreadFactory; import com.bigdata.util.httpd.AbstractHTTPD; import com.bigdata.util.httpd.NanoHTTPD; @@ -226,6 +231,52 @@ } + /** + * Return a list of the registered {@link AbstractTripleStore}s. + */ + protected List<String> getNamespaces() { + + // the triple store namespaces. + final List<String> namespaces = new LinkedList<String>(); + + // scan the relation schema in the global row store. + final Iterator<ITPS> itr = (Iterator<ITPS>) indexManager + .getGlobalRowStore().rangeIterator(RelationSchema.INSTANCE); + + while (itr.hasNext()) { + + // A timestamped property value set is a logical row with + // timestamped property values. + final ITPS tps = itr.next(); + + // If you want to see what is in the TPS, uncomment this. +// System.err.println(tps.toString()); + + // The namespace is the primary key of the logical row for the + // relation schema. + final String namespace = (String) tps.getPrimaryKey(); + + // Get the name of the implementation class + // (AbstractTripleStore, SPORelation, LexiconRelation, etc.) + final String className = (String) tps.get(RelationSchema.CLASS) + .getValue(); + + try { + final Class cls = Class.forName(className); + if (AbstractTripleStore.class.isAssignableFrom(cls)) { + // this is a triple store (vs something else). + namespaces.add(namespace); + } + } catch (ClassNotFoundException e) { + log.error(e,e); + } + + } + + return namespaces; + + } + /** * Return various interesting metadata about the KB state. * @@ -296,6 +347,18 @@ sb.append(AbstractResource.Options.MAX_PARALLEL_SUBQUERIES + "=" + tripleStore.getMaxParallelSubqueries() + "\n"); + sb.append("-- All properties.--\n"); + + // get the triple store's properties from the global row store. + final Map<String, Object> properties = indexManager + .getGlobalRowStore().read(RelationSchema.INSTANCE, + namespace); + + // write them out, + for (String key : properties.keySet()) { + sb.append(key + "=" + properties.get(key)+"\n"); + } + // sb.append(tripleStore.predicateUsage()); } catch (Throwable t) { @@ -553,12 +616,30 @@ final boolean showKBInfo = params.get("showKBInfo") != null; + final boolean showNamespaces = params.get("showNamespaces") != null; + final StringBuilder sb = new StringBuilder(); sb.append("Accepted query count=" + queryIdFactory.get() + "\n"); - sb.append("Running query count=" + queries.size() + "\n"); + sb.append("Running query count=" + queries.size() + "\n"); + if (showNamespaces) { + + final List<String> namespaces = getNamespaces(); + + sb.append("Namespaces: "); + + for (String s : namespaces) { + + sb.append(s); + + } + + sb.append("\n"); + + } + if (showKBInfo) { // General information on the connected kb. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-08-01 18:53:27
|
Revision: 3382 http://bigdata.svn.sourceforge.net/bigdata/?rev=3382&view=rev Author: thompsonbry Date: 2010-08-01 18:53:21 +0000 (Sun, 01 Aug 2010) Log Message: ----------- Modified scale-out to use the WORMStrategy. Interned some class names in IndexMetadata which were being redundantly stored in the heap. Changed the index segment file naming convention to use enough digits (10) to represent an int32 index partition identifier. Fixed the DirectBufferPool statistics. Since these now represent a collection of pools, they have to be dynamically reattached in order to update correctly. Fixed the benchmark.txt queries for the DirectBufferPools. Restored the use of the parallel old generation GC mode to the bigdataCluster config files, but commented out the explicit assignment of a number of cores to be used for GC since the JVM default is the #of cores on the machine and this is otherwise machine specific. Turned down the BlockingBuffer logging level (to ERROR) since it was cluttering the detail.log file. Modified Paths: -------------- trunk/bigdata/src/java/com/bigdata/btree/IndexMetadata.java trunk/bigdata/src/java/com/bigdata/counters/AbstractStatisticsCollector.java trunk/bigdata/src/java/com/bigdata/io/WriteCache.java trunk/bigdata/src/java/com/bigdata/journal/AbstractJournal.java trunk/bigdata/src/java/com/bigdata/journal/DiskOnlyStrategy.java trunk/bigdata/src/java/com/bigdata/resources/OverflowManager.java trunk/bigdata/src/java/com/bigdata/resources/ResourceEvents.java trunk/bigdata/src/java/com/bigdata/resources/StoreManager.java trunk/bigdata/src/java/com/bigdata/service/DataService.java trunk/bigdata/src/java/com/bigdata/service/DefaultServiceFederationDelegate.java trunk/src/resources/analysis/queries/benchmark.txt trunk/src/resources/config/bigdataCluster.config trunk/src/resources/config/bigdataCluster16.config trunk/src/resources/config/log4j.properties Modified: trunk/bigdata/src/java/com/bigdata/btree/IndexMetadata.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/btree/IndexMetadata.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/btree/IndexMetadata.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -2049,10 +2049,14 @@ // Note: default assumes NOT an index partition. this.pmd = null; + /* Intern'd to reduce duplication on the heap. Will be com.bigdata.btree.BTree or + * com.bigdata.btree.IndexSegment and occasionally a class derived from BTree. + */ this.btreeClassName = getProperty(indexManager, properties, namespace, - Options.BTREE_CLASS_NAME, BTree.class.getName().toString()); + Options.BTREE_CLASS_NAME, BTree.class.getName()).intern(); - this.checkpointClassName = Checkpoint.class.getName(); + // Intern'd to reduce duplication on the heap. + this.checkpointClassName = Checkpoint.class.getName().intern(); // this.addrSer = AddressSerializer.INSTANCE; Modified: trunk/bigdata/src/java/com/bigdata/counters/AbstractStatisticsCollector.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/counters/AbstractStatisticsCollector.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/counters/AbstractStatisticsCollector.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -277,19 +277,19 @@ AbstractStatisticsCollector .addGarbageCollectorMXBeanCounters(serviceRoot .makePath(ICounterHierarchy.Memory_GarbageCollectors)); - - /* - * Add counters reporting on the various DirectBufferPools. - */ - { - // general purpose pool. - serviceRoot.makePath( - IProcessCounters.Memory + ICounterSet.pathSeparator - + "DirectBufferPool").attach( - DirectBufferPool.getCounters()); - - } + // Moved since counters must be dynamically reattached to reflect pool hierarchy. +// /* +// * Add counters reporting on the various DirectBufferPools. +// */ +// { +// +// serviceRoot.makePath( +// IProcessCounters.Memory + ICounterSet.pathSeparator +// + "DirectBufferPool").attach( +// DirectBufferPool.getCounters()); +// +// } if (LRUNexus.INSTANCE != null) { Modified: trunk/bigdata/src/java/com/bigdata/io/WriteCache.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/io/WriteCache.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/io/WriteCache.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -51,7 +51,7 @@ import com.bigdata.counters.Instrument; import com.bigdata.journal.AbstractBufferStrategy; import com.bigdata.journal.DiskOnlyStrategy; -import com.bigdata.journal.DiskOnlyStrategy.StoreCounters; +//import com.bigdata.journal.DiskOnlyStrategy.StoreCounters; import com.bigdata.rawstore.Bytes; import com.bigdata.rawstore.IRawStore; import com.bigdata.rwstore.RWStore; Modified: trunk/bigdata/src/java/com/bigdata/journal/AbstractJournal.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/journal/AbstractJournal.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/journal/AbstractJournal.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -1027,33 +1027,33 @@ } - case Disk: { +// case Disk: { +// +// /* +// * Setup the buffer strategy. +// */ +// +// fileMetadata = new FileMetadata(file, BufferMode.Disk, +// useDirectBuffers, initialExtent, maximumExtent, create, +// isEmptyFile, deleteOnExit, readOnly, forceWrites, +// offsetBits, //readCacheCapacity, readCacheMaxRecordSize, +// //readOnly ? null : writeCache, +// writeCacheEnabled, +// validateChecksum, +// createTime, checker, alternateRootBlock); +// +// _bufferStrategy = new DiskOnlyStrategy( +// 0L/* soft limit for maximumExtent */, +//// minimumExtension, +// fileMetadata); +// +// this._rootBlock = fileMetadata.rootBlock; +// +// break; +// +// } - /* - * Setup the buffer strategy. - */ - - fileMetadata = new FileMetadata(file, BufferMode.Disk, - useDirectBuffers, initialExtent, maximumExtent, create, - isEmptyFile, deleteOnExit, readOnly, forceWrites, - offsetBits, //readCacheCapacity, readCacheMaxRecordSize, - //readOnly ? null : writeCache, - writeCacheEnabled, - validateChecksum, - createTime, checker, alternateRootBlock); - - _bufferStrategy = new DiskOnlyStrategy( - 0L/* soft limit for maximumExtent */, -// minimumExtension, - fileMetadata); - - this._rootBlock = fileMetadata.rootBlock; - - break; - - } - -// case Disk: + case Disk: case DiskWORM: { /* Modified: trunk/bigdata/src/java/com/bigdata/journal/DiskOnlyStrategy.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/journal/DiskOnlyStrategy.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/journal/DiskOnlyStrategy.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -46,6 +46,7 @@ import com.bigdata.io.DirectBufferPool; import com.bigdata.io.FileChannelUtility; import com.bigdata.io.IReopenChannel; +import com.bigdata.journal.WORMStrategy.StoreCounters; import com.bigdata.rawstore.Bytes; import com.bigdata.rawstore.IRawStore; import com.bigdata.resources.StoreManager.ManagedJournal; @@ -501,7 +502,7 @@ writeCache.flush(); - storeCounters.ncacheFlush++; +// storeCounters.ncacheFlush++; } @@ -544,551 +545,551 @@ } - /** - * Counters for {@link IRawStore} access, including operations that read or - * write through to the underlying media. - * - * @author <a href="mailto:tho...@us...">Bryan Thompson</a> - * @version $Id$ - * - * @todo report elapsed time and average latency for force, reopen, and - * writeRootBlock. - * - * @todo counters need to be atomic if we want to avoid the possibility of - * concurrent <code>x++</code> operations failing to correctly - * increment <code>x</code> for each request. - */ - public static class StoreCounters { - - /** - * #of read requests. - */ - public long nreads; - - /** - * #of read requests that are satisfied by our write cache (vs the - * OS or disk level write cache). - */ - public long ncacheRead; - - /** - * #of read requests that read through to the backing file. - */ - public long ndiskRead; - - /** - * #of bytes read. - */ - public long bytesRead; - - /** - * #of bytes that have been read from the disk. - */ - public long bytesReadFromDisk; - - /** - * The size of the largest record read. - */ - public long maxReadSize; - - /** - * Total elapsed time for reads. - */ - public long elapsedReadNanos; - - /** - * Total elapsed time checking the disk write cache for records to be - * read. - */ - public long elapsedCacheReadNanos; - - /** - * Total elapsed time for reading on the disk. - */ - public long elapsedDiskReadNanos; - - /** - * #of write requests. - */ - public long nwrites; - - /** - * #of write requests that are absorbed by our write cache (vs the OS or - * disk level write cache). - */ - public long ncacheWrite; - - /** - * #of times the write cache was flushed to disk. - */ - public long ncacheFlush; - - /** - * #of write requests that write through to the backing file. - */ - public long ndiskWrite; - - /** - * The size of the largest record written. - */ - public long maxWriteSize; - - /** - * #of bytes written. - */ - public long bytesWritten; - - /** - * #of bytes that have been written on the disk. - */ - public long bytesWrittenOnDisk; - - /** - * Total elapsed time for writes. - */ - public long elapsedWriteNanos; - - /** - * Total elapsed time writing records into the cache (does not count - * time to flush the cache when it is full or to write records that do - * not fit in the cache directly to the disk). - */ - public long elapsedCacheWriteNanos; - - /** - * Total elapsed time for writing on the disk. - */ - public long elapsedDiskWriteNanos; - - /** - * #of times the data were forced to the disk. - */ - public long nforce; - - /** - * #of times the length of the file was changed (typically, extended). - */ - public long ntruncate; - - /** - * #of times the file has been reopened after it was closed by an - * interrupt. - */ - public long nreopen; - - /** - * #of times one of the root blocks has been written. - */ - public long nwriteRootBlock; - - /** - * Initialize a new set of counters. - */ - public StoreCounters() { - - } - - /** - * Copy ctor. - * @param o - */ - public StoreCounters(final StoreCounters o) { - - add( o ); - - } - - /** - * Adds counters to the current counters. - * - * @param o - */ - public void add(final StoreCounters o) { - - nreads += o.nreads; - ncacheRead += o.ncacheRead; - ndiskRead += o.ndiskRead; - bytesRead += o.bytesRead; - bytesReadFromDisk += o.bytesReadFromDisk; - maxReadSize += o.maxReadSize; - elapsedReadNanos += o.elapsedReadNanos; - elapsedCacheReadNanos += o.elapsedCacheReadNanos; - elapsedDiskReadNanos += o.elapsedDiskReadNanos; - - nwrites += o.nwrites; - ncacheWrite += o.ncacheWrite; - ncacheFlush += o.ncacheFlush; - ndiskWrite += o.ndiskWrite; - maxWriteSize += o.maxWriteSize; - bytesWritten += o.bytesWritten; - bytesWrittenOnDisk += o.bytesWrittenOnDisk; - elapsedWriteNanos += o.elapsedWriteNanos; - elapsedCacheWriteNanos += o.elapsedCacheWriteNanos; - elapsedDiskWriteNanos += o.elapsedDiskWriteNanos; - - nforce += o.nforce; - ntruncate += o.ntruncate; - nreopen += o.nreopen; - nwriteRootBlock += o.nwriteRootBlock; - - } - - /** - * Returns a new {@link StoreCounters} containing the current counter values - * minus the given counter values. - * - * @param o - * - * @return - */ - public StoreCounters subtract(final StoreCounters o) { - - // make a copy of the current counters. - final StoreCounters t = new StoreCounters(this); - - // subtract out the given counters. - t.nreads -= o.nreads; - t.ncacheRead -= o.ncacheRead; - t.ndiskRead -= o.ndiskRead; - t.bytesRead -= o.bytesRead; - t.bytesReadFromDisk -= o.bytesReadFromDisk; - t.maxReadSize -= o.maxReadSize; - t.elapsedReadNanos -= o.elapsedReadNanos; - t.elapsedCacheReadNanos -= o.elapsedCacheReadNanos; - t.elapsedDiskReadNanos -= o.elapsedDiskReadNanos; - - t.nwrites -= o.nwrites; - t.ncacheWrite -= o.ncacheWrite; - t.ncacheFlush -= o.ncacheFlush; - t.ndiskWrite -= o.ndiskWrite; - t.maxWriteSize -= o.maxWriteSize; - t.bytesWritten -= o.bytesWritten; - t.bytesWrittenOnDisk -= o.bytesWrittenOnDisk; - t.elapsedWriteNanos -= o.elapsedWriteNanos; - t.elapsedCacheWriteNanos -= o.elapsedCacheWriteNanos; - t.elapsedDiskWriteNanos -= o.elapsedDiskWriteNanos; - - t.nforce -= o.nforce; - t.ntruncate -= o.ntruncate; - t.nreopen -= o.nreopen; - t.nwriteRootBlock -= o.nwriteRootBlock; - - return t; - - } - - synchronized public CounterSet getCounters() { - - if (root == null) { - - root = new CounterSet(); - - // IRawStore API - { - - /* - * reads - */ - - root.addCounter("nreads", new Instrument<Long>() { - public void sample() { - setValue(nreads); - } - }); - - root.addCounter("bytesRead", new Instrument<Long>() { - public void sample() { - setValue(bytesRead); - } - }); - - root.addCounter("readSecs", new Instrument<Double>() { - public void sample() { - final double elapsedReadSecs = (elapsedReadNanos / 1000000000.); - setValue(elapsedReadSecs); - } - }); - - root.addCounter("bytesReadPerSec", - new Instrument<Double>() { - public void sample() { - final double readSecs = (elapsedReadNanos / 1000000000.); - final double bytesReadPerSec = (readSecs == 0L ? 0d - : (bytesRead / readSecs)); - setValue(bytesReadPerSec); - } - }); - - root.addCounter("maxReadSize", new Instrument<Long>() { - public void sample() { - setValue(maxReadSize); - } - }); - - /* - * writes - */ - - root.addCounter("nwrites", new Instrument<Long>() { - public void sample() { - setValue(nwrites); - } - }); - - root.addCounter("bytesWritten", new Instrument<Long>() { - public void sample() { - setValue(bytesWritten); - } - }); - - root.addCounter("writeSecs", new Instrument<Double>() { - public void sample() { - final double writeSecs = (elapsedWriteNanos / 1000000000.); - setValue(writeSecs); - } - }); - - root.addCounter("bytesWrittenPerSec", - new Instrument<Double>() { - public void sample() { - final double writeSecs = (elapsedWriteNanos / 1000000000.); - final double bytesWrittenPerSec = (writeSecs == 0L ? 0d - : (bytesWritten / writeSecs)); - setValue(bytesWrittenPerSec); - } - }); - - root.addCounter("maxWriteSize", new Instrument<Long>() { - public void sample() { - setValue(maxWriteSize); - } - }); - - } - - /* - * write cache statistics - */ - { - - final CounterSet writeCache = root.makePath("writeCache"); - - /* - * read - */ - writeCache.addCounter("nread", new Instrument<Long>() { - public void sample() { - setValue(ncacheRead); - } - }); - - writeCache.addCounter("readHitRate", new Instrument<Double>() { - public void sample() { - setValue(nreads == 0L ? 0d : (double) ncacheRead - / nreads); - } - }); - - writeCache.addCounter("readSecs", new Instrument<Double>() { - public void sample() { - setValue(elapsedCacheReadNanos / 1000000000.); - } - }); - - /* - * write - */ - - // #of writes on the write cache. - writeCache.addCounter("nwrite", new Instrument<Long>() { - public void sample() { - setValue(ncacheWrite); - } - }); - - /* - * % of writes that are buffered vs writing through to the - * disk. - * - * Note: This will be 1.0 unless you are writing large - * records. Large records are written directly to the disk - * rather than first into the write cache. When this happens - * the writeHitRate on the cache can be less than one. - */ - writeCache.addCounter("writeHitRate", new Instrument<Double>() { - public void sample() { - setValue(nwrites == 0L ? 0d : (double) ncacheWrite - / nwrites); - } - }); - - writeCache.addCounter("writeSecs", new Instrument<Double>() { - public void sample() { - setValue(elapsedCacheWriteNanos / 1000000000.); - } - }); - - // #of times the write cache was flushed to the disk. - writeCache.addCounter("nflush", new Instrument<Long>() { - public void sample() { - setValue(ncacheFlush); - } - }); - - } - - // disk statistics - { - final CounterSet disk = root.makePath("disk"); - - /* - * read - */ - - disk.addCounter("nreads", new Instrument<Long>() { - public void sample() { - setValue(ndiskRead); - } - }); - - disk.addCounter("bytesRead", new Instrument<Long>() { - public void sample() { - setValue(bytesReadFromDisk); - } - }); - - disk.addCounter("bytesPerRead", new Instrument<Double>() { - public void sample() { - final double bytesPerDiskRead = (ndiskRead == 0 ? 0d - : (bytesReadFromDisk / (double)ndiskRead)); - setValue(bytesPerDiskRead); - } - }); - - disk.addCounter("readSecs", new Instrument<Double>() { - public void sample() { - final double diskReadSecs = (elapsedDiskReadNanos / 1000000000.); - setValue(diskReadSecs); - } - }); - - disk.addCounter("bytesReadPerSec", - new Instrument<Double>() { - public void sample() { - final double diskReadSecs = (elapsedDiskReadNanos / 1000000000.); - final double bytesReadPerSec = (diskReadSecs == 0L ? 0d - : bytesReadFromDisk / diskReadSecs); - setValue(bytesReadPerSec); - } - }); - - disk.addCounter("secsPerRead", new Instrument<Double>() { - public void sample() { - final double diskReadSecs = (elapsedDiskReadNanos / 1000000000.); - final double readLatency = (diskReadSecs == 0 ? 0d - : diskReadSecs / ndiskRead); - setValue(readLatency); - } - }); - - /* - * write - */ - - disk.addCounter("nwrites", new Instrument<Long>() { - public void sample() { - setValue(ndiskWrite); - } - }); - - disk.addCounter("bytesWritten", new Instrument<Long>() { - public void sample() { - setValue(bytesWrittenOnDisk); - } - }); - - disk.addCounter("bytesPerWrite", new Instrument<Double>() { - public void sample() { - final double bytesPerDiskWrite = (ndiskWrite == 0 ? 0d - : (bytesWrittenOnDisk / (double)ndiskWrite)); - setValue(bytesPerDiskWrite); - } - }); - - disk.addCounter("writeSecs", new Instrument<Double>() { - public void sample() { - final double diskWriteSecs = (elapsedDiskWriteNanos / 1000000000.); - setValue(diskWriteSecs); - } - }); - - disk.addCounter("bytesWrittenPerSec", - new Instrument<Double>() { - public void sample() { - final double diskWriteSecs = (elapsedDiskWriteNanos / 1000000000.); - final double bytesWrittenPerSec = (diskWriteSecs == 0L ? 0d - : bytesWrittenOnDisk - / diskWriteSecs); - setValue(bytesWrittenPerSec); - } - }); - - disk.addCounter("secsPerWrite", new Instrument<Double>() { - public void sample() { - final double diskWriteSecs = (elapsedDiskWriteNanos / 1000000000.); - final double writeLatency = (diskWriteSecs == 0 ? 0d - : diskWriteSecs / ndiskWrite); - setValue(writeLatency); - } - }); - - /* - * other - */ - - disk.addCounter("nforce", new Instrument<Long>() { - public void sample() { - setValue(nforce); - } - }); - - disk.addCounter("nextend", new Instrument<Long>() { - public void sample() { - setValue(ntruncate); - } - }); - - disk.addCounter("nreopen", new Instrument<Long>() { - public void sample() { - setValue(nreopen); - } - }); - - disk.addCounter("rootBlockWrites", new Instrument<Long>() { - public void sample() { - setValue(nwriteRootBlock); - } - }); - - } - - } - - return root; - - } - private CounterSet root; - - /** - * Human readable representation of the counters. - */ - public String toString() { - - return getCounters().toString(); - - } - - } +// /** +// * Counters for {@link IRawStore} access, including operations that read or +// * write through to the underlying media. +// * +// * @author <a href="mailto:tho...@us...">Bryan Thompson</a> +// * @version $Id$ +// * +// * @todo report elapsed time and average latency for force, reopen, and +// * writeRootBlock. +// * +// * @todo counters need to be atomic if we want to avoid the possibility of +// * concurrent <code>x++</code> operations failing to correctly +// * increment <code>x</code> for each request. +// */ +// public static class StoreCounters { +// +// /** +// * #of read requests. +// */ +// public long nreads; +// +// /** +// * #of read requests that are satisfied by our write cache (vs the +// * OS or disk level write cache). +// */ +// public long ncacheRead; +// +// /** +// * #of read requests that read through to the backing file. +// */ +// public long ndiskRead; +// +// /** +// * #of bytes read. +// */ +// public long bytesRead; +// +// /** +// * #of bytes that have been read from the disk. +// */ +// public long bytesReadFromDisk; +// +// /** +// * The size of the largest record read. +// */ +// public long maxReadSize; +// +// /** +// * Total elapsed time for reads. +// */ +// public long elapsedReadNanos; +// +// /** +// * Total elapsed time checking the disk write cache for records to be +// * read. +// */ +// public long elapsedCacheReadNanos; +// +// /** +// * Total elapsed time for reading on the disk. +// */ +// public long elapsedDiskReadNanos; +// +// /** +// * #of write requests. +// */ +// public long nwrites; +// +// /** +// * #of write requests that are absorbed by our write cache (vs the OS or +// * disk level write cache). +// */ +// public long ncacheWrite; +// +// /** +// * #of times the write cache was flushed to disk. +// */ +// public long ncacheFlush; +// +// /** +// * #of write requests that write through to the backing file. +// */ +// public long ndiskWrite; +// +// /** +// * The size of the largest record written. +// */ +// public long maxWriteSize; +// +// /** +// * #of bytes written. +// */ +// public long bytesWritten; +// +// /** +// * #of bytes that have been written on the disk. +// */ +// public long bytesWrittenOnDisk; +// +// /** +// * Total elapsed time for writes. +// */ +// public long elapsedWriteNanos; +// +// /** +// * Total elapsed time writing records into the cache (does not count +// * time to flush the cache when it is full or to write records that do +// * not fit in the cache directly to the disk). +// */ +// public long elapsedCacheWriteNanos; +// +// /** +// * Total elapsed time for writing on the disk. +// */ +// public long elapsedDiskWriteNanos; +// +// /** +// * #of times the data were forced to the disk. +// */ +// public long nforce; +// +// /** +// * #of times the length of the file was changed (typically, extended). +// */ +// public long ntruncate; +// +// /** +// * #of times the file has been reopened after it was closed by an +// * interrupt. +// */ +// public long nreopen; +// +// /** +// * #of times one of the root blocks has been written. +// */ +// public long nwriteRootBlock; +// +// /** +// * Initialize a new set of counters. +// */ +// public StoreCounters() { +// +// } +// +// /** +// * Copy ctor. +// * @param o +// */ +// public StoreCounters(final StoreCounters o) { +// +// add( o ); +// +// } +// +// /** +// * Adds counters to the current counters. +// * +// * @param o +// */ +// public void add(final StoreCounters o) { +// +// nreads += o.nreads; +// ncacheRead += o.ncacheRead; +// ndiskRead += o.ndiskRead; +// bytesRead += o.bytesRead; +// bytesReadFromDisk += o.bytesReadFromDisk; +// maxReadSize += o.maxReadSize; +// elapsedReadNanos += o.elapsedReadNanos; +// elapsedCacheReadNanos += o.elapsedCacheReadNanos; +// elapsedDiskReadNanos += o.elapsedDiskReadNanos; +// +// nwrites += o.nwrites; +// ncacheWrite += o.ncacheWrite; +// ncacheFlush += o.ncacheFlush; +// ndiskWrite += o.ndiskWrite; +// maxWriteSize += o.maxWriteSize; +// bytesWritten += o.bytesWritten; +// bytesWrittenOnDisk += o.bytesWrittenOnDisk; +// elapsedWriteNanos += o.elapsedWriteNanos; +// elapsedCacheWriteNanos += o.elapsedCacheWriteNanos; +// elapsedDiskWriteNanos += o.elapsedDiskWriteNanos; +// +// nforce += o.nforce; +// ntruncate += o.ntruncate; +// nreopen += o.nreopen; +// nwriteRootBlock += o.nwriteRootBlock; +// +// } +// +// /** +// * Returns a new {@link StoreCounters} containing the current counter values +// * minus the given counter values. +// * +// * @param o +// * +// * @return +// */ +// public StoreCounters subtract(final StoreCounters o) { +// +// // make a copy of the current counters. +// final StoreCounters t = new StoreCounters(this); +// +// // subtract out the given counters. +// t.nreads -= o.nreads; +// t.ncacheRead -= o.ncacheRead; +// t.ndiskRead -= o.ndiskRead; +// t.bytesRead -= o.bytesRead; +// t.bytesReadFromDisk -= o.bytesReadFromDisk; +// t.maxReadSize -= o.maxReadSize; +// t.elapsedReadNanos -= o.elapsedReadNanos; +// t.elapsedCacheReadNanos -= o.elapsedCacheReadNanos; +// t.elapsedDiskReadNanos -= o.elapsedDiskReadNanos; +// +// t.nwrites -= o.nwrites; +// t.ncacheWrite -= o.ncacheWrite; +// t.ncacheFlush -= o.ncacheFlush; +// t.ndiskWrite -= o.ndiskWrite; +// t.maxWriteSize -= o.maxWriteSize; +// t.bytesWritten -= o.bytesWritten; +// t.bytesWrittenOnDisk -= o.bytesWrittenOnDisk; +// t.elapsedWriteNanos -= o.elapsedWriteNanos; +// t.elapsedCacheWriteNanos -= o.elapsedCacheWriteNanos; +// t.elapsedDiskWriteNanos -= o.elapsedDiskWriteNanos; +// +// t.nforce -= o.nforce; +// t.ntruncate -= o.ntruncate; +// t.nreopen -= o.nreopen; +// t.nwriteRootBlock -= o.nwriteRootBlock; +// +// return t; +// +// } +// +// synchronized public CounterSet getCounters() { +// +// if (root == null) { +// +// root = new CounterSet(); +// +// // IRawStore API +// { +// +// /* +// * reads +// */ +// +// root.addCounter("nreads", new Instrument<Long>() { +// public void sample() { +// setValue(nreads); +// } +// }); +// +// root.addCounter("bytesRead", new Instrument<Long>() { +// public void sample() { +// setValue(bytesRead); +// } +// }); +// +// root.addCounter("readSecs", new Instrument<Double>() { +// public void sample() { +// final double elapsedReadSecs = (elapsedReadNanos / 1000000000.); +// setValue(elapsedReadSecs); +// } +// }); +// +// root.addCounter("bytesReadPerSec", +// new Instrument<Double>() { +// public void sample() { +// final double readSecs = (elapsedReadNanos / 1000000000.); +// final double bytesReadPerSec = (readSecs == 0L ? 0d +// : (bytesRead / readSecs)); +// setValue(bytesReadPerSec); +// } +// }); +// +// root.addCounter("maxReadSize", new Instrument<Long>() { +// public void sample() { +// setValue(maxReadSize); +// } +// }); +// +// /* +// * writes +// */ +// +// root.addCounter("nwrites", new Instrument<Long>() { +// public void sample() { +// setValue(nwrites); +// } +// }); +// +// root.addCounter("bytesWritten", new Instrument<Long>() { +// public void sample() { +// setValue(bytesWritten); +// } +// }); +// +// root.addCounter("writeSecs", new Instrument<Double>() { +// public void sample() { +// final double writeSecs = (elapsedWriteNanos / 1000000000.); +// setValue(writeSecs); +// } +// }); +// +// root.addCounter("bytesWrittenPerSec", +// new Instrument<Double>() { +// public void sample() { +// final double writeSecs = (elapsedWriteNanos / 1000000000.); +// final double bytesWrittenPerSec = (writeSecs == 0L ? 0d +// : (bytesWritten / writeSecs)); +// setValue(bytesWrittenPerSec); +// } +// }); +// +// root.addCounter("maxWriteSize", new Instrument<Long>() { +// public void sample() { +// setValue(maxWriteSize); +// } +// }); +// +// } +// +// /* +// * write cache statistics +// */ +// { +// +// final CounterSet writeCache = root.makePath("writeCache"); +// +// /* +// * read +// */ +// writeCache.addCounter("nread", new Instrument<Long>() { +// public void sample() { +// setValue(ncacheRead); +// } +// }); +// +// writeCache.addCounter("readHitRate", new Instrument<Double>() { +// public void sample() { +// setValue(nreads == 0L ? 0d : (double) ncacheRead +// / nreads); +// } +// }); +// +// writeCache.addCounter("readSecs", new Instrument<Double>() { +// public void sample() { +// setValue(elapsedCacheReadNanos / 1000000000.); +// } +// }); +// +// /* +// * write +// */ +// +// // #of writes on the write cache. +// writeCache.addCounter("nwrite", new Instrument<Long>() { +// public void sample() { +// setValue(ncacheWrite); +// } +// }); +// +// /* +// * % of writes that are buffered vs writing through to the +// * disk. +// * +// * Note: This will be 1.0 unless you are writing large +// * records. Large records are written directly to the disk +// * rather than first into the write cache. When this happens +// * the writeHitRate on the cache can be less than one. +// */ +// writeCache.addCounter("writeHitRate", new Instrument<Double>() { +// public void sample() { +// setValue(nwrites == 0L ? 0d : (double) ncacheWrite +// / nwrites); +// } +// }); +// +// writeCache.addCounter("writeSecs", new Instrument<Double>() { +// public void sample() { +// setValue(elapsedCacheWriteNanos / 1000000000.); +// } +// }); +// +// // #of times the write cache was flushed to the disk. +// writeCache.addCounter("nflush", new Instrument<Long>() { +// public void sample() { +// setValue(ncacheFlush); +// } +// }); +// +// } +// +// // disk statistics +// { +// final CounterSet disk = root.makePath("disk"); +// +// /* +// * read +// */ +// +// disk.addCounter("nreads", new Instrument<Long>() { +// public void sample() { +// setValue(ndiskRead); +// } +// }); +// +// disk.addCounter("bytesRead", new Instrument<Long>() { +// public void sample() { +// setValue(bytesReadFromDisk); +// } +// }); +// +// disk.addCounter("bytesPerRead", new Instrument<Double>() { +// public void sample() { +// final double bytesPerDiskRead = (ndiskRead == 0 ? 0d +// : (bytesReadFromDisk / (double)ndiskRead)); +// setValue(bytesPerDiskRead); +// } +// }); +// +// disk.addCounter("readSecs", new Instrument<Double>() { +// public void sample() { +// final double diskReadSecs = (elapsedDiskReadNanos / 1000000000.); +// setValue(diskReadSecs); +// } +// }); +// +// disk.addCounter("bytesReadPerSec", +// new Instrument<Double>() { +// public void sample() { +// final double diskReadSecs = (elapsedDiskReadNanos / 1000000000.); +// final double bytesReadPerSec = (diskReadSecs == 0L ? 0d +// : bytesReadFromDisk / diskReadSecs); +// setValue(bytesReadPerSec); +// } +// }); +// +// disk.addCounter("secsPerRead", new Instrument<Double>() { +// public void sample() { +// final double diskReadSecs = (elapsedDiskReadNanos / 1000000000.); +// final double readLatency = (diskReadSecs == 0 ? 0d +// : diskReadSecs / ndiskRead); +// setValue(readLatency); +// } +// }); +// +// /* +// * write +// */ +// +// disk.addCounter("nwrites", new Instrument<Long>() { +// public void sample() { +// setValue(ndiskWrite); +// } +// }); +// +// disk.addCounter("bytesWritten", new Instrument<Long>() { +// public void sample() { +// setValue(bytesWrittenOnDisk); +// } +// }); +// +// disk.addCounter("bytesPerWrite", new Instrument<Double>() { +// public void sample() { +// final double bytesPerDiskWrite = (ndiskWrite == 0 ? 0d +// : (bytesWrittenOnDisk / (double)ndiskWrite)); +// setValue(bytesPerDiskWrite); +// } +// }); +// +// disk.addCounter("writeSecs", new Instrument<Double>() { +// public void sample() { +// final double diskWriteSecs = (elapsedDiskWriteNanos / 1000000000.); +// setValue(diskWriteSecs); +// } +// }); +// +// disk.addCounter("bytesWrittenPerSec", +// new Instrument<Double>() { +// public void sample() { +// final double diskWriteSecs = (elapsedDiskWriteNanos / 1000000000.); +// final double bytesWrittenPerSec = (diskWriteSecs == 0L ? 0d +// : bytesWrittenOnDisk +// / diskWriteSecs); +// setValue(bytesWrittenPerSec); +// } +// }); +// +// disk.addCounter("secsPerWrite", new Instrument<Double>() { +// public void sample() { +// final double diskWriteSecs = (elapsedDiskWriteNanos / 1000000000.); +// final double writeLatency = (diskWriteSecs == 0 ? 0d +// : diskWriteSecs / ndiskWrite); +// setValue(writeLatency); +// } +// }); +// +// /* +// * other +// */ +// +// disk.addCounter("nforce", new Instrument<Long>() { +// public void sample() { +// setValue(nforce); +// } +// }); +// +// disk.addCounter("nextend", new Instrument<Long>() { +// public void sample() { +// setValue(ntruncate); +// } +// }); +// +// disk.addCounter("nreopen", new Instrument<Long>() { +// public void sample() { +// setValue(nreopen); +// } +// }); +// +// disk.addCounter("rootBlockWrites", new Instrument<Long>() { +// public void sample() { +// setValue(nwriteRootBlock); +// } +// }); +// +// } +// +// } +// +// return root; +// +// } +// private CounterSet root; +// +// /** +// * Human readable representation of the counters. +// */ +// public String toString() { +// +// return getCounters().toString(); +// +// } +// +// } // class StoreCounters /** * Performance counters for this class. @@ -1615,7 +1616,7 @@ */ storeCounters.nreads++; storeCounters.bytesRead+=nbytes; - storeCounters.ncacheRead++; +// storeCounters.ncacheRead++; storeCounters.elapsedReadNanos+=(System.nanoTime()-begin); // return the new buffer. @@ -1623,7 +1624,7 @@ } else { - storeCounters.elapsedCacheReadNanos+=(System.nanoTime()-beginCache); +// storeCounters.elapsedCacheReadNanos+=(System.nanoTime()-beginCache); } @@ -2109,10 +2110,10 @@ writeCache.write(addr, data); - storeCounters.ncacheWrite++; +// storeCounters.ncacheWrite++; +// +// storeCounters.elapsedCacheWriteNanos+=(System.nanoTime()-beginCache); - storeCounters.elapsedCacheWriteNanos+=(System.nanoTime()-beginCache); - } } else { Modified: trunk/bigdata/src/java/com/bigdata/resources/OverflowManager.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/resources/OverflowManager.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/resources/OverflowManager.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -724,33 +724,36 @@ + ".movePercentCpuTimeThreshold"; String DEFAULT_MOVE_PERCENT_CPU_TIME_THRESHOLD = ".7"; - - /** - * The maximum #of optional compacting merge operations that will be - * performed during a single overflow event (default - * {@value #DEFAULT_OPTIONAL_COMPACTING_MERGES_PER_OVERFLOW}). - * <p> - * Once this #of optional compacting merge tasks have been identified - * for a given overflow event, the remainder of the index partitions - * that are neither split, joined, moved, nor copied will use - * incremental builds. An incremental build is generally cheaper since - * it only copies the data on the mutable {@link BTree} for the - * lastCommitTime rather than the fused view. A compacting merge permits - * the older index segments to be released and results in a simpler view - * with view {@link IndexSegment}s. Either a compacting merge or an - * incremental build will permit old journals to be released once the - * commit points on those journals are no longer required. - * <p> - * Note: Mandatory compacting merges are identified based on - * {@link #MAXIMUM_JOURNALS_PER_VIEW} and - * {@link #MAXIMUM_SEGMENTS_PER_VIEW}. There is NO limit the #of - * mandatory compacting merges that will be performed during an - * asynchronous overflow event. However, each mandatory compacting merge - * does count towards the maximum #of optional merges. Therefore if the - * #of mandatory compacting merges is greater than this parameter then - * NO optional compacting merges will be selected in a given overflow - * cycle. - */ + + /** + * The maximum #of optional compacting merge operations that will be + * performed during a single overflow event (default + * {@value #DEFAULT_OPTIONAL_COMPACTING_MERGES_PER_OVERFLOW}). + * <p> + * Once this #of optional compacting merge tasks have been identified + * for a given overflow event, the remainder of the index partitions + * that are neither split, joined, moved, nor copied will use + * incremental builds. An incremental build is generally cheaper since + * it only copies the data on the mutable {@link BTree} for the + * lastCommitTime rather than the fused view. A compacting merge permits + * the older index segments to be released and results in a simpler view + * with view {@link IndexSegment}s. Either a compacting merge or an + * incremental build will permit old journals to be released once the + * commit points on those journals are no longer required. + * <p> + * Note: Mandatory compacting merges are identified based on + * {@link #MAXIMUM_JOURNALS_PER_VIEW} and + * {@link #MAXIMUM_SEGMENTS_PER_VIEW}. There is NO limit the #of + * mandatory compacting merges that will be performed during an + * asynchronous overflow event. However, each mandatory compacting merge + * does count towards the maximum #of optional merges. Therefore if the + * #of mandatory compacting merges is greater than this parameter then + * NO optional compacting merges will be selected in a given overflow + * cycle. + * + * @deprecated merges are now performed in priority order while time + * remains in a given asynchronous overflow cycle. + */ String MAXIMUM_OPTIONAL_MERGES_PER_OVERFLOW = OverflowManager.class .getName() + ".maximumOptionalMergesPerOverflow"; Modified: trunk/bigdata/src/java/com/bigdata/resources/ResourceEvents.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/resources/ResourceEvents.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/resources/ResourceEvents.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -112,7 +112,8 @@ /** * Leading zeros without commas used to format the partition identifiers - * into index segment file names. + * into index segment file names. This uses 10 digits, which is enough + * to represent {@link Integer#MAX_VALUE}. */ static NumberFormat leadingZeros; @@ -130,7 +131,7 @@ leadingZeros = NumberFormat.getIntegerInstance(); - leadingZeros.setMinimumIntegerDigits(5); + leadingZeros.setMinimumIntegerDigits(10); leadingZeros.setGroupingUsed(false); Modified: trunk/bigdata/src/java/com/bigdata/resources/StoreManager.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/resources/StoreManager.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/resources/StoreManager.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -85,8 +85,9 @@ import com.bigdata.journal.ITx; import com.bigdata.journal.Name2Addr; import com.bigdata.journal.TemporaryStore; +import com.bigdata.journal.WORMStrategy; import com.bigdata.journal.WriteExecutorService; -import com.bigdata.journal.DiskOnlyStrategy.StoreCounters; +import com.bigdata.journal.WORMStrategy.StoreCounters; import com.bigdata.mdi.IPartitionMetadata; import com.bigdata.mdi.IResourceMetadata; import com.bigdata.mdi.IndexPartitionCause; @@ -2454,6 +2455,11 @@ ((DiskOnlyStrategy) getBufferStrategy()) .setStoreCounters(getStoreCounters()); + } else if (getBufferStrategy() instanceof WORMStrategy) { + + ((WORMStrategy) getBufferStrategy()) + .setStoreCounters(getStoreCounters()); + } } @@ -4556,7 +4562,7 @@ // make sure that directory exists. indexDir.mkdirs(); - final String partitionStr = (partitionId == -1 ? "" : "_part" + final String partitionStr = (partitionId == -1 ? "" : "_shardId" + leadingZeros.format(partitionId)); final String prefix = mungedName + "" + partitionStr + "_"; Modified: trunk/bigdata/src/java/com/bigdata/service/DataService.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/service/DataService.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/service/DataService.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -413,6 +413,7 @@ * reattaching the counters for the live {@link ManagedJournal} during * synchronous overflow. */ + @Override synchronized public void reattachDynamicCounters() { final long now = System.currentTimeMillis(); @@ -422,6 +423,9 @@ if (service.isOpen() && service.resourceManager.isRunning() && elapsed > 5000/* ms */) { + // inherit base class behavior + super.reattachDynamicCounters(); + // The service's counter set hierarchy. final CounterSet serviceRoot = service.getFederation() .getServiceCounterSet(); Modified: trunk/bigdata/src/java/com/bigdata/service/DefaultServiceFederationDelegate.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/service/DefaultServiceFederationDelegate.java 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/bigdata/src/java/com/bigdata/service/DefaultServiceFederationDelegate.java 2010-08-01 18:53:21 UTC (rev 3382) @@ -41,7 +41,11 @@ import org.apache.log4j.Logger; import com.bigdata.counters.CounterSet; +import com.bigdata.counters.ICounterSet; +import com.bigdata.counters.IProcessCounters; import com.bigdata.counters.httpd.CounterSetHTTPD; +import com.bigdata.io.DirectBufferPool; +import com.bigdata.journal.ConcurrencyManager.IConcurrencyManagerCounters; import com.bigdata.util.httpd.AbstractHTTPD; /** @@ -92,9 +96,31 @@ } - /** NOP */ - public void reattachDynamicCounters() { + /** Reattaches the {@link DirectBufferPool} counters. */ + public void reattachDynamicCounters() { + // The service's counter set hierarchy. + final CounterSet serviceRoot = service.getFederation() + .getServiceCounterSet(); + + // Ensure path exists. + final CounterSet tmp = serviceRoot.makePath(IProcessCounters.Memory); + + /* + * Add counters reporting on the various DirectBufferPools. + */ + synchronized (tmp) { + + // detach the old counters (if any). + tmp.detach("DirectBufferPool"); + + // attach the current counters. + tmp.makePath("DirectBufferPool").attach( + DirectBufferPool.getCounters()); + + } + + } /** Modified: trunk/src/resources/analysis/queries/benchmark.txt =================================================================== --- trunk/src/resources/analysis/queries/benchmark.txt 2010-07-31 00:52:15 UTC (rev 3381) +++ trunk/src/resources/analysis/queries/benchmark.txt 2010-08-01 18:53:21 UTC (rev 3382) @@ -75,7 +75,8 @@ http://localhost:8080/?regex=/([^/]*)/.*Memory/Bytes%20Free&correlated=true&depth=3&file=memory/BytesFree http://localhost:8080/?regex=/([^/]*)/.*Memory/Swap%20Bytes%20Used&correlated=true&depth=3&period=Minutes&file=memory/SwapBytesUsed http://localhost:8080/?regex=/([^/]*)/.*Memory/Major%20Page%20Faults%20Per%20Second&correlated=true&depth=3&period=Minutes&file=memory/MajorPageFaultsPerSecond -http://localhost:8080/?regex=/([^/]*)/.*IDataService/.*/Memory/DirectBufferPool/poolSize&correlated=true&depth=12&file=memory/directBufferPool/poolSize +http://localhost:8080/?regex=/([^/]*)/.*IDataService/.*/Memory/DirectBufferPool/totalBytesUsed&correlated=true&depth=12&file=memory/directBufferPool/totalBytesUsed +http://localhost:8080/?regex=/([^/]*)/.*IDataService/.*/Memory/DirectBufferPool/(.*)/poolSize&correlated=true&depth=12&file=memory/directBufferPool/poolSize http://localhost:8080/?regex=/([^/]*)/.*(IDataService|IClientService)/.*/Memory/Virtual%20Size&correlated=true&depth=12&file=memory/VirtualSize http://localhost:8080/?regex=/... [truncated message content] |
From: <tho...@us...> - 2010-07-31 00:52:22
|
Revision: 3381 http://bigdata.svn.sourceforge.net/bigdata/?rev=3381&view=rev Author: thompsonbry Date: 2010-07-31 00:52:15 +0000 (Sat, 31 Jul 2010) Log Message: ----------- Restored BSBM Q9 since the DESCRIBE now executes as quickly as the CONSTRUCT. Modified Paths: -------------- trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9.txt Added Paths: ----------- trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9-modified.txt Added: trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9-modified.txt =================================================================== --- trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9-modified.txt (rev 0) +++ trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9-modified.txt 2010-07-31 00:52:15 UTC (rev 3381) @@ -0,0 +1,7 @@ +PREFIX rev: <http://purl.org/stuff/rev#> +CONSTRUCT { ?x ?p1 ?o . ?s ?p2 ?x . } +WHERE { + { %ReviewXYZ% rev:reviewer ?x . ?x ?p1 ?o . } + UNION + { %ReviewXYZ% rev:reviewer ?x . ?s ?p2 ?x . } +} \ No newline at end of file Modified: trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9.txt =================================================================== --- trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9.txt 2010-07-30 22:46:19 UTC (rev 3380) +++ trunk/bigdata-perf/bsbm/src/resources/bsbm-data/queries/query9.txt 2010-07-31 00:52:15 UTC (rev 3381) @@ -1,7 +1,4 @@ PREFIX rev: <http://purl.org/stuff/rev#> -CONSTRUCT { ?x ?p1 ?o . ?s ?p2 ?x . } -WHERE { - { %ReviewXYZ% rev:reviewer ?x . ?x ?p1 ?o . } - UNION - { %ReviewXYZ% rev:reviewer ?x . ?s ?p2 ?x . } -} \ No newline at end of file + +DESCRIBE ?x +WHERE { %ReviewXYZ% rev:reviewer ?x } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <btm...@us...> - 2010-07-30 22:46:27
|
Revision: 3380 http://bigdata.svn.sourceforge.net/bigdata/?rev=3380&view=rev Author: btmurphy Date: 2010-07-30 22:46:19 +0000 (Fri, 30 Jul 2010) Log Message: ----------- merge -r:3370:HEAD(3378) ~/bigdata/trunk ~/bigdata/branches/dev-btm [trunk --> branch dev-btm] Modified Paths: -------------- branches/dev-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java branches/dev-btm/bigdata/src/java/com/bigdata/sparse/Schema.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestIncrementalWrite.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderCacheInteraction.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithCompactingMerge.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithIncrementalBuild.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithSmallTree.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentWithBloomFilter.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestInsertLookupRemoveKeysInRootLeaf.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestIterators.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestLinearListMethods.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestMutableBTreeCursors.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestReopen.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestSplitJoinRootLeaf.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestSplitJoinThreeLevels.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestSplitRootLeaf.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestTouch.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestTransientBTree.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/filter/TestTupleFilters.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/keys/AbstractUnicodeKeyBuilderTestCase.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/keys/TestSuccessorUtil.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/raba/codec/AbstractRabaCoderTestCase.java branches/dev-btm/bigdata/src/test/com/bigdata/btree/raba/codec/RandomURIGenerator.java branches/dev-btm/bigdata/src/test/com/bigdata/resources/TestBuildTask.java branches/dev-btm/bigdata/src/test/com/bigdata/resources/TestBuildTask2.java branches/dev-btm/bigdata/src/test/com/bigdata/resources/TestMergeTask.java branches/dev-btm/bigdata/src/test/com/bigdata/resources/TestOverflow.java branches/dev-btm/bigdata/src/test/com/bigdata/resources/TestResourceManagerBootstrap.java branches/dev-btm/bigdata/src/test/com/bigdata/resources/TestSegSplitter.java branches/dev-btm/bigdata/src/test/com/bigdata/service/TestMove.java branches/dev-btm/bigdata/src/test/com/bigdata/service/TestRangeQuery.java branches/dev-btm/bigdata/src/test/com/bigdata/service/TestRestartSafe.java branches/dev-btm/bigdata/src/test/com/bigdata/service/TestScatterSplit.java branches/dev-btm/bigdata/src/test/com/bigdata/service/TestSplitJoin.java branches/dev-btm/bigdata/src/test/com/bigdata/service/ndx/pipeline/TestMasterTaskWithSplits.java branches/dev-btm/bigdata-jini/src/test/com/bigdata/service/jini/TestBigdataClient.java branches/dev-btm/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java branches/dev-btm/bigdata-rdf/src/test/com/bigdata/rdf/internal/BlobOverflowHandler.java branches/dev-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPO.java branches/dev-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPORelation.java branches/dev-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOTupleSerializer.java branches/dev-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOValueCoders.java Property Changed: ---------------- branches/dev-btm/ branches/dev-btm/bigdata-jini/src/java/com/bigdata/attr/ branches/dev-btm/bigdata-jini/src/java/com/bigdata/disco/ branches/dev-btm/bigdata-jini/src/java/com/bigdata/util/config/ branches/dev-btm/bigdata-perf/ branches/dev-btm/bigdata-perf/lubm/lib/ branches/dev-btm/bigdata-perf/lubm/src/resources/ branches/dev-btm/bigdata-rdf/src/java/com/bigdata/rdf/util/ branches/dev-btm/bigdata-sails/src/java/com/bigdata/rdf/sail/bench/ branches/dev-btm/dsi-utils/LEGAL/ branches/dev-btm/dsi-utils/lib/ branches/dev-btm/dsi-utils/src/ branches/dev-btm/dsi-utils/src/test/ branches/dev-btm/dsi-utils/src/test/it/ branches/dev-btm/lgpl-utils/src/java/it/unimi/dsi/fastutil/bytes/custom/ branches/dev-btm/lgpl-utils/src/test/it/unimi/dsi/fastutil/bytes/custom/ branches/dev-btm/osgi/ Property changes on: branches/dev-btm ___________________________________________________________________ Modified: svn:mergeinfo - /branches/BTREE_BUFFER_BRANCH:2004-2045 /branches/DEV_BRANCH_27_OCT_2009:2270-2546,2548-2782 /branches/LEXICON_REFACTOR_BRANCH:2633-3304 /branches/bugfix-btm:2594-3237 /branches/fko:3150-3194 /trunk:2575-2594,2596-2877,2882-2903,2910-3370 + /branches/BTREE_BUFFER_BRANCH:2004-2045 /branches/DEV_BRANCH_27_OCT_2009:2270-2546,2548-2782 /branches/LEXICON_REFACTOR_BRANCH:2633-3304 /branches/bugfix-btm:2594-3237 /branches/fko:3150-3194 /trunk:2575-2594,2596-2877,2882-2903,2910-3378 Modified: branches/dev-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java =================================================================== --- branches/dev-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -58,21 +58,21 @@ * Note: The total order of the {@link BigdataMap} is completely determined by * {@link ITupleSerializer#serializeKey(Object)}. There is NO concept of a * {@link Comparator}. The {@link ITupleSerializer} is responsible for coercing - * application keys into variable length <strong>unsigned</strong> byte[]s - * which are the keys for the underlying B+Tree. The order for the B+Tree is the + * application keys into variable length <strong>unsigned</strong> byte[]s which + * are the keys for the underlying B+Tree. The order for the B+Tree is the * natural order for the <strong>unsigned byte[]</strong>s. {@link KeyBuilder} * supports the generation of unsigned byte[]s from various kinds of Java * primitives and Unicode {@link String}s and is typically used to write the * {@link ITupleSerializer#serializeKey(Object)} method. * <p> - * Note: The coercion of the application keys into unsigned byte[]s is not - * typesafe unless you either consistently use a strongly typed instance of this + * Note: The coercion of the application keys into unsigned byte[]s is not type + * safe unless you either consistently use a strongly typed instance of this * class or specify an {@link ITupleSerializer} for the backing B+Tree that only * allows application keys that are instances of acceptable classes. This issue * is more critical for keys than for values since the keys define the total * index order and the default coercion rules for keys are provided by - * {@link KeyBuilder#asSortKey(Object)} which does not attenpt to partition the - * key space by the application key type (keys are not safely polymorphic by + * {@link KeyBuilder#append(Object)} which does not attempt to partition the key + * space by the application key type (keys are not safely polymorphic by * default). * <p> * Note: When storing Java objects in the tuple value, the value MUST be treated Modified: branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java =================================================================== --- branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -33,6 +33,7 @@ import java.util.Locale; import java.util.Properties; import java.util.UUID; + import com.bigdata.btree.BytesUtil; import com.bigdata.btree.keys.KeyBuilder.Options; @@ -88,7 +89,6 @@ * {@link #appendText(String, boolean, boolean)}. * </p> * - * @see KeyBuilder#asSortKey(Object) * @see KeyBuilder#newInstance() * @see KeyBuilder#newUnicodeInstance() * @see KeyBuilder#newUnicodeInstance(Properties) @@ -97,7 +97,7 @@ * @author <a href="mailto:tho...@us...">Bryan Thompson</a> * @version $Id$ */ -public interface IKeyBuilder extends ISortKeyBuilder { +public interface IKeyBuilder extends ISortKeyBuilder<Object> { /** * The #of bytes of data in the key. Modified: branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java =================================================================== --- branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -1065,78 +1065,8 @@ } - /* - * static helper methods. - */ - - /** - * Used to unbox an application key (convert it to an unsigned byte[]). - */ - static private final IKeyBuilder _keyBuilder = newUnicodeInstance(); - - /** - * Utility method converts an application key to a sort key (an unsigned - * byte[] that imposes the same sort order). - * <p> - * Note: This method is thread-safe. - * <p> - * Note: Strings are Unicode safe for the default locale. See - * {@link Locale#getDefault()}. If you require a specific local or different - * locals at different times or for different indices then you MUST - * provision and apply your own {@link KeyBuilder}. - * - * @param val - * An application key. - * - * @return The unsigned byte[] equivalent of that key. This will be - * <code>null</code> iff the <i>key</i> is <code>null</code>. If the - * <i>key</i> is a byte[], then the byte[] itself will be returned. - * - * @deprecated This method circumvents explicit configuration of the - * {@link KeyBuilder} and is used nearly exclusively by unit - * tests. While explicit configuration is not required for keys - * which do not include Unicode sort key components, this method - * also relies on a single global {@link KeyBuilder} instance - * protected by a lock. That lock is therefore a bottleneck. The - * correct practice is to use thread-local or per task - * {@link IKeyBuilder}s to avoid lock contention. - */ - @SuppressWarnings("unchecked") - public static final byte[] asSortKey(Object val) { + public byte[] getSortKey(final Object val) { - if (val == null) { - - return null; - - } - - if (val instanceof byte[]) { - - return (byte[]) val; - - } - - /* - * Synchronize on the keyBuilder to avoid concurrent modification of its - * state. - */ - - synchronized (_keyBuilder) { - - return _keyBuilder.getSortKey(val); - -// _keyBuilder.reset(); -// -// _keyBuilder.append( key ); -// -// return _keyBuilder.getKey(); - - } - - } - - public byte[] getSortKey(Object val) { - reset(); append( val ); Modified: branches/dev-btm/bigdata/src/java/com/bigdata/sparse/Schema.java =================================================================== --- branches/dev-btm/bigdata/src/java/com/bigdata/sparse/Schema.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/java/com/bigdata/sparse/Schema.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -141,7 +141,7 @@ /* * One time encoding of the schema name as a Unicode sort key. */ - schemaBytes = KeyBuilder.asSortKey(name); + schemaBytes = asSortKey(name); } } @@ -501,5 +501,51 @@ + ",primaryKeyType=" + getPrimaryKeyType() + "}"; } + + /** + * Used for historical compatibility to unbox an application key (convert it + * to an unsigned byte[]). + */ + static private final IKeyBuilder _keyBuilder = KeyBuilder.newUnicodeInstance(); + + /** + * Utility method for historical compatibility converts an application key + * to a sort key (an unsigned byte[] that imposes the same sort order). + * <p> + * Note: This method is thread-safe. + * + * @param val + * An application key. + * + * @return The unsigned byte[] equivalent of that key. This will be + * <code>null</code> iff the <i>key</i> is <code>null</code>. If the + * <i>key</i> is a byte[], then the byte[] itself will be returned. + */ + private static final byte[] asSortKey(final Object val) { + + if (val == null) { + + return null; + + } + + if (val instanceof byte[]) { + + return (byte[]) val; + + } + + /* + * Synchronize on the keyBuilder to avoid concurrent modification of its + * state. + */ + + synchronized (_keyBuilder) { + + return _keyBuilder.getSortKey(val); + + } + } + } Modified: branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java =================================================================== --- branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -49,6 +49,7 @@ import com.bigdata.btree.keys.IKeyBuilder; import com.bigdata.btree.keys.KV; import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.btree.raba.IRaba; import com.bigdata.btree.raba.codec.RandomKeysGenerator; import com.bigdata.cache.HardReferenceQueue; @@ -1097,7 +1098,7 @@ assertEquals("#entries",i,btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1133,7 +1134,7 @@ for( int i=0; i<keys.length; i++ ) { - byte[] key = KeyBuilder.asSortKey(keys[i]); + byte[] key = TestKeyBuilder.asSortKey(keys[i]); assertEquals(entries[i],btree.lookup(key)); assertEquals(entries[i],btree.remove(key)); @@ -1216,7 +1217,7 @@ assertEquals("#entries",i,btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1252,7 +1253,7 @@ for( int i=0; i<keys.length; i++ ) { - final byte[] key = KeyBuilder.asSortKey(keys[i]); + final byte[] key = TestKeyBuilder.asSortKey(keys[i]); assertEquals(entries[i],btree.lookup(key)); assertEquals(entries[i],btree.remove(key)); @@ -1497,7 +1498,7 @@ assertEquals("#entries", i, btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1687,7 +1688,7 @@ assertEquals("#entries",i,btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1774,7 +1775,7 @@ final Integer ikey = keys[index]; - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); final SimpleEntry val = vals[index]; @@ -1816,7 +1817,7 @@ Map.Entry<Integer,SimpleEntry> entry = itr.next(); - final byte[] tmp = KeyBuilder.asSortKey(entry.getKey()); + final byte[] tmp = TestKeyBuilder.asSortKey(entry.getKey()); assertEquals("lookup(" + entry.getKey() + ")", entry .getValue(), btree.lookup(tmp)); @@ -1855,7 +1856,7 @@ for( int i=0; i<nkeys; i++ ) { - keys[i] = KeyBuilder.asSortKey(i+1); // Note: this produces dense keys with origin ONE(1). + keys[i] = TestKeyBuilder.asSortKey(i+1); // Note: this produces dense keys with origin ONE(1). vals[i] = new SimpleEntry(); @@ -2597,7 +2598,7 @@ for (int i = 0; i < N; i++) { // @todo param governs chance of a key collision and maximum #of distinct keys. - final byte[] key = KeyBuilder.asSortKey(r.nextInt(100000)); + final byte[] key = TestKeyBuilder.asSortKey(r.nextInt(100000)); // Note: #of bytes effects very little that we want to test so we keep it small. final byte[] val = new byte[4]; Modified: branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java =================================================================== --- branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -33,7 +33,7 @@ import junit.framework.TestCase2; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.btree.raba.ReadOnlyKeysRaba; import com.bigdata.rawstore.SimpleMemoryRawStore; @@ -287,65 +287,65 @@ // seek to a probe key that does not exist. assertEquals(null, cursor.seek(29)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(29),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(29),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(30, "James"), cursor.next()); assertEquals(new TestTuple<String>(30, "James"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(30),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(30),cursor.currentKey()); assertFalse(cursor.hasNext()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); // seek to a probe key that does not exist. assertEquals(null, cursor.seek(9)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(9),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(9),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.next()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.next()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); // seek to a probe key that does not exist and scan forward. assertEquals(null, cursor.seek(19)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(19),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(19),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.next()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(30, "James"), cursor.next()); assertEquals(new TestTuple<String>(30, "James"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(30),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(30),cursor.currentKey()); // seek to a probe key that does not exist and scan backward. assertEquals(null, cursor.seek(19)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(19),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(19),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); // seek to a probe key that does not exist (after all valid tuples). assertEquals(null, cursor.seek(31)); assertEquals(null, cursor.tuple()); assertTrue(cursor.isCursorPositionDefined()); - assertEquals(KeyBuilder.asSortKey(31),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(31),cursor.currentKey()); assertFalse(cursor.hasNext()); // seek to a probe key that does not exist (after all valid tuples). assertEquals(null, cursor.seek(31)); assertEquals(null, cursor.tuple()); assertTrue(cursor.isCursorPositionDefined()); - assertEquals(KeyBuilder.asSortKey(31),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(31),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(30, "James"), cursor.prior()); @@ -369,9 +369,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(20); + final byte[] toKey = TestKeyBuilder.asSortKey(20); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -412,9 +412,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(20); + final byte[] fromKey = TestKeyBuilder.asSortKey(20); - final byte[] toKey = KeyBuilder.asSortKey(30); + final byte[] toKey = TestKeyBuilder.asSortKey(30); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -458,9 +458,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(19); + final byte[] toKey = TestKeyBuilder.asSortKey(19); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -471,7 +471,7 @@ // assertEquals(KeyBuilder.asSortKey(19),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -481,19 +481,19 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(29); + final byte[] toKey = TestKeyBuilder.asSortKey(29); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -503,16 +503,16 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(11); + final byte[] toKey = TestKeyBuilder.asSortKey(11); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -574,15 +574,15 @@ assertEquals("ntuples", 5, btree.getEntryCount()); // The separator key is (30). - assertEquals(KeyBuilder.asSortKey(30), ((Node) btree.getRoot()) + assertEquals(TestKeyBuilder.asSortKey(30), ((Node) btree.getRoot()) .getKeys().get(0)); // Verify the expected keys in the 1st leaf. AbstractBTreeTestCase.assertKeys( // new ReadOnlyKeysRaba(new byte[][] {// - KeyBuilder.asSortKey(10), // - KeyBuilder.asSortKey(20), // + TestKeyBuilder.asSortKey(10), // + TestKeyBuilder.asSortKey(20), // }),// ((Node) btree.getRoot()).getChild(0/* 1st leaf */).getKeys()); @@ -590,9 +590,9 @@ AbstractBTreeTestCase.assertKeys( // new ReadOnlyKeysRaba(new byte[][] {// - KeyBuilder.asSortKey(30), // - KeyBuilder.asSortKey(40), // - KeyBuilder.asSortKey(50),// + TestKeyBuilder.asSortKey(30), // + TestKeyBuilder.asSortKey(40), // + TestKeyBuilder.asSortKey(50),// }),// ((Node) btree.getRoot()).getChild(1/* 2nd leaf */).getKeys()); @@ -627,16 +627,16 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(30); + final byte[] toKey = TestKeyBuilder.asSortKey(30); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); } @@ -647,16 +647,16 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(0); + final byte[] fromKey = TestKeyBuilder.asSortKey(0); - final byte[] toKey = KeyBuilder.asSortKey(19); + final byte[] toKey = TestKeyBuilder.asSortKey(19); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -668,9 +668,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(0); + final byte[] fromKey = TestKeyBuilder.asSortKey(0); - final byte[] toKey = KeyBuilder.asSortKey(9); + final byte[] toKey = TestKeyBuilder.asSortKey(9); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -698,7 +698,7 @@ * Verify that the separatorKey in the parent is the first tuple we * expect to find in the 2nd leaf. */ - assertEquals(KeyBuilder.asSortKey(30), ((Node) btree.getRoot()) + assertEquals(TestKeyBuilder.asSortKey(30), ((Node) btree.getRoot()) .getKeys().get(0)); /* @@ -711,29 +711,29 @@ // Remove the first tuple in the 2nd leaf. btree.remove(30); // The separator key has not been changed. - assertEquals(((Node) btree.getRoot()).getKeys().get(0), KeyBuilder + assertEquals(((Node) btree.getRoot()).getKeys().get(0), TestKeyBuilder .asSortKey(30)); // The #of leaves has not been changed. assertEquals(2, btree.getLeafCount()); // Verify the expected keys in the 2nd leaf. AbstractBTreeTestCase.assertKeys(// new ReadOnlyKeysRaba(new byte[][]{// - KeyBuilder.asSortKey(40),// - KeyBuilder.asSortKey(50),// + TestKeyBuilder.asSortKey(40),// + TestKeyBuilder.asSortKey(50),// }),// ((Node) btree.getRoot()).getChild(1/*2nd leaf*/).getKeys()); - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); // search for the tuple we just deleted from the 2nd leaf. - final byte[] toKey = KeyBuilder.asSortKey(30); + final byte[] toKey = TestKeyBuilder.asSortKey(30); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(20), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20), cursor.currentKey()); assertTrue(cursor.hasPrior()); } @@ -862,9 +862,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(2); + final byte[] fromKey = TestKeyBuilder.asSortKey(2); - final byte[] toKey = KeyBuilder.asSortKey(7); + final byte[] toKey = TestKeyBuilder.asSortKey(7); // first() { @@ -1107,7 +1107,7 @@ assertNull(cursor.seek(1)); - assertEquals(KeyBuilder.asSortKey(1), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.currentKey()); assertFalse(cursor.hasPrior()); @@ -1141,9 +1141,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(5); + final byte[] fromKey = TestKeyBuilder.asSortKey(5); - final byte[] toKey = KeyBuilder.asSortKey(9); + final byte[] toKey = TestKeyBuilder.asSortKey(9); // first() { @@ -1237,7 +1237,7 @@ assertNull(cursor.seek(7)); - assertEquals(KeyBuilder.asSortKey(7), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.currentKey()); assertFalse(cursor.hasPrior()); @@ -1254,9 +1254,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(15); + final byte[] fromKey = TestKeyBuilder.asSortKey(15); - final byte[] toKey = KeyBuilder.asSortKey(19); + final byte[] toKey = TestKeyBuilder.asSortKey(19); // first() { @@ -1338,7 +1338,7 @@ assertNull(cursor.seek(17)); - assertEquals(KeyBuilder.asSortKey(17), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(17), cursor.currentKey()); assertFalse(cursor.hasPrior()); Modified: branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java =================================================================== --- branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -33,7 +33,7 @@ import junit.framework.TestCase2; import com.bigdata.btree.BTree.Stack; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.rawstore.SimpleMemoryRawStore; /** @@ -125,56 +125,56 @@ ILeafCursor<Leaf> cursor = btree.newLeafCursor(SeekEnum.First); // verify first leaf since that is where we positioned the cursor. - assertEquals(KeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); // first(). - assertEquals(KeyBuilder.asSortKey(1), cursor.first().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.first().getKeys().get(0)); // last(). - assertEquals(KeyBuilder.asSortKey(9), cursor.last().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.last().getKeys().get(0)); } public void test_seek() { - ILeafCursor<Leaf> cursor = btree.newLeafCursor(KeyBuilder.asSortKey(5)); + ILeafCursor<Leaf> cursor = btree.newLeafCursor(TestKeyBuilder.asSortKey(5)); // verify initial seek. - assertEquals(KeyBuilder.asSortKey(5), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.leaf().getKeys().get(0)); // verify seek to each key found in the B+Tree. - assertEquals(KeyBuilder.asSortKey(1), cursor.seek( - KeyBuilder.asSortKey(1)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.seek( + TestKeyBuilder.asSortKey(1)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(1), cursor.seek( - KeyBuilder.asSortKey(2)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.seek( + TestKeyBuilder.asSortKey(2)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(3), cursor.seek( - KeyBuilder.asSortKey(3)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.seek( + TestKeyBuilder.asSortKey(3)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(3), cursor.seek( - KeyBuilder.asSortKey(4)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.seek( + TestKeyBuilder.asSortKey(4)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(5), cursor.seek( - KeyBuilder.asSortKey(5)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.seek( + TestKeyBuilder.asSortKey(5)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(5), cursor.seek( - KeyBuilder.asSortKey(6)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.seek( + TestKeyBuilder.asSortKey(6)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(7), cursor.seek( - KeyBuilder.asSortKey(7)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.seek( + TestKeyBuilder.asSortKey(7)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(7), cursor.seek( - KeyBuilder.asSortKey(8)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.seek( + TestKeyBuilder.asSortKey(8)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(9), cursor.seek( - KeyBuilder.asSortKey(9)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.seek( + TestKeyBuilder.asSortKey(9)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(9), cursor.seek( - KeyBuilder.asSortKey(10)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.seek( + TestKeyBuilder.asSortKey(10)).getKeys().get(0)); // verify seek to key that would be in the last leaf but is not actually in the B+Tree. - assertEquals(KeyBuilder.asSortKey(9),cursor.seek(KeyBuilder.asSortKey(12)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9),cursor.seek(TestKeyBuilder.asSortKey(12)).getKeys().get(0)); } @@ -184,19 +184,19 @@ ILeafCursor<Leaf> cursor = btree.newLeafCursor(SeekEnum.First); // verify first leaf since that is where we positioned the cursor. - assertEquals(KeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(3), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.next().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(5), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.next().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(7), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.next().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(9), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.next().getKeys().get(0)); } @@ -205,19 +205,19 @@ ILeafCursor<Leaf> cursor = btree.newLeafCursor(SeekEnum.Last); // verify last leaf since that is where we positioned the cursor. - assertEquals(KeyBuilder.asSortKey(9), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.leaf().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(7), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.prior().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(5), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.prior().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(3), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.prior().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(1), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.prior().getKeys().get(0)); } @@ -247,7 +247,7 @@ for (int i = 1; i <= 10; i++) { - btree.insert(KeyBuilder.asSortKey(i), "v"+i); + btree.insert(TestKeyBuilder.asSortKey(i), "v"+i); } Modified: branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java =================================================================== --- branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -39,7 +39,7 @@ import com.bigdata.btree.keys.DefaultKeyBuilderFactory; import com.bigdata.btree.keys.IKeyBuilderFactory; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.io.SerializerUtil; import com.bigdata.rawstore.SimpleMemoryRawStore; @@ -163,7 +163,7 @@ * Handles {@link String} keys and values and makes the keys available for * {@link BigdataMap} and {@link BigdataSet} (under the assumption that the * key and the value are the same!). The actual index order is governed by - * {@link KeyBuilder#asSortKey(Object)}. + * {@link TestKeyBuilder#asSortKey(Object)}. * * @author <a href="mailto:tho...@us...">Bryan Thompson</a> * @version $Id$ Modified: branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java =================================================================== --- branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -36,6 +36,7 @@ import com.bigdata.btree.filter.TupleFilter; import com.bigdata.btree.keys.DefaultKeyBuilderFactory; import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.io.SerializerUtil; import com.bigdata.rawstore.IBlock; import com.bigdata.rawstore.SimpleMemoryRawStore; @@ -109,7 +110,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; @@ -203,7 +204,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; @@ -337,7 +338,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; @@ -425,7 +426,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; Modified: branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java =================================================================== --- branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -29,7 +29,7 @@ import org.apache.log4j.Level; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; /** * Test suite for copy-on-write semantics. Among other things the tests in this @@ -79,12 +79,12 @@ SimpleEntry v9 = new SimpleEntry(9); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -100,8 +100,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -141,7 +141,7 @@ * triggers copy-on-write for (a). (a1) is dirty as a post-condition. * (d) is deleted as a post-condition. */ - assertEquals(v1,btree.remove(KeyBuilder.asSortKey(1))); + assertEquals(v1,btree.remove(TestKeyBuilder.asSortKey(1))); assertKeys(new int[]{7},c); assertNotSame(a,c.getChild(0)); final Leaf a1 = (Leaf)c.getChild(0); @@ -160,7 +160,7 @@ * insert a key that will go into (b). since (b) is immutable this * triggers copy-on-write. */ - btree.insert(KeyBuilder.asSortKey(8),v8); + btree.insert(TestKeyBuilder.asSortKey(8),v8); assertKeys(new int[]{7},c); assertEquals(a1,c.getChild(0)); assertNotSame(b,c.getChild(1)); @@ -194,7 +194,7 @@ * (b1) is clean, so it is stolen by setting its parent reference * to the new (c1). */ - assertEquals(v2,btree.remove(KeyBuilder.asSortKey(2))); + assertEquals(v2,btree.remove(TestKeyBuilder.asSortKey(2))); assertNotSame(c,btree.root); final Node c1 = (Node)btree.root; assertKeys(new int[]{7},c1); @@ -245,14 +245,14 @@ * copy-on-write. We verify that the root leaf reference is changed. */ assertEquals(a,btree.root); - btree.insert(KeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(3), v3); assertNotSame(a,btree.root); a = (Leaf)btree.root; // new reference for the root leaf. - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -289,7 +289,7 @@ assertTrue(a.isPersistent()); assertTrue(b.isPersistent()); assertTrue(c.isPersistent()); - btree.insert(KeyBuilder.asSortKey(1), v1); // triggers copy on write for (a) and (c). + btree.insert(TestKeyBuilder.asSortKey(1), v1); // triggers copy on write for (a) and (c). assertNotSame(c,btree.root); c = (Node)btree.root; assertNotSame(a,c.getChild(0)); @@ -300,7 +300,7 @@ assertTrue(b.isPersistent()); assertFalse(c.isPersistent()); // insert more until we split another leaf. - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); // the new leaf (d). @@ -323,8 +323,8 @@ * cause another leaf (d) to split, forcing the split to propagate to and * split the root and the tree to increase in height. */ - btree.insert(KeyBuilder.asSortKey(4), v4); - btree.insert(KeyBuilder.asSortKey(6), v6); + btree.insert(TestKeyBuilder.asSortKey(4), v4); + btree.insert(TestKeyBuilder.asSortKey(6), v6); // btree.dump(Level.DEBUG,System.err); assertNotSame(c,btree.root); final Node g = (Node)btree.root; @@ -365,7 +365,7 @@ * the following are cloned: d, c, g. * the following clean children are stolen: e, b (by the new root c). */ - assertEquals(v4,btree.remove(KeyBuilder.asSortKey(4))); + assertEquals(v4,btree.remove(TestKeyBuilder.asSortKey(4))); assertNotSame(g,btree.root); assertNotSame(c,btree.root); c = (Node) btree.root; @@ -393,7 +393,7 @@ * remove a key (7) from a leaf (b) forcing two leaves (b,e) to join * into (b) */ - assertEquals(v7,btree.remove(KeyBuilder.asSortKey(7))); + assertEquals(v7,btree.remove(TestKeyBuilder.asSortKey(7))); btree.dump(Level.DEBUG,System.err); assertKeys(new int[]{5},c); assertEquals(d,c.getChild(0)); @@ -421,16 +421,16 @@ assertEquals(c,btree.root); assertEquals(d,c.getChild(0)); assertEquals(b,c.getChild(1)); - assertEquals(v3, btree.remove(KeyBuilder.asSortKey(3))); // remove from (d) + assertEquals(v3, btree.remove(TestKeyBuilder.asSortKey(3))); // remove from (d) assertNotSame(c,btree.root); // c was cloned. c = (Node) btree.root; assertNotSame(d,c.getChild(0)); d = (Leaf)c.getChild(0); // d was cloned. assertEquals(b,c.getChild(1)); - assertEquals(v5,btree.remove(KeyBuilder.asSortKey(5))); // remove from (b) + assertEquals(v5,btree.remove(TestKeyBuilder.asSortKey(5))); // remove from (b) assertNotSame(b,c.getChild(1)); b = (Leaf)c.getChild(1); // b was cloned. - assertEquals(v6,btree.remove(KeyBuilder.asSortKey(6))); // remove from (b) + assertEquals(v6,btree.remove(TestKeyBuilder.asSortKey(6))); // remove from (b) assertKeys(new int[]{1,2,9},b); assertValues(new Object[]{v1,v2,v9}, b); assertTrue(d.isDeleted()); Modified: branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java =================================================================== --- branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java 2010-07-30 22:14:17 UTC (rev 3379) +++ branches/dev-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java 2010-07-30 22:46:19 UTC (rev 3380) @@ -29,7 +29,7 @@ import org.apache.log4j.Level; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; /** * Test suite for iterators that visit only dirty nodes or leaves. This test @@ -82,12 +82,12 @@ SimpleEntry v9 = new SimpleEntry(9); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -109,8 +109,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -135,7 +135,7 @@ * remove a key from a leaf forcing two leaves to join and verify the * visitation order. */ - assertEquals(v1,btree.remove(KeyBuilder.asSortKey(1))); + assertEquals(v1,btree.remove(TestKeyBuilder.asSortKey(1))); assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); assertEquals(b,c.getChild(1)); @@ -187,12 +187,12 @@ SimpleEntry v9 = new SimpleEntry(9); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -212,8 +212,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -258,7 +258,7 @@ * visitation order. this triggers copy-on-write for (a) and (a) is * dirty as a post-condition. */ - assertEquals(v1,btree.remove(KeyBuilder.asSortKey(1))); + assertEquals(v1,btree.remove(TestKeyBuilder.asSortKey(1))); assertKeys(new int[]{7},c); assertNotSame(a,c.getChild(0)); Leaf a1 = (Leaf)c.getChild(0); @@ -279,7 +279,7 @@ * insert a key that will go into (b). since (b) is immutable this * triggers copy-on-write. */ - btree.insert(KeyBuilder.asSortKey(8),v8); + btree.insert(TestKeyBuilder.asSortKey(8),v8); assertKeys(new int[]{7},c); assertEquals(a1,c.getChild(0)); assertNotSame(b,c.getChild(1)); @@ -313,7 +313,7 @@ * remove a key from (a1). since (a1) is immutable this triggers * copy-on-write. since the root is immtuable, it is also copied. */ - assertEquals(v2,btree.remove(KeyBuilder.asSortKey(2))); + assertEquals(v2,btree.remove(TestKeyBuilder.asSortKey(2))); assertNotSame(c,btree.root); Node c1 = (Node)btree.root; assertKeys(new int[]{7},c1); @@ -368,12 +368,12 @@ .postOrderNodeIterator(true)); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -393,8 +393,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -416,8 +416,8 @@ * cause another leaf (d) to split, forcing the split to propagate to and * split the root and the tree to increase in height. */ - btree.insert(KeyBuilder.asSortKey(4), v4); - btree.insert(KeyBuilder.asSortKey(6), v6); + btree.insert(TestKeyBuilder.asSortKey(4), v4); + btree.insert(TestKeyBuilder.asSortKey(6), v6); // btree.dump(Level.DEBUG,System.err); assertNotSame(c,btree.root); final Node g = (Node)btree.root; @@ -450,7 +450,7 @@ * be deleted. this causes (c,f) to merge as well, which in turn forces * the root to be replaced by (c). */ - assertEquals(v4,btree.remove(KeyBuilder.asSortKey(4))); + assertEquals(v4,btree.remove(TestKeyBuilder.asSortKey(4))); // btree.dump(Level.DEBUG,System.err); assertKeys(new int[]{5,7},c); assertEquals(d,c.getChild(0)); @@ -474,7 +474,7 @@ * remove a key (7) from a leaf (b) forcing two leaves to join and * verify the visitation order. */ - assertEquals(v7,btree.remove(KeyBuilder.asSortKey(7))); + assertEquals(v7,btree.remove(TestKeyBuilder.asSortKey(7))); btree.dump(Level.DEBUG,System.err); assertKeys(new int[]{5},c); assertEquals(d,c.getChild(0)); @@ -495,9 +495,9 @@ * remove keys from a leaf forcing the remaining two leaves to join and * verify the visitation order. */ - assertEquals(v3,btree.remove(KeyBuilder.asSortKey(3))); - assertEquals(v5,btree.remove(KeyBuilder.asSortKey(5))); - assertEquals(v6,btree.remove(KeyBuilder.asSortKey(6))); + assertEquals(v3,btree.remove(TestKeyBuilder.asSortKey(3))); + assertEquals(v5,btree.remove(TestKeyBuilder.asSortKey(5))); + assertEquals(v6,btree.remove(TestKeyBuilder.asSortKey(6))); assertKeys(new int[]{1,2,9},b); assertValues(new Object[]{v1,v2,v9}, b); assertTrue(d.isDeleted()); @@ -560,18 +560,18 @@ * and verify that both iterators now visit the root. */ assertEquals(a,btree.root); - btree.insert(KeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(3), v3); assertNotSame(a,btree.root); a = (Leaf)btree.root; // new reference for the root leaf. assertSameIterator(new IAbstractNode[] { btree.root }, btree.root ... [truncated message content] |
From: <btm...@us...> - 2010-07-30 22:14:25
|
Revision: 3379 http://bigdata.svn.sourceforge.net/bigdata/?rev=3379&view=rev Author: btmurphy Date: 2010-07-30 22:14:17 +0000 (Fri, 30 Jul 2010) Log Message: ----------- merge -r:3370:HEAD(3378) ~/bigdata/trunk ~/bigdata/branches/bugfix-btm [trunk --> branch bugfix-btm] Modified Paths: -------------- branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java branches/bugfix-btm/bigdata/src/java/com/bigdata/sparse/Schema.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestIncrementalWrite.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderCacheInteraction.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithCompactingMerge.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithIncrementalBuild.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentBuilderWithSmallTree.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestIndexSegmentWithBloomFilter.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestInsertLookupRemoveKeysInRootLeaf.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestIterators.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestLinearListMethods.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestMutableBTreeCursors.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestReopen.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestSplitJoinRootLeaf.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestSplitJoinThreeLevels.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestSplitRootLeaf.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestTouch.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestTransientBTree.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/filter/TestTupleFilters.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/keys/AbstractUnicodeKeyBuilderTestCase.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/keys/TestSuccessorUtil.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/raba/codec/AbstractRabaCoderTestCase.java branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/raba/codec/RandomURIGenerator.java branches/bugfix-btm/bigdata/src/test/com/bigdata/resources/TestBuildTask.java branches/bugfix-btm/bigdata/src/test/com/bigdata/resources/TestBuildTask2.java branches/bugfix-btm/bigdata/src/test/com/bigdata/resources/TestMergeTask.java branches/bugfix-btm/bigdata/src/test/com/bigdata/resources/TestOverflow.java branches/bugfix-btm/bigdata/src/test/com/bigdata/resources/TestResourceManagerBootstrap.java branches/bugfix-btm/bigdata/src/test/com/bigdata/resources/TestSegSplitter.java branches/bugfix-btm/bigdata/src/test/com/bigdata/service/TestMove.java branches/bugfix-btm/bigdata/src/test/com/bigdata/service/TestRangeQuery.java branches/bugfix-btm/bigdata/src/test/com/bigdata/service/TestRestartSafe.java branches/bugfix-btm/bigdata/src/test/com/bigdata/service/TestScatterSplit.java branches/bugfix-btm/bigdata/src/test/com/bigdata/service/TestSplitJoin.java branches/bugfix-btm/bigdata/src/test/com/bigdata/service/ndx/pipeline/TestMasterTaskWithSplits.java branches/bugfix-btm/bigdata-jini/src/test/com/bigdata/service/jini/TestBigdataClient.java branches/bugfix-btm/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java branches/bugfix-btm/bigdata-rdf/src/test/com/bigdata/rdf/internal/BlobOverflowHandler.java branches/bugfix-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPO.java branches/bugfix-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPORelation.java branches/bugfix-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOTupleSerializer.java branches/bugfix-btm/bigdata-rdf/src/test/com/bigdata/rdf/spo/TestSPOValueCoders.java Property Changed: ---------------- branches/bugfix-btm/ branches/bugfix-btm/bigdata-jini/src/java/com/bigdata/disco/config/ branches/bugfix-btm/bigdata-perf/btc/src/ branches/bugfix-btm/bigdata-perf/lubm/lib/ branches/bugfix-btm/bigdata-perf/lubm/src/resources/ branches/bugfix-btm/bigdata-perf/uniprot/src/ branches/bugfix-btm/dsi-utils/src/java/ branches/bugfix-btm/dsi-utils/src/test/ Property changes on: branches/bugfix-btm ___________________________________________________________________ Modified: svn:mergeinfo - /branches/BTREE_BUFFER_BRANCH:2004-2045 /branches/DEV_BRANCH_27_OCT_2009:2270-2546,2548-2782 /branches/LEXICON_REFACTOR_BRANCH:2633-3304 /branches/dev-btm:2574-2730 /branches/fko:3150-3194 /trunk:2595-2877,2883-3010,3012-3370 + /branches/BTREE_BUFFER_BRANCH:2004-2045 /branches/DEV_BRANCH_27_OCT_2009:2270-2546,2548-2782 /branches/LEXICON_REFACTOR_BRANCH:2633-3304 /branches/dev-btm:2574-2730 /branches/fko:3150-3194 /trunk:2595-2877,2883-3010,3012-3378 Modified: branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java =================================================================== --- branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/BigdataMap.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -58,21 +58,21 @@ * Note: The total order of the {@link BigdataMap} is completely determined by * {@link ITupleSerializer#serializeKey(Object)}. There is NO concept of a * {@link Comparator}. The {@link ITupleSerializer} is responsible for coercing - * application keys into variable length <strong>unsigned</strong> byte[]s - * which are the keys for the underlying B+Tree. The order for the B+Tree is the + * application keys into variable length <strong>unsigned</strong> byte[]s which + * are the keys for the underlying B+Tree. The order for the B+Tree is the * natural order for the <strong>unsigned byte[]</strong>s. {@link KeyBuilder} * supports the generation of unsigned byte[]s from various kinds of Java * primitives and Unicode {@link String}s and is typically used to write the * {@link ITupleSerializer#serializeKey(Object)} method. * <p> - * Note: The coercion of the application keys into unsigned byte[]s is not - * typesafe unless you either consistently use a strongly typed instance of this + * Note: The coercion of the application keys into unsigned byte[]s is not type + * safe unless you either consistently use a strongly typed instance of this * class or specify an {@link ITupleSerializer} for the backing B+Tree that only * allows application keys that are instances of acceptable classes. This issue * is more critical for keys than for values since the keys define the total * index order and the default coercion rules for keys are provided by - * {@link KeyBuilder#asSortKey(Object)} which does not attenpt to partition the - * key space by the application key type (keys are not safely polymorphic by + * {@link KeyBuilder#append(Object)} which does not attempt to partition the key + * space by the application key type (keys are not safely polymorphic by * default). * <p> * Note: When storing Java objects in the tuple value, the value MUST be treated Modified: branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java =================================================================== --- branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -33,6 +33,7 @@ import java.util.Locale; import java.util.Properties; import java.util.UUID; + import com.bigdata.btree.BytesUtil; import com.bigdata.btree.keys.KeyBuilder.Options; @@ -88,7 +89,6 @@ * {@link #appendText(String, boolean, boolean)}. * </p> * - * @see KeyBuilder#asSortKey(Object) * @see KeyBuilder#newInstance() * @see KeyBuilder#newUnicodeInstance() * @see KeyBuilder#newUnicodeInstance(Properties) @@ -97,7 +97,7 @@ * @author <a href="mailto:tho...@us...">Bryan Thompson</a> * @version $Id$ */ -public interface IKeyBuilder extends ISortKeyBuilder { +public interface IKeyBuilder extends ISortKeyBuilder<Object> { /** * The #of bytes of data in the key. Modified: branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java =================================================================== --- branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/java/com/bigdata/btree/keys/KeyBuilder.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -1065,78 +1065,8 @@ } - /* - * static helper methods. - */ - - /** - * Used to unbox an application key (convert it to an unsigned byte[]). - */ - static private final IKeyBuilder _keyBuilder = newUnicodeInstance(); - - /** - * Utility method converts an application key to a sort key (an unsigned - * byte[] that imposes the same sort order). - * <p> - * Note: This method is thread-safe. - * <p> - * Note: Strings are Unicode safe for the default locale. See - * {@link Locale#getDefault()}. If you require a specific local or different - * locals at different times or for different indices then you MUST - * provision and apply your own {@link KeyBuilder}. - * - * @param val - * An application key. - * - * @return The unsigned byte[] equivalent of that key. This will be - * <code>null</code> iff the <i>key</i> is <code>null</code>. If the - * <i>key</i> is a byte[], then the byte[] itself will be returned. - * - * @deprecated This method circumvents explicit configuration of the - * {@link KeyBuilder} and is used nearly exclusively by unit - * tests. While explicit configuration is not required for keys - * which do not include Unicode sort key components, this method - * also relies on a single global {@link KeyBuilder} instance - * protected by a lock. That lock is therefore a bottleneck. The - * correct practice is to use thread-local or per task - * {@link IKeyBuilder}s to avoid lock contention. - */ - @SuppressWarnings("unchecked") - public static final byte[] asSortKey(Object val) { + public byte[] getSortKey(final Object val) { - if (val == null) { - - return null; - - } - - if (val instanceof byte[]) { - - return (byte[]) val; - - } - - /* - * Synchronize on the keyBuilder to avoid concurrent modification of its - * state. - */ - - synchronized (_keyBuilder) { - - return _keyBuilder.getSortKey(val); - -// _keyBuilder.reset(); -// -// _keyBuilder.append( key ); -// -// return _keyBuilder.getKey(); - - } - - } - - public byte[] getSortKey(Object val) { - reset(); append( val ); Modified: branches/bugfix-btm/bigdata/src/java/com/bigdata/sparse/Schema.java =================================================================== --- branches/bugfix-btm/bigdata/src/java/com/bigdata/sparse/Schema.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/java/com/bigdata/sparse/Schema.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -141,7 +141,7 @@ /* * One time encoding of the schema name as a Unicode sort key. */ - schemaBytes = KeyBuilder.asSortKey(name); + schemaBytes = asSortKey(name); } } @@ -501,5 +501,51 @@ + ",primaryKeyType=" + getPrimaryKeyType() + "}"; } + + /** + * Used for historical compatibility to unbox an application key (convert it + * to an unsigned byte[]). + */ + static private final IKeyBuilder _keyBuilder = KeyBuilder.newUnicodeInstance(); + + /** + * Utility method for historical compatibility converts an application key + * to a sort key (an unsigned byte[] that imposes the same sort order). + * <p> + * Note: This method is thread-safe. + * + * @param val + * An application key. + * + * @return The unsigned byte[] equivalent of that key. This will be + * <code>null</code> iff the <i>key</i> is <code>null</code>. If the + * <i>key</i> is a byte[], then the byte[] itself will be returned. + */ + private static final byte[] asSortKey(final Object val) { + + if (val == null) { + + return null; + + } + + if (val instanceof byte[]) { + + return (byte[]) val; + + } + + /* + * Synchronize on the keyBuilder to avoid concurrent modification of its + * state. + */ + + synchronized (_keyBuilder) { + + return _keyBuilder.getSortKey(val); + + } + } + } Modified: branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java =================================================================== --- branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractBTreeTestCase.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -49,6 +49,7 @@ import com.bigdata.btree.keys.IKeyBuilder; import com.bigdata.btree.keys.KV; import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.btree.raba.IRaba; import com.bigdata.btree.raba.codec.RandomKeysGenerator; import com.bigdata.cache.HardReferenceQueue; @@ -1097,7 +1098,7 @@ assertEquals("#entries",i,btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1133,7 +1134,7 @@ for( int i=0; i<keys.length; i++ ) { - byte[] key = KeyBuilder.asSortKey(keys[i]); + byte[] key = TestKeyBuilder.asSortKey(keys[i]); assertEquals(entries[i],btree.lookup(key)); assertEquals(entries[i],btree.remove(key)); @@ -1216,7 +1217,7 @@ assertEquals("#entries",i,btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1252,7 +1253,7 @@ for( int i=0; i<keys.length; i++ ) { - final byte[] key = KeyBuilder.asSortKey(keys[i]); + final byte[] key = TestKeyBuilder.asSortKey(keys[i]); assertEquals(entries[i],btree.lookup(key)); assertEquals(entries[i],btree.remove(key)); @@ -1497,7 +1498,7 @@ assertEquals("#entries", i, btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1687,7 +1688,7 @@ assertEquals("#entries",i,btree.nentries); - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); assertNull(btree.lookup(key)); @@ -1774,7 +1775,7 @@ final Integer ikey = keys[index]; - final byte[] key = KeyBuilder.asSortKey(ikey); + final byte[] key = TestKeyBuilder.asSortKey(ikey); final SimpleEntry val = vals[index]; @@ -1816,7 +1817,7 @@ Map.Entry<Integer,SimpleEntry> entry = itr.next(); - final byte[] tmp = KeyBuilder.asSortKey(entry.getKey()); + final byte[] tmp = TestKeyBuilder.asSortKey(entry.getKey()); assertEquals("lookup(" + entry.getKey() + ")", entry .getValue(), btree.lookup(tmp)); @@ -1855,7 +1856,7 @@ for( int i=0; i<nkeys; i++ ) { - keys[i] = KeyBuilder.asSortKey(i+1); // Note: this produces dense keys with origin ONE(1). + keys[i] = TestKeyBuilder.asSortKey(i+1); // Note: this produces dense keys with origin ONE(1). vals[i] = new SimpleEntry(); @@ -2597,7 +2598,7 @@ for (int i = 0; i < N; i++) { // @todo param governs chance of a key collision and maximum #of distinct keys. - final byte[] key = KeyBuilder.asSortKey(r.nextInt(100000)); + final byte[] key = TestKeyBuilder.asSortKey(r.nextInt(100000)); // Note: #of bytes effects very little that we want to test so we keep it small. final byte[] val = new byte[4]; Modified: branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java =================================================================== --- branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/AbstractTupleCursorTestCase.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -33,7 +33,7 @@ import junit.framework.TestCase2; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.btree.raba.ReadOnlyKeysRaba; import com.bigdata.rawstore.SimpleMemoryRawStore; @@ -287,65 +287,65 @@ // seek to a probe key that does not exist. assertEquals(null, cursor.seek(29)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(29),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(29),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(30, "James"), cursor.next()); assertEquals(new TestTuple<String>(30, "James"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(30),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(30),cursor.currentKey()); assertFalse(cursor.hasNext()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); // seek to a probe key that does not exist. assertEquals(null, cursor.seek(9)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(9),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(9),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.next()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.next()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); // seek to a probe key that does not exist and scan forward. assertEquals(null, cursor.seek(19)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(19),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(19),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.next()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); assertTrue(cursor.hasNext()); assertEquals(new TestTuple<String>(30, "James"), cursor.next()); assertEquals(new TestTuple<String>(30, "James"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(30),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(30),cursor.currentKey()); // seek to a probe key that does not exist and scan backward. assertEquals(null, cursor.seek(19)); assertEquals(null, cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(19),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(19),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.tuple()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); // seek to a probe key that does not exist (after all valid tuples). assertEquals(null, cursor.seek(31)); assertEquals(null, cursor.tuple()); assertTrue(cursor.isCursorPositionDefined()); - assertEquals(KeyBuilder.asSortKey(31),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(31),cursor.currentKey()); assertFalse(cursor.hasNext()); // seek to a probe key that does not exist (after all valid tuples). assertEquals(null, cursor.seek(31)); assertEquals(null, cursor.tuple()); assertTrue(cursor.isCursorPositionDefined()); - assertEquals(KeyBuilder.asSortKey(31),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(31),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(30, "James"), cursor.prior()); @@ -369,9 +369,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(20); + final byte[] toKey = TestKeyBuilder.asSortKey(20); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -412,9 +412,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(20); + final byte[] fromKey = TestKeyBuilder.asSortKey(20); - final byte[] toKey = KeyBuilder.asSortKey(30); + final byte[] toKey = TestKeyBuilder.asSortKey(30); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -458,9 +458,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(19); + final byte[] toKey = TestKeyBuilder.asSortKey(19); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -471,7 +471,7 @@ // assertEquals(KeyBuilder.asSortKey(19),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -481,19 +481,19 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(29); + final byte[] toKey = TestKeyBuilder.asSortKey(29); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -503,16 +503,16 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(11); + final byte[] toKey = TestKeyBuilder.asSortKey(11); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -574,15 +574,15 @@ assertEquals("ntuples", 5, btree.getEntryCount()); // The separator key is (30). - assertEquals(KeyBuilder.asSortKey(30), ((Node) btree.getRoot()) + assertEquals(TestKeyBuilder.asSortKey(30), ((Node) btree.getRoot()) .getKeys().get(0)); // Verify the expected keys in the 1st leaf. AbstractBTreeTestCase.assertKeys( // new ReadOnlyKeysRaba(new byte[][] {// - KeyBuilder.asSortKey(10), // - KeyBuilder.asSortKey(20), // + TestKeyBuilder.asSortKey(10), // + TestKeyBuilder.asSortKey(20), // }),// ((Node) btree.getRoot()).getChild(0/* 1st leaf */).getKeys()); @@ -590,9 +590,9 @@ AbstractBTreeTestCase.assertKeys( // new ReadOnlyKeysRaba(new byte[][] {// - KeyBuilder.asSortKey(30), // - KeyBuilder.asSortKey(40), // - KeyBuilder.asSortKey(50),// + TestKeyBuilder.asSortKey(30), // + TestKeyBuilder.asSortKey(40), // + TestKeyBuilder.asSortKey(50),// }),// ((Node) btree.getRoot()).getChild(1/* 2nd leaf */).getKeys()); @@ -627,16 +627,16 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); - final byte[] toKey = KeyBuilder.asSortKey(30); + final byte[] toKey = TestKeyBuilder.asSortKey(30); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(20),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20),cursor.currentKey()); } @@ -647,16 +647,16 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(0); + final byte[] fromKey = TestKeyBuilder.asSortKey(0); - final byte[] toKey = KeyBuilder.asSortKey(19); + final byte[] toKey = TestKeyBuilder.asSortKey(19); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(10, "Bryan"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(10),cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(10),cursor.currentKey()); assertFalse(cursor.hasPrior()); } @@ -668,9 +668,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(0); + final byte[] fromKey = TestKeyBuilder.asSortKey(0); - final byte[] toKey = KeyBuilder.asSortKey(9); + final byte[] toKey = TestKeyBuilder.asSortKey(9); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); @@ -698,7 +698,7 @@ * Verify that the separatorKey in the parent is the first tuple we * expect to find in the 2nd leaf. */ - assertEquals(KeyBuilder.asSortKey(30), ((Node) btree.getRoot()) + assertEquals(TestKeyBuilder.asSortKey(30), ((Node) btree.getRoot()) .getKeys().get(0)); /* @@ -711,29 +711,29 @@ // Remove the first tuple in the 2nd leaf. btree.remove(30); // The separator key has not been changed. - assertEquals(((Node) btree.getRoot()).getKeys().get(0), KeyBuilder + assertEquals(((Node) btree.getRoot()).getKeys().get(0), TestKeyBuilder .asSortKey(30)); // The #of leaves has not been changed. assertEquals(2, btree.getLeafCount()); // Verify the expected keys in the 2nd leaf. AbstractBTreeTestCase.assertKeys(// new ReadOnlyKeysRaba(new byte[][]{// - KeyBuilder.asSortKey(40),// - KeyBuilder.asSortKey(50),// + TestKeyBuilder.asSortKey(40),// + TestKeyBuilder.asSortKey(50),// }),// ((Node) btree.getRoot()).getChild(1/*2nd leaf*/).getKeys()); - final byte[] fromKey = KeyBuilder.asSortKey(10); + final byte[] fromKey = TestKeyBuilder.asSortKey(10); // search for the tuple we just deleted from the 2nd leaf. - final byte[] toKey = KeyBuilder.asSortKey(30); + final byte[] toKey = TestKeyBuilder.asSortKey(30); final ITupleCursor2<String> cursor = newCursor(btree, IRangeQuery.DEFAULT, fromKey, toKey); assertTrue(cursor.hasPrior()); assertEquals(new TestTuple<String>(20, "Mike"), cursor.prior()); - assertEquals(KeyBuilder.asSortKey(20), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(20), cursor.currentKey()); assertTrue(cursor.hasPrior()); } @@ -862,9 +862,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(2); + final byte[] fromKey = TestKeyBuilder.asSortKey(2); - final byte[] toKey = KeyBuilder.asSortKey(7); + final byte[] toKey = TestKeyBuilder.asSortKey(7); // first() { @@ -1107,7 +1107,7 @@ assertNull(cursor.seek(1)); - assertEquals(KeyBuilder.asSortKey(1), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.currentKey()); assertFalse(cursor.hasPrior()); @@ -1141,9 +1141,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(5); + final byte[] fromKey = TestKeyBuilder.asSortKey(5); - final byte[] toKey = KeyBuilder.asSortKey(9); + final byte[] toKey = TestKeyBuilder.asSortKey(9); // first() { @@ -1237,7 +1237,7 @@ assertNull(cursor.seek(7)); - assertEquals(KeyBuilder.asSortKey(7), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.currentKey()); assertFalse(cursor.hasPrior()); @@ -1254,9 +1254,9 @@ */ { - final byte[] fromKey = KeyBuilder.asSortKey(15); + final byte[] fromKey = TestKeyBuilder.asSortKey(15); - final byte[] toKey = KeyBuilder.asSortKey(19); + final byte[] toKey = TestKeyBuilder.asSortKey(19); // first() { @@ -1338,7 +1338,7 @@ assertNull(cursor.seek(17)); - assertEquals(KeyBuilder.asSortKey(17), cursor.currentKey()); + assertEquals(TestKeyBuilder.asSortKey(17), cursor.currentKey()); assertFalse(cursor.hasPrior()); Modified: branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java =================================================================== --- branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBTreeLeafCursors.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -33,7 +33,7 @@ import junit.framework.TestCase2; import com.bigdata.btree.BTree.Stack; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.rawstore.SimpleMemoryRawStore; /** @@ -125,56 +125,56 @@ ILeafCursor<Leaf> cursor = btree.newLeafCursor(SeekEnum.First); // verify first leaf since that is where we positioned the cursor. - assertEquals(KeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); // first(). - assertEquals(KeyBuilder.asSortKey(1), cursor.first().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.first().getKeys().get(0)); // last(). - assertEquals(KeyBuilder.asSortKey(9), cursor.last().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.last().getKeys().get(0)); } public void test_seek() { - ILeafCursor<Leaf> cursor = btree.newLeafCursor(KeyBuilder.asSortKey(5)); + ILeafCursor<Leaf> cursor = btree.newLeafCursor(TestKeyBuilder.asSortKey(5)); // verify initial seek. - assertEquals(KeyBuilder.asSortKey(5), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.leaf().getKeys().get(0)); // verify seek to each key found in the B+Tree. - assertEquals(KeyBuilder.asSortKey(1), cursor.seek( - KeyBuilder.asSortKey(1)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.seek( + TestKeyBuilder.asSortKey(1)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(1), cursor.seek( - KeyBuilder.asSortKey(2)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.seek( + TestKeyBuilder.asSortKey(2)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(3), cursor.seek( - KeyBuilder.asSortKey(3)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.seek( + TestKeyBuilder.asSortKey(3)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(3), cursor.seek( - KeyBuilder.asSortKey(4)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.seek( + TestKeyBuilder.asSortKey(4)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(5), cursor.seek( - KeyBuilder.asSortKey(5)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.seek( + TestKeyBuilder.asSortKey(5)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(5), cursor.seek( - KeyBuilder.asSortKey(6)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.seek( + TestKeyBuilder.asSortKey(6)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(7), cursor.seek( - KeyBuilder.asSortKey(7)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.seek( + TestKeyBuilder.asSortKey(7)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(7), cursor.seek( - KeyBuilder.asSortKey(8)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.seek( + TestKeyBuilder.asSortKey(8)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(9), cursor.seek( - KeyBuilder.asSortKey(9)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.seek( + TestKeyBuilder.asSortKey(9)).getKeys().get(0)); - assertEquals(KeyBuilder.asSortKey(9), cursor.seek( - KeyBuilder.asSortKey(10)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.seek( + TestKeyBuilder.asSortKey(10)).getKeys().get(0)); // verify seek to key that would be in the last leaf but is not actually in the B+Tree. - assertEquals(KeyBuilder.asSortKey(9),cursor.seek(KeyBuilder.asSortKey(12)).getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9),cursor.seek(TestKeyBuilder.asSortKey(12)).getKeys().get(0)); } @@ -184,19 +184,19 @@ ILeafCursor<Leaf> cursor = btree.newLeafCursor(SeekEnum.First); // verify first leaf since that is where we positioned the cursor. - assertEquals(KeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.leaf().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(3), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.next().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(5), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.next().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(7), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.next().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(9), cursor.next().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.next().getKeys().get(0)); } @@ -205,19 +205,19 @@ ILeafCursor<Leaf> cursor = btree.newLeafCursor(SeekEnum.Last); // verify last leaf since that is where we positioned the cursor. - assertEquals(KeyBuilder.asSortKey(9), cursor.leaf().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(9), cursor.leaf().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(7), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(7), cursor.prior().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(5), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(5), cursor.prior().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(3), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(3), cursor.prior().getKeys().get(0)); // next(). - assertEquals(KeyBuilder.asSortKey(1), cursor.prior().getKeys().get(0)); + assertEquals(TestKeyBuilder.asSortKey(1), cursor.prior().getKeys().get(0)); } @@ -247,7 +247,7 @@ for (int i = 1; i <= 10; i++) { - btree.insert(KeyBuilder.asSortKey(i), "v"+i); + btree.insert(TestKeyBuilder.asSortKey(i), "v"+i); } Modified: branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java =================================================================== --- branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestBigdataMap.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -39,7 +39,7 @@ import com.bigdata.btree.keys.DefaultKeyBuilderFactory; import com.bigdata.btree.keys.IKeyBuilderFactory; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.io.SerializerUtil; import com.bigdata.rawstore.SimpleMemoryRawStore; @@ -163,7 +163,7 @@ * Handles {@link String} keys and values and makes the keys available for * {@link BigdataMap} and {@link BigdataSet} (under the assumption that the * key and the value are the same!). The actual index order is governed by - * {@link KeyBuilder#asSortKey(Object)}. + * {@link TestKeyBuilder#asSortKey(Object)}. * * @author <a href="mailto:tho...@us...">Bryan Thompson</a> * @version $Id$ Modified: branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java =================================================================== --- branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestChunkedIterators.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -36,6 +36,7 @@ import com.bigdata.btree.filter.TupleFilter; import com.bigdata.btree.keys.DefaultKeyBuilderFactory; import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.io.SerializerUtil; import com.bigdata.rawstore.IBlock; import com.bigdata.rawstore.SimpleMemoryRawStore; @@ -109,7 +110,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; @@ -203,7 +204,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; @@ -337,7 +338,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; @@ -425,7 +426,7 @@ for(int i=0; i<nentries; i++) { - keys[i] = KeyBuilder.asSortKey(i); + keys[i] = TestKeyBuilder.asSortKey(i); vals[i] = new byte[4]; Modified: branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java =================================================================== --- branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestCopyOnWrite.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -29,7 +29,7 @@ import org.apache.log4j.Level; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; /** * Test suite for copy-on-write semantics. Among other things the tests in this @@ -79,12 +79,12 @@ SimpleEntry v9 = new SimpleEntry(9); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -100,8 +100,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -141,7 +141,7 @@ * triggers copy-on-write for (a). (a1) is dirty as a post-condition. * (d) is deleted as a post-condition. */ - assertEquals(v1,btree.remove(KeyBuilder.asSortKey(1))); + assertEquals(v1,btree.remove(TestKeyBuilder.asSortKey(1))); assertKeys(new int[]{7},c); assertNotSame(a,c.getChild(0)); final Leaf a1 = (Leaf)c.getChild(0); @@ -160,7 +160,7 @@ * insert a key that will go into (b). since (b) is immutable this * triggers copy-on-write. */ - btree.insert(KeyBuilder.asSortKey(8),v8); + btree.insert(TestKeyBuilder.asSortKey(8),v8); assertKeys(new int[]{7},c); assertEquals(a1,c.getChild(0)); assertNotSame(b,c.getChild(1)); @@ -194,7 +194,7 @@ * (b1) is clean, so it is stolen by setting its parent reference * to the new (c1). */ - assertEquals(v2,btree.remove(KeyBuilder.asSortKey(2))); + assertEquals(v2,btree.remove(TestKeyBuilder.asSortKey(2))); assertNotSame(c,btree.root); final Node c1 = (Node)btree.root; assertKeys(new int[]{7},c1); @@ -245,14 +245,14 @@ * copy-on-write. We verify that the root leaf reference is changed. */ assertEquals(a,btree.root); - btree.insert(KeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(3), v3); assertNotSame(a,btree.root); a = (Leaf)btree.root; // new reference for the root leaf. - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -289,7 +289,7 @@ assertTrue(a.isPersistent()); assertTrue(b.isPersistent()); assertTrue(c.isPersistent()); - btree.insert(KeyBuilder.asSortKey(1), v1); // triggers copy on write for (a) and (c). + btree.insert(TestKeyBuilder.asSortKey(1), v1); // triggers copy on write for (a) and (c). assertNotSame(c,btree.root); c = (Node)btree.root; assertNotSame(a,c.getChild(0)); @@ -300,7 +300,7 @@ assertTrue(b.isPersistent()); assertFalse(c.isPersistent()); // insert more until we split another leaf. - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); // the new leaf (d). @@ -323,8 +323,8 @@ * cause another leaf (d) to split, forcing the split to propagate to and * split the root and the tree to increase in height. */ - btree.insert(KeyBuilder.asSortKey(4), v4); - btree.insert(KeyBuilder.asSortKey(6), v6); + btree.insert(TestKeyBuilder.asSortKey(4), v4); + btree.insert(TestKeyBuilder.asSortKey(6), v6); // btree.dump(Level.DEBUG,System.err); assertNotSame(c,btree.root); final Node g = (Node)btree.root; @@ -365,7 +365,7 @@ * the following are cloned: d, c, g. * the following clean children are stolen: e, b (by the new root c). */ - assertEquals(v4,btree.remove(KeyBuilder.asSortKey(4))); + assertEquals(v4,btree.remove(TestKeyBuilder.asSortKey(4))); assertNotSame(g,btree.root); assertNotSame(c,btree.root); c = (Node) btree.root; @@ -393,7 +393,7 @@ * remove a key (7) from a leaf (b) forcing two leaves (b,e) to join * into (b) */ - assertEquals(v7,btree.remove(KeyBuilder.asSortKey(7))); + assertEquals(v7,btree.remove(TestKeyBuilder.asSortKey(7))); btree.dump(Level.DEBUG,System.err); assertKeys(new int[]{5},c); assertEquals(d,c.getChild(0)); @@ -421,16 +421,16 @@ assertEquals(c,btree.root); assertEquals(d,c.getChild(0)); assertEquals(b,c.getChild(1)); - assertEquals(v3, btree.remove(KeyBuilder.asSortKey(3))); // remove from (d) + assertEquals(v3, btree.remove(TestKeyBuilder.asSortKey(3))); // remove from (d) assertNotSame(c,btree.root); // c was cloned. c = (Node) btree.root; assertNotSame(d,c.getChild(0)); d = (Leaf)c.getChild(0); // d was cloned. assertEquals(b,c.getChild(1)); - assertEquals(v5,btree.remove(KeyBuilder.asSortKey(5))); // remove from (b) + assertEquals(v5,btree.remove(TestKeyBuilder.asSortKey(5))); // remove from (b) assertNotSame(b,c.getChild(1)); b = (Leaf)c.getChild(1); // b was cloned. - assertEquals(v6,btree.remove(KeyBuilder.asSortKey(6))); // remove from (b) + assertEquals(v6,btree.remove(TestKeyBuilder.asSortKey(6))); // remove from (b) assertKeys(new int[]{1,2,9},b); assertValues(new Object[]{v1,v2,v9}, b); assertTrue(d.isDeleted()); Modified: branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java =================================================================== --- branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java 2010-07-30 21:46:03 UTC (rev 3378) +++ branches/bugfix-btm/bigdata/src/test/com/bigdata/btree/TestDirtyIterators.java 2010-07-30 22:14:17 UTC (rev 3379) @@ -29,7 +29,7 @@ import org.apache.log4j.Level; -import com.bigdata.btree.keys.KeyBuilder; +import com.bigdata.btree.keys.TestKeyBuilder; /** * Test suite for iterators that visit only dirty nodes or leaves. This test @@ -82,12 +82,12 @@ SimpleEntry v9 = new SimpleEntry(9); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -109,8 +109,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -135,7 +135,7 @@ * remove a key from a leaf forcing two leaves to join and verify the * visitation order. */ - assertEquals(v1,btree.remove(KeyBuilder.asSortKey(1))); + assertEquals(v1,btree.remove(TestKeyBuilder.asSortKey(1))); assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); assertEquals(b,c.getChild(1)); @@ -187,12 +187,12 @@ SimpleEntry v9 = new SimpleEntry(9); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -212,8 +212,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -258,7 +258,7 @@ * visitation order. this triggers copy-on-write for (a) and (a) is * dirty as a post-condition. */ - assertEquals(v1,btree.remove(KeyBuilder.asSortKey(1))); + assertEquals(v1,btree.remove(TestKeyBuilder.asSortKey(1))); assertKeys(new int[]{7},c); assertNotSame(a,c.getChild(0)); Leaf a1 = (Leaf)c.getChild(0); @@ -279,7 +279,7 @@ * insert a key that will go into (b). since (b) is immutable this * triggers copy-on-write. */ - btree.insert(KeyBuilder.asSortKey(8),v8); + btree.insert(TestKeyBuilder.asSortKey(8),v8); assertKeys(new int[]{7},c); assertEquals(a1,c.getChild(0)); assertNotSame(b,c.getChild(1)); @@ -313,7 +313,7 @@ * remove a key from (a1). since (a1) is immutable this triggers * copy-on-write. since the root is immtuable, it is also copied. */ - assertEquals(v2,btree.remove(KeyBuilder.asSortKey(2))); + assertEquals(v2,btree.remove(TestKeyBuilder.asSortKey(2))); assertNotSame(c,btree.root); Node c1 = (Node)btree.root; assertKeys(new int[]{7},c1); @@ -368,12 +368,12 @@ .postOrderNodeIterator(true)); // fill up the root leaf. - btree.insert(KeyBuilder.asSortKey(3), v3); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(KeyBuilder.asSortKey(7), v7); + btree.insert(TestKeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(5), v5); + btree.insert(TestKeyBuilder.asSortKey(7), v7); // split the root leaf. - btree.insert(KeyBuilder.asSortKey(9), v9); + btree.insert(TestKeyBuilder.asSortKey(9), v9); final Node c = (Node) btree.root; assertKeys(new int[]{7},c); assertEquals(a,c.getChild(0)); @@ -393,8 +393,8 @@ * split another leaf so that there are now three children to visit. at * this point the root is full. */ - btree.insert(KeyBuilder.asSortKey(1), v1); - btree.insert(KeyBuilder.asSortKey(2), v2); + btree.insert(TestKeyBuilder.asSortKey(1), v1); + btree.insert(TestKeyBuilder.asSortKey(2), v2); assertKeys(new int[]{3,7},c); assertEquals(a,c.getChild(0)); Leaf d = (Leaf)c.getChild(1); @@ -416,8 +416,8 @@ * cause another leaf (d) to split, forcing the split to propagate to and * split the root and the tree to increase in height. */ - btree.insert(KeyBuilder.asSortKey(4), v4); - btree.insert(KeyBuilder.asSortKey(6), v6); + btree.insert(TestKeyBuilder.asSortKey(4), v4); + btree.insert(TestKeyBuilder.asSortKey(6), v6); // btree.dump(Level.DEBUG,System.err); assertNotSame(c,btree.root); final Node g = (Node)btree.root; @@ -450,7 +450,7 @@ * be deleted. this causes (c,f) to merge as well, which in turn forces * the root to be replaced by (c). */ - assertEquals(v4,btree.remove(KeyBuilder.asSortKey(4))); + assertEquals(v4,btree.remove(TestKeyBuilder.asSortKey(4))); // btree.dump(Level.DEBUG,System.err); assertKeys(new int[]{5,7},c); assertEquals(d,c.getChild(0)); @@ -474,7 +474,7 @@ * remove a key (7) from a leaf (b) forcing two leaves to join and * verify the visitation order. */ - assertEquals(v7,btree.remove(KeyBuilder.asSortKey(7))); + assertEquals(v7,btree.remove(TestKeyBuilder.asSortKey(7))); btree.dump(Level.DEBUG,System.err); assertKeys(new int[]{5},c); assertEquals(d,c.getChild(0)); @@ -495,9 +495,9 @@ * remove keys from a leaf forcing the remaining two leaves to join and * verify the visitation order. */ - assertEquals(v3,btree.remove(KeyBuilder.asSortKey(3))); - assertEquals(v5,btree.remove(KeyBuilder.asSortKey(5))); - assertEquals(v6,btree.remove(KeyBuilder.asSortKey(6))); + assertEquals(v3,btree.remove(TestKeyBuilder.asSortKey(3))); + assertEquals(v5,btree.remove(TestKeyBuilder.asSortKey(5))); + assertEquals(v6,btree.remove(TestKeyBuilder.asSortKey(6))); assertKeys(new int[]{1,2,9},b); assertValues(new Object[]{v1,v2,v9}, b); assertTrue(d.isDeleted()); @@ -560,18 +560,18 @@ * and verify that both iterators now visit the root. */ assertEquals(a,btree.root); - btree.insert(KeyBuilder.asSortKey(3), v3); + btree.insert(TestKeyBuilder.asSortKey(3), v3); assertNotSame(a,btree.root); a = (Leaf)btree.root; // new reference for the root leaf. assertSameIterator(new IAbstractNode[] { btree.root }, btree.root .postOrderNodeIterator(false)); assertSameIterator(new IAbstractNode[] { btree.root }, btree.root .postOrderNodeIterator(true)); - btree.insert(KeyBuilder.asSortKey(5), v5); - btree.insert(... [truncated message content] |
From: <mrp...@us...> - 2010-07-30 21:46:09
|
Revision: 3378 http://bigdata.svn.sourceforge.net/bigdata/?rev=3378&view=rev Author: mrpersonick Date: 2010-07-30 21:46:03 +0000 (Fri, 30 Jul 2010) Log Message: ----------- adding a goto for optional predicates Modified Paths: -------------- branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/IPredicate.java branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/Predicate.java branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicPredicate.java branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOPredicate.java branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOStarJoin.java Modified: branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/IPredicate.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/IPredicate.java 2010-07-30 20:41:35 UTC (rev 3377) +++ branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/IPredicate.java 2010-07-30 21:46:03 UTC (rev 3378) @@ -157,6 +157,69 @@ * evaluating a JOIN. */ public boolean isOptional(); + + /** + * Handling nested optional joins can be reduced to a goto logic. Tails + * that are grouped inside an "optional join" are all marked as optional, + * and if any one of them fails then join execution should resume with the + * tail immediately following the optional join in the plan order. + * <p> + * For example, the following query: + * <code> + * where { + * A . + * OPTIONAL { + * B . + * C . + * } + * D . + * } + * </code> + * <p> + * Would yield the following plan: + * <code> + * 0: A, optional=false + * 1: B, optional=true, goto=3 + * 2: C, optional=true, goto=3 + * 3: D, optional=false + * </code> + * <p> + * Double nested optionals would just continue on in the first optional + * join. For example, the following query: + * <code> + * where { + * A . + * OPTIONAL { + * B . + * OPTIONAL { C } . + * D . + * } + * E . + * } + * </code> + * <p> + * Would yield the following plan: + * <code> + * 0: A, optional=false + * 1: B, optional=true, goto=4 + * 2: C, optional=true, goto=3 + * 3: D, optional=true, goto=4 + * 4: E, optional=false + * </code> + * <p> + * Alternatively, the above plan could be reordered as follows for more + * efficient execution: + * <code> + * 0: A, optional=false + * 1: B, optional=true, goto=4 + * 2: D, optional=true, goto=4 + * 3: C, optional=true, goto=4 + * 4: E, optional=false + * </code> + * + * @return + */ + public int getOptionalGoto(); /** * Returns the object that may be used to selectively override the Modified: branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/Predicate.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/Predicate.java 2010-07-30 20:41:35 UTC (rev 3377) +++ branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/relation/rule/Predicate.java 2010-07-30 21:46:03 UTC (rev 3378) @@ -64,7 +64,7 @@ private final IVariableOrConstant[] values; - private final boolean optional; + private final int optionalGoto; private final IElementFilter<E> constraint; @@ -90,7 +90,7 @@ this.values = src.values.clone(); - this.optional = src.optional; + this.optionalGoto = src.optionalGoto; this.constraint = src.constraint; @@ -161,7 +161,7 @@ this.values = src.values; - this.optional = src.optional; + this.optionalGoto = src.optionalGoto; this.constraint = src.constraint; @@ -209,7 +209,7 @@ this.values = src.values; - this.optional = src.optional; + this.optionalGoto = src.optionalGoto; this.constraint = src.constraint; @@ -228,7 +228,7 @@ public Predicate(String relationName, IVariableOrConstant[] values) { this(new String[] { relationName }, -1/* partitionId */, values, - false/* optional */, null/* constraint */, null/* expander */); + -1/* optional=false */, null/* constraint */, null/* expander */); } @@ -250,7 +250,7 @@ * Allows selective override of the predicate evaluation. */ public Predicate(String[] relationName, int partitionId, - IVariableOrConstant[] values, boolean optional, + IVariableOrConstant[] values, int optionalGoto, IElementFilter<E> constraint, ISolutionExpander<E> expander) { if (relationName == null) @@ -286,7 +286,7 @@ this.values = values; - this.optional = optional; + this.optionalGoto = optionalGoto; this.constraint = constraint; @@ -345,10 +345,16 @@ final public boolean isOptional() { - return optional; + return optionalGoto >= 0; } + final public int getOptionalGoto() { + + return optionalGoto; + + } + final public IElementFilter<E> getConstraint() { return constraint; Modified: branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicPredicate.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicPredicate.java 2010-07-30 20:41:35 UTC (rev 3377) +++ branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/magic/MagicPredicate.java 2010-07-30 21:46:03 UTC (rev 3378) @@ -479,6 +479,12 @@ } + final public int getOptionalGoto() { + + return -1; + + } + final public IElementFilter getConstraint() { return constraint; Modified: branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOPredicate.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOPredicate.java 2010-07-30 20:41:35 UTC (rev 3377) +++ branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOPredicate.java 2010-07-30 21:46:03 UTC (rev 3378) @@ -76,7 +76,7 @@ /** The context position MAY be <code>null</code>. */ protected final IVariableOrConstant<IV> c; - protected final boolean optional; + protected final int optionalGoto; protected final IElementFilter<ISPO> constraint; @@ -134,7 +134,7 @@ final IVariableOrConstant<IV> p, final IVariableOrConstant<IV> o) { this(new String[] { relationName }, -1/* partitionId */, s, p, o, - null/* c */, false/* optional */, null/* constraint */, null/* expander */); + null/* c */, -1/* optional */, null/* constraint */, null/* expander */); } @@ -154,7 +154,7 @@ final IVariableOrConstant<IV> o, final IVariableOrConstant<IV> c) { this(new String[] { relationName }, -1/* partitionId */, s, p, o, c, - false/* optional */, null/* constraint */, null/* expander */); + -1/* optional */, null/* constraint */, null/* expander */); } @@ -173,7 +173,7 @@ final IVariableOrConstant<IV> p, final IVariableOrConstant<IV> o) { this(relationName, -1/* partitionId */, s, p, o, - null/* c */, false/* optional */, null/* constraint */, null/* expander */); + null/* c */, -1/* optional */, null/* constraint */, null/* expander */); } @@ -190,10 +190,10 @@ public SPOPredicate(final String relationName, final IVariableOrConstant<IV> s, final IVariableOrConstant<IV> p, - final IVariableOrConstant<IV> o, final boolean optional) { + final IVariableOrConstant<IV> o, final int optionalGoto) { this(new String[] { relationName }, -1/* partitionId */, s, p, o, - null/* c */, optional, null/* constraint */, null/* expander */); + null/* c */, optionalGoto, null/* constraint */, null/* expander */); } @@ -215,7 +215,7 @@ final ISolutionExpander<ISPO> expander) { this(new String[] { relationName }, -1/* partitionId */, s, p, o, - null/* c */, false/* optional */, null/* constraint */, + null/* c */, -1/* optional */, null/* constraint */, expander); } @@ -235,11 +235,11 @@ public SPOPredicate(final String relationName, final IVariableOrConstant<IV> s, final IVariableOrConstant<IV> p, - final IVariableOrConstant<IV> o, final boolean optional, + final IVariableOrConstant<IV> o, final int optionalGoto, final ISolutionExpander<ISPO> expander) { this(new String[] { relationName }, -1/* partitionId */, s, p, o, - null/* c */, optional, null/* constraint */, expander); + null/* c */, optionalGoto, null/* constraint */, expander); } @@ -264,7 +264,7 @@ final IVariableOrConstant<IV> p,// final IVariableOrConstant<IV> o,// final IVariableOrConstant<IV> c,// - final boolean optional, // + final int optionalGoto, // final IElementFilter<ISPO> constraint,// final ISolutionExpander<ISPO> expander// ) { @@ -303,7 +303,7 @@ this.o = o; this.c = c; // MAY be null. - this.optional = optional; + this.optionalGoto = optionalGoto; this.constraint = constraint; /// MAY be null. @@ -341,7 +341,7 @@ this.relationName = relationName; // override. - this.optional = src.optional; + this.optionalGoto = src.optionalGoto; this.constraint = src.constraint; @@ -384,7 +384,7 @@ this.o = src.o; this.c = src.c; - this.optional = src.optional; + this.optionalGoto = src.optionalGoto; this.constraint = src.constraint; @@ -406,7 +406,7 @@ this.o = src.o; this.c = src.c; - this.optional = src.optional; + this.optionalGoto = src.optionalGoto; this.constraint = src.constraint; @@ -439,7 +439,7 @@ p,// o,// c, // override. - optional, // + optionalGoto, // constraint,// expander// ); @@ -465,7 +465,7 @@ p,// o,// c, // - optional, // + optionalGoto, // tmp,// override. expander// ); @@ -795,7 +795,7 @@ } return new SPOPredicate(relationName, partitionId, s, p, o, c, - optional, constraint, expander); + optionalGoto, constraint, expander); } @@ -861,7 +861,7 @@ sb.append(")"); - if (optional || constraint != null || expander != null + if (isOptional() || constraint != null || expander != null || partitionId != -1) { /* @@ -872,9 +872,9 @@ sb.append("["); - if(optional) { + if(isOptional()) { if(!first) sb.append(", "); - sb.append("optional"); + sb.append("optionalGoto="+optionalGoto); first = false; } @@ -906,10 +906,16 @@ final public boolean isOptional() { - return optional; + return optionalGoto >= -1; } + final public int getOptionalGoto() { + + return optionalGoto; + + } + final public IElementFilter<ISPO> getConstraint() { return constraint; @@ -984,7 +990,7 @@ final IVariableOrConstant<IV> c) { return new SPOPredicate(relationName, partitionId, s, p, o, c, - optional, constraint, expander); + optionalGoto, constraint, expander); } } Modified: branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOStarJoin.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOStarJoin.java 2010-07-30 20:41:35 UTC (rev 3377) +++ branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOStarJoin.java 2010-07-30 21:46:03 UTC (rev 3378) @@ -71,7 +71,7 @@ public SPOStarJoin(final SPOPredicate pred) { this(pred.relationName, pred.partitionId, pred.s(), Var.var(), - Var.var(), pred.c(), pred.isOptional(), + Var.var(), pred.c(), pred.getOptionalGoto(), pred.getConstraint(), pred.getSolutionExpander()); } @@ -89,7 +89,7 @@ this(new String[] { relationName }, -1/* partitionId */, s, Var.var(), Var.var(), - null/* c */, false/* optional */, null/* constraint */, + null/* c */, -1/* optional */, null/* constraint */, null/* expander */); } @@ -116,12 +116,12 @@ final IVariableOrConstant<IV> p,// final IVariableOrConstant<IV> o,// final IVariableOrConstant<IV> c,// - final boolean optional, // + final int optionalGoto, // final IElementFilter<ISPO> constraint,// final ISolutionExpander<ISPO> expander// ) { - super(relationName, partitionId, s, p, o, c, optional, constraint, + super(relationName, partitionId, s, p, o, c, optionalGoto, constraint, expander); this.starConstraints = new LinkedList<IStarConstraint<ISPO>>(); @@ -188,7 +188,7 @@ SPOPredicate pred = super.asBound(bindingSet); SPOStarJoin starJoin = new SPOStarJoin(pred.relationName, - pred.partitionId, pred.s, pred.p, pred.o, pred.c, pred.optional, + pred.partitionId, pred.s, pred.p, pred.o, pred.c, pred.optionalGoto, pred.constraint, pred.expander); for (IStarConstraint starConstraint : starConstraints) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <btm...@us...> - 2010-07-30 20:41:41
|
Revision: 3377 http://bigdata.svn.sourceforge.net/bigdata/?rev=3377&view=rev Author: btmurphy Date: 2010-07-30 20:41:35 +0000 (Fri, 30 Jul 2010) Log Message: ----------- [branch dev-btm]: fixed a typo in JiniServicesHelper that prevented TestBigdataClient from passing when run on eclipse Modified Paths: -------------- branches/dev-btm/bigdata-jini/src/java/com/bigdata/service/jini/util/JiniServicesHelper.java branches/dev-btm/bigdata-jini/src/resources/config/bigdataStandaloneTesting.config branches/dev-btm/src/resources/config/bigdataCluster.config Modified: branches/dev-btm/bigdata-jini/src/java/com/bigdata/service/jini/util/JiniServicesHelper.java =================================================================== --- branches/dev-btm/bigdata-jini/src/java/com/bigdata/service/jini/util/JiniServicesHelper.java 2010-07-30 18:49:37 UTC (rev 3376) +++ branches/dev-btm/bigdata-jini/src/java/com/bigdata/service/jini/util/JiniServicesHelper.java 2010-07-30 20:41:35 UTC (rev 3377) @@ -586,7 +586,7 @@ optionsList.add(options[i]); } String joinGroupsOverrideStr = - "com.bigdata.loadblancer.groupsToJoin=new String[] " + "com.bigdata.loadbalancer.groupsToJoin=new String[] " +"{" +"\""+fedname+"\"" +"}"; Modified: branches/dev-btm/bigdata-jini/src/resources/config/bigdataStandaloneTesting.config =================================================================== --- branches/dev-btm/bigdata-jini/src/resources/config/bigdataStandaloneTesting.config 2010-07-30 18:49:37 UTC (rev 3376) +++ branches/dev-btm/bigdata-jini/src/resources/config/bigdataStandaloneTesting.config 2010-07-30 20:41:35 UTC (rev 3377) @@ -36,6 +36,14 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit.*; +import java.net.NetworkInterface; +import net.jini.constraint.BasicMethodConstraints; +import net.jini.core.constraint.ConnectionRelativeTime; +import net.jini.core.constraint.InvocationConstraints; +import net.jini.discovery.LookupDiscoveryManager; +import com.bigdata.util.config.NicUtil; +import com.bigdata.util.config.ConfigDeployUtil; + /* * This is a standalone configuration file for a bigdata federation * used for unit tests in conjunction with the JiniServicesHelper class. @@ -431,6 +439,61 @@ } +com.bigdata.loadbalancer { + + private static exportIpAddr = + NicUtil.getIpAddress("default.nic", ConfigDeployUtil.getString("node.serviceNetwork"), false); + private static exportPort = + Integer.parseInt( System.getProperty("exportPort", "0") ); + + groupsToJoin = ConfigDeployUtil.getGroupsToDiscover(); + locatorsToJoin = ConfigDeployUtil.getLocatorsToDiscover(); + + private static exporterTcpServerEndpoint = + TcpServerEndpoint.getInstance(exportIpAddr, exportPort); + private static serverILFactory = + new BasicILFactory( + new BasicMethodConstraints( + new InvocationConstraints( + new ConnectionRelativeTime( + ConfigDeployUtil.getLong( + "rmi.connectTimeout")), + null)), + null); + + serverExporter = + new BasicJeriExporter + (TcpServerEndpoint.getInstance(exportIpAddr,exportPort), + serverILFactory, + false, + true); + + discoveryManager = new LookupDiscoveryManager(groupsToJoin, + locatorsToJoin, + null, + this); + // Where service state is persisted + persistenceDirectory = + ConfigUtil.concat + ( new String[] { System.getProperty("app.home", "${user.dir}"), + "${/}var${/}state${/}loadbalancerState" } ); +} + +net.jini.discovery.LookupDiscovery { + multicastRequestHost = com.bigdata.loadbalancer.exportIpAddr; + multicastInterfaces = new NetworkInterface[] { + NicUtil.getNetworkInterface(com.bigdata.loadbalancer.exportIpAddr) + }; +} + +net.jini.lookup.ServiceDiscoveryManager { + eventListenerExporter = + new BasicJeriExporter + (com.bigdata.loadbalancer.exporterTcpServerEndpoint, + com.bigdata.loadbalancer.serverILFactory, false, false); +} + + /* * Note: Whitespace intentionally follows this comment! */ Modified: branches/dev-btm/src/resources/config/bigdataCluster.config =================================================================== --- branches/dev-btm/src/resources/config/bigdataCluster.config 2010-07-30 18:49:37 UTC (rev 3376) +++ branches/dev-btm/src/resources/config/bigdataCluster.config 2010-07-30 20:41:35 UTC (rev 3377) @@ -1201,7 +1201,6 @@ "-Dlog4j.primary.configuration=@NAS@/dist/bigdata/var/config/logging/loadbalancer-logging.properties", "-DusingServicesManagerService=true", "-Dbigdata.logDir=@NAS@/dist/bigdata/var/log", - "-DappHome=@NAS@/dist/bigdata", "-DappHome=@APP_HOME@", "-Dconfig=@NAS@/dist/bigdata/var/config/jini/loadbalancer.config" }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-07-30 18:49:44
|
Revision: 3376 http://bigdata.svn.sourceforge.net/bigdata/?rev=3376&view=rev Author: thompsonbry Date: 2010-07-30 18:49:37 +0000 (Fri, 30 Jul 2010) Log Message: ----------- Modified IKeyBuilder to fill in the generic on the ISortKeyBuilder interface as "Object" and removed the @SuppressWarning() from Schema's asSortKey() implementation and the implementation in TestSortKeyBuilder. Added 'final' to a method signature in IVUtility. Modified Paths: -------------- trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java trunk/bigdata/src/java/com/bigdata/sparse/Schema.java trunk/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java Modified: trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 18:20:18 UTC (rev 3375) +++ trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 18:49:37 UTC (rev 3376) @@ -97,7 +97,7 @@ * @author <a href="mailto:tho...@us...">Bryan Thompson</a> * @version $Id$ */ -public interface IKeyBuilder extends ISortKeyBuilder { +public interface IKeyBuilder extends ISortKeyBuilder<Object> { /** * The #of bytes of data in the key. Modified: trunk/bigdata/src/java/com/bigdata/sparse/Schema.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/sparse/Schema.java 2010-07-30 18:20:18 UTC (rev 3375) +++ trunk/bigdata/src/java/com/bigdata/sparse/Schema.java 2010-07-30 18:49:37 UTC (rev 3376) @@ -521,8 +521,7 @@ * <code>null</code> iff the <i>key</i> is <code>null</code>. If the * <i>key</i> is a byte[], then the byte[] itself will be returned. */ - @SuppressWarnings("unchecked") - private static final byte[] asSortKey(Object val) { + private static final byte[] asSortKey(final Object val) { if (val == null) { Modified: trunk/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java =================================================================== --- trunk/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java 2010-07-30 18:20:18 UTC (rev 3375) +++ trunk/bigdata/src/test/com/bigdata/btree/keys/TestKeyBuilder.java 2010-07-30 18:49:37 UTC (rev 3376) @@ -2541,8 +2541,7 @@ * <code>null</code> iff the <i>key</i> is <code>null</code>. If the * <i>key</i> is a byte[], then the byte[] itself will be returned. */ - @SuppressWarnings("unchecked") - public static final byte[] asSortKey(Object val) { + public static final byte[] asSortKey(final Object val) { if (val == null) { Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java =================================================================== --- trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java 2010-07-30 18:20:18 UTC (rev 3375) +++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java 2010-07-30 18:49:37 UTC (rev 3376) @@ -398,7 +398,7 @@ * @return * the IV */ - public static final IV fromString(String s) { + public static final IV fromString(final String s) { if (s.startsWith("TermId")) { char type = s.charAt(s.length()-2); long tid = Long.valueOf(s.substring(7, s.length()-2)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2010-07-30 18:20:24
|
Revision: 3375 http://bigdata.svn.sourceforge.net/bigdata/?rev=3375&view=rev Author: thompsonbry Date: 2010-07-30 18:20:18 +0000 (Fri, 30 Jul 2010) Log Message: ----------- Fixed some imports of TestKeyBuilder from the main code base which were breaking the build. Modified Paths: -------------- trunk/bigdata/src/java/com/bigdata/btree/BigdataMap.java trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java Modified: trunk/bigdata/src/java/com/bigdata/btree/BigdataMap.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/btree/BigdataMap.java 2010-07-30 18:05:58 UTC (rev 3374) +++ trunk/bigdata/src/java/com/bigdata/btree/BigdataMap.java 2010-07-30 18:20:18 UTC (rev 3375) @@ -40,7 +40,6 @@ import com.bigdata.btree.filter.FilterConstructor; import com.bigdata.btree.filter.TupleFilter; import com.bigdata.btree.keys.KeyBuilder; -import com.bigdata.btree.keys.TestKeyBuilder; import com.bigdata.journal.ConcurrencyManager; /** @@ -59,21 +58,21 @@ * Note: The total order of the {@link BigdataMap} is completely determined by * {@link ITupleSerializer#serializeKey(Object)}. There is NO concept of a * {@link Comparator}. The {@link ITupleSerializer} is responsible for coercing - * application keys into variable length <strong>unsigned</strong> byte[]s - * which are the keys for the underlying B+Tree. The order for the B+Tree is the + * application keys into variable length <strong>unsigned</strong> byte[]s which + * are the keys for the underlying B+Tree. The order for the B+Tree is the * natural order for the <strong>unsigned byte[]</strong>s. {@link KeyBuilder} * supports the generation of unsigned byte[]s from various kinds of Java * primitives and Unicode {@link String}s and is typically used to write the * {@link ITupleSerializer#serializeKey(Object)} method. * <p> - * Note: The coercion of the application keys into unsigned byte[]s is not - * typesafe unless you either consistently use a strongly typed instance of this + * Note: The coercion of the application keys into unsigned byte[]s is not type + * safe unless you either consistently use a strongly typed instance of this * class or specify an {@link ITupleSerializer} for the backing B+Tree that only * allows application keys that are instances of acceptable classes. This issue * is more critical for keys than for values since the keys define the total * index order and the default coercion rules for keys are provided by - * {@link TestKeyBuilder#asSortKey(Object)} which does not attenpt to partition the - * key space by the application key type (keys are not safely polymorphic by + * {@link KeyBuilder#append(Object)} which does not attempt to partition the key + * space by the application key type (keys are not safely polymorphic by * default). * <p> * Note: When storing Java objects in the tuple value, the value MUST be treated Modified: trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java =================================================================== --- trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 18:05:58 UTC (rev 3374) +++ trunk/bigdata/src/java/com/bigdata/btree/keys/IKeyBuilder.java 2010-07-30 18:20:18 UTC (rev 3375) @@ -33,6 +33,7 @@ import java.util.Locale; import java.util.Properties; import java.util.UUID; + import com.bigdata.btree.BytesUtil; import com.bigdata.btree.keys.KeyBuilder.Options; @@ -88,7 +89,6 @@ * {@link #appendText(String, boolean, boolean)}. * </p> * - * @see TestKeyBuilder#asSortKey(Object) * @see KeyBuilder#newInstance() * @see KeyBuilder#newUnicodeInstance() * @see KeyBuilder#newUnicodeInstance(Properties) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |