@Override public void appendDeltas(Collection<WaveletDeltaRecord> deltas, ReadableWaveletData resultingSnapshot) throws PersistenceException { Preconditions.checkState(!isClosed, "Illegal access after closure"); // First append the deltas. deltasAccess.append(deltas); // Once the deltas have been stored, we update the wavelet data, which // affects the result of any calls to getEndVersion() or getSnapshot(). snapshot = resultingSnapshot; }
} while (v.getVersion() < version.getVersion()); Preconditions.checkState(v.equals(version)); deltasAccess.append(deltas.build());
targetDeltas.append(deltas);
wavelet.append(ImmutableList.of(written)); wavelet.close();
public void testWaveIdIteratorLimits() throws Exception { Pair<DeltaStore,WaveletDeltaRecord> pair = newDeltaStoreWithRecord(WAVE1_WAVELET1); DeltaStore store = pair.first; DeltasAccess wavelet = store.open(WAVE2_WAVELET1); WaveletDeltaRecord record = createRecord(); wavelet.append(ImmutableList.of(record)); wavelet.close(); ExceptionalIterator<WaveId, PersistenceException> iterator = store.getWaveIdIterator(); assertTrue(iterator.hasNext()); WaveId waveId1 = iterator.next(); assertTrue(iterator.hasNext()); WaveId waveId2 = iterator.next(); // This is necessary because the order of waveIds is implementation specific. if (WAVE1_WAVELET1.waveId.equals(waveId1)) { assertEquals(WAVE2_WAVELET1.waveId, waveId2); } else { assertEquals(WAVE2_WAVELET1.waveId, waveId1); assertEquals(WAVE1_WAVELET1.waveId, waveId2); } assertFalse(iterator.hasNext()); try { waveId1 = iterator.next(); // Fail the test, it should have thrown an exception. fail(); } catch (NoSuchElementException e) { // Test passes. } }
public void testWaveIdIteratorLimits() throws Exception { Pair<DeltaStore,WaveletDeltaRecord> pair = newDeltaStoreWithRecord(WAVE1_WAVELET1); DeltaStore store = pair.first; DeltasAccess wavelet = store.open(WAVE2_WAVELET1); WaveletDeltaRecord record = createRecord(); wavelet.append(ImmutableList.of(record)); wavelet.close(); ExceptionalIterator<WaveId, PersistenceException> iterator = store.getWaveIdIterator(); assertTrue(iterator.hasNext()); WaveId waveId1 = iterator.next(); assertTrue(iterator.hasNext()); WaveId waveId2 = iterator.next(); // This is necessary because the order of waveIds is implementation specific. if (WAVE1_WAVELET1.waveId.equals(waveId1)) { assertEquals(WAVE2_WAVELET1.waveId, waveId2); } else { assertEquals(WAVE2_WAVELET1.waveId, waveId1); assertEquals(WAVE1_WAVELET1.waveId, waveId2); } assertFalse(iterator.hasNext()); try { waveId1 = iterator.next(); // Fail the test, it should have thrown an exception. fail(); } catch (NoSuchElementException e) { // Test passes. } }
wavelet.append(ImmutableList.of(written)); wavelet.close();
private Pair<DeltaStore, WaveletDeltaRecord> newDeltaStoreWithRecord(WaveletName waveletName) throws Exception { DeltaStore store = newDeltaStore(); DeltasAccess wavelet = store.open(waveletName); WaveletDeltaRecord record = createRecord(); wavelet.append(ImmutableList.of(record)); wavelet.close(); return new Pair<DeltaStore, WaveletDeltaRecord>(store, record); }
private Pair<DeltaStore, WaveletDeltaRecord> newDeltaStoreWithRecord(WaveletName waveletName) throws Exception { DeltaStore store = newDeltaStore(); DeltasAccess wavelet = store.open(waveletName); WaveletDeltaRecord record = createRecord(); wavelet.append(ImmutableList.of(record)); wavelet.close(); return new Pair<DeltaStore, WaveletDeltaRecord>(store, record); }