/** * Return both root blocks (atomically - used by HA). * <p> * Note: This takes a lock to ensure that the root blocks are consistent * with a commit point on the backing store. */ protected IRootBlockView[] getRootBlocks() { final Lock lock = _fieldReadWriteLock.readLock(); lock.lock(); try { final ChecksumUtility checker = ChecksumUtility.getCHK(); final IRootBlockView rb0 = new RootBlockView( true/* rootBlock0 */, getBufferStrategy() .readRootBlock(true/* rootBlock0 */), checker); final IRootBlockView rb1 = new RootBlockView( false/* rootBlock0 */, getBufferStrategy() .readRootBlock(false/* rootBlock0 */), checker); return new IRootBlockView[] { rb0, rb1 }; } finally { lock.unlock(); } }
/** * Return both root blocks (atomically - used by HA). * <p> * Note: This takes a lock to ensure that the root blocks are consistent * with a commit point on the backing store. */ protected IRootBlockView[] getRootBlocks() { final Lock lock = _fieldReadWriteLock.readLock(); lock.lock(); try { final ChecksumUtility checker = ChecksumUtility.getCHK(); final IRootBlockView rb0 = new RootBlockView( true/* rootBlock0 */, getBufferStrategy() .readRootBlock(true/* rootBlock0 */), checker); final IRootBlockView rb1 = new RootBlockView( false/* rootBlock0 */, getBufferStrategy() .readRootBlock(false/* rootBlock0 */), checker); return new IRootBlockView[] { rb0, rb1 }; } finally { lock.unlock(); } }
private void assertRootBlockOk(final Journal journal, final ByteBuffer expected, final boolean isRootBlock0) { final ByteBuffer actual = journal.getBufferStrategy().readRootBlock( isRootBlock0); final boolean ok = expected.equals(actual); if (!ok) { final StringBuffer sb = new StringBuffer(); sb.append("Root blocks differ: delegate=" + getDelegate() + ", bufferStrategy=" + journal.getBufferStrategy()); sb .append(", expected=" + new RootBlockView(isRootBlock0, expected, null/* checker */)); try { sb .append(", actual=" + new RootBlockView(isRootBlock0, expected, null/* checker */)); } catch (Throwable t) { /* * Show the error if we can't decode the root block. */ fail(sb.toString(), t); } fail(sb.toString()); } }
private void assertRootBlockOk(final Journal journal, final ByteBuffer expected, final boolean isRootBlock0) { final ByteBuffer actual = journal.getBufferStrategy().readRootBlock( isRootBlock0); final boolean ok = expected.equals(actual); if (!ok) { final StringBuffer sb = new StringBuffer(); sb.append("Root blocks differ: delegate=" + getDelegate() + ", bufferStrategy=" + journal.getBufferStrategy()); sb .append(", expected=" + new RootBlockView(isRootBlock0, expected, null/* checker */)); try { sb .append(", actual=" + new RootBlockView(isRootBlock0, expected, null/* checker */)); } catch (Throwable t) { /* * Show the error if we can't decode the root block. */ fail(sb.toString(), t); } fail(sb.toString()); } }
.readRootBlock(true/* rootBlock0 */); .readRootBlock(false/* rootBlock0 */); assertEquals(rootBlock0, journal.getBufferStrategy().readRootBlock( true/* rootBlock0 */)); assertEquals(rootBlock1, journal.getBufferStrategy().readRootBlock( false/* rootBlock0 */));
.readRootBlock(true/* rootBlock0 */); .readRootBlock(false/* rootBlock0 */); assertEquals(rootBlock0, journal.getBufferStrategy().readRootBlock( true/* rootBlock0 */)); assertEquals(rootBlock1, journal.getBufferStrategy().readRootBlock( false/* rootBlock0 */));
final ByteBuffer rb0 = bs.readRootBlock(true/*is rb0*/); tm.put((long) FileMetadata.OFFSET_ROOT_BLOCK0, BytesUtil.toArray(rb0)); final ByteBuffer rb1 = bs.readRootBlock(false/*is rb0*/); tm.put((long) FileMetadata.OFFSET_ROOT_BLOCK1, BytesUtil.toArray(rb1));
final ByteBuffer rb0 = bs.readRootBlock(true/*is rb0*/); tm.put((long) FileMetadata.OFFSET_ROOT_BLOCK0, BytesUtil.toArray(rb0)); final ByteBuffer rb1 = bs.readRootBlock(false/*is rb0*/); tm.put((long) FileMetadata.OFFSET_ROOT_BLOCK1, BytesUtil.toArray(rb1));
final ByteBuffer buf = _bufferStrategy.readRootBlock(!_rootBlock.isRootBlock0());
final ByteBuffer buf = _bufferStrategy.readRootBlock(!_rootBlock.isRootBlock0());
.readRootBlock(true/* rootBlock0 */); .readRootBlock(false/* rootBlock0 */);
.readRootBlock(true/* rootBlock0 */); .readRootBlock(false/* rootBlock0 */);
.readRootBlock(true/* rootBlock0 */); .readRootBlock(false/* rootBlock0 */);
.readRootBlock(true/* rootBlock0 */); .readRootBlock(false/* rootBlock0 */);