/** * @param marshallable to write to excerpt. */ @Override public void writeBytes(@NotNull WriteBytesMarshallable marshallable) throws UnrecoverableTimeoutException { try (DocumentContext dc = writingDocument()) { Bytes<?> bytes = dc.wire().bytes(); long wp = bytes.writePosition(); marshallable.writeMarshallable(bytes); if (wp == bytes.writePosition()) dc.rollbackOnClose(); else if (padToCacheAlignMode() == Padding.WORD) ((StoreAppenderContext) dc).padToWordAlign = true; else if (padToCacheAlignMode() != Padding.CACHE_LINE) ((StoreAppenderContext) dc).padToCacheAlign = false; } }
documentContext.wire().readEventName(sb); Assert.assertEquals("hello", sb.toString()); documentContext.rollbackOnClose(); documentContext.rollbackOnClose(); Assert.assertEquals("hello2", sb.toString()); documentContext.wire().readEventName(sb); Assert.assertEquals("hello2", sb.toString()); documentContext.rollbackOnClose(); } finally { bytes.readPosition(rp).writePosition(wp).writeLimit(wl); documentContext.wire().readEventName(sb); Assert.assertEquals("hello3", sb.toString()); documentContext.rollbackOnClose(); documentContext.rollbackOnClose();
wd.rollbackOnClose(); wd.close();
@Test public void testRollbackOnAppend() { try (final ChronicleQueue queue = builder(getTmpDir(), wireType) .build()) { final ExcerptAppender appender = queue.acquireAppender(); try (DocumentContext dc = appender.writingDocument()) { dc.wire().write("hello").text("world"); } try (DocumentContext dc = appender.writingDocument()) { dc.wire().write("hello").text("world2"); } ExcerptTailer tailer = queue.createTailer(); try (DocumentContext dc = tailer.readingDocument()) { dc.wire().read("hello"); dc.rollbackOnClose(); } try (DocumentContext dc = tailer.readingDocument()) { Assert.assertEquals("world", dc.wire().read("hello").text()); } try (DocumentContext dc = tailer.readingDocument()) { Assert.assertEquals("world2", dc.wire().read("hello").text()); } } }
/** * @param marshallable to write to excerpt. */ @Override public void writeBytes(@NotNull WriteBytesMarshallable marshallable) throws UnrecoverableTimeoutException { try (DocumentContext dc = writingDocument()) { Bytes<?> bytes = dc.wire().bytes(); long wp = bytes.writePosition(); marshallable.writeMarshallable(bytes); if (wp == bytes.writePosition()) dc.rollbackOnClose(); else if (padToCacheAlignMode() == Padding.WORD) ((StoreAppenderContext) dc).padToWordAlign = true; else if (padToCacheAlignMode() != Padding.CACHE_LINE) ((StoreAppenderContext) dc).padToCacheAlign = false; } }