/** * Creates a {@link DeltaAndSnapshotStore.WaveletAccess} instance which wraps * {@code deltasAccess}. * * @throws IllegalStateException if the delta history is bad */ private static WaveletAccess createWaveletAccess(DeltaStore.DeltasAccess deltasAccess) throws PersistenceException { ReadableWaveletData wavelet; wavelet = deltasAccess.isEmpty() ? null : buildWaveletFromDeltaReader(deltasAccess); return new DeltasAccessBasedWaveletAccess(deltasAccess, wavelet); }
@Override protected void postIndexHook() { try { getWaveMap().unloadAllWavelets(); } catch (WaveletStateException e) { throw new IndexException("Problem encountered while cleaning up", e); } }
@Override protected void postIndexHook() { try { getWaveMap().unloadAllWavelets(); } catch (WaveletStateException e) { throw new IndexException("Problem encountered while cleaning up", e); } } }
public void testHashedVersionAccessibleOnDeltaBoundaries() throws Exception { appendDeltas(d1, d2, d3); assertEquals(V0, target.getHashedVersion(0)); assertEquals(d1.getResultingVersion(), target.getHashedVersion(2)); assertEquals(d2.getResultingVersion(), target.getHashedVersion(4)); assertEquals(d3.getResultingVersion(), target.getHashedVersion(5)); assertNull(target.getHashedVersion(1)); assertNull(target.getHashedVersion(3)); assertNull(target.getHashedVersion(6)); }
public void testDeltaHistoryQueriesCorrectHistory() throws Exception { appendDeltas(d1, d2, d3); target.persist(d3.getResultingVersion()); checkHistoryForDeltas(d1); checkHistoryForDeltas(d1, d2); checkHistoryForDeltas(d2, d3); checkHistoryForDeltas(d1, d2, d3); }
public void testDeltaHistoryInterruptQueriesCorrectHistory() throws Exception { appendDeltas(d1, d2, d3); target.persist(d3.getResultingVersion()); checkHistoryForDeltasWithInterrupt(0, d1); checkHistoryForDeltasWithInterrupt(1, d1, d2); checkHistoryForDeltasWithInterrupt(2, d1, d2, d3); }
@Override public LocalWaveletContainer create(WaveletNotificationSubscriber notifiee, WaveletName waveletName, String waveDomain) { return new LocalWaveletContainerImpl(waveletName, notifiee, loadWaveletState( waveletLoadExecutor, deltaStore, waveletName, waveletLoadExecutor), waveDomain, storageContinuationExecutor); } };
@SuppressWarnings("rawtypes") private void checkGetTransformedDeltasThrowsException(HashedVersion startVersion, HashedVersion endVersion, Receiver<TransformedWaveletDelta> receiver, Class exceptionClass) { try { target.getTransformedDeltaHistory(startVersion, endVersion, receiver); fail("Expected exception not thrown."); } catch (Exception ex) { assertEquals(IllegalArgumentException.class, exceptionClass); } }
@Override public HashedVersion getLastCommittedVersion() throws WaveletStateException { awaitLoad(); acquireReadLock(); try { checkStateOk(); return waveletState.getLastPersistedVersion(); } finally { releaseReadLock(); } }
@Override public boolean isEmpty() throws WaveletStateException { awaitLoad(); acquireReadLock(); try { checkStateOk(); return waveletState.getSnapshot() == null; } finally { releaseReadLock(); } }
@SuppressWarnings("rawtypes") private void checkGetAppliedDeltasThrowsException(HashedVersion startVersion, HashedVersion endVersion, Receiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>> receiver, Class exceptionClass) { try { target.getAppliedDeltaHistory(startVersion, endVersion, receiver); fail("Expected exception not thrown."); } catch (Exception ex) { assertEquals(IllegalArgumentException.class, exceptionClass); } }
@Override public synchronized void prefetchDeltaSignerInfo(WaveletFederationProvider provider, ByteString signerId, WaveletName waveletName, HashedVersion deltaEndVersion, SignerInfoPrefetchResultListener callback) { ProtocolSignerInfo signerInfo = retrieveSignerInfo(signerId); if (signerInfo != null) { callback.onSuccess(signerInfo); } else { enqueueSignerInfoRequest(provider, signerId, waveletName, deltaEndVersion, callback); } }
/** * Applies a delta to a wavelet container. */ public static void applyDeltaToWavelet(WaveletContainerImpl wavelet, WaveletDelta delta, long applicationTimestamp) throws InvalidProtocolBufferException, OperationException { ByteStringMessage<ProtocolAppliedWaveletDelta> appliedDelta = buildAppliedDelta(delta, applicationTimestamp); wavelet.applyDelta(appliedDelta, delta); } }
@Override public TransformedWaveletDelta getTransformedDelta(long version) throws IOException { return delegate().getTransformedDelta(version); } }
public void testHashedVersionAccessibleOnDeltaBoundaries() throws Exception { appendDeltas(d1, d2, d3); assertEquals(V0, target.getHashedVersion(0)); assertEquals(d1.getResultingVersion(), target.getHashedVersion(2)); assertEquals(d2.getResultingVersion(), target.getHashedVersion(4)); assertEquals(d3.getResultingVersion(), target.getHashedVersion(5)); assertNull(target.getHashedVersion(1)); assertNull(target.getHashedVersion(3)); assertNull(target.getHashedVersion(6)); }
public void testDeltaHistoryQueriesCorrectHistory() throws Exception { appendDeltas(d1, d2, d3); target.persist(d3.getResultingVersion()); checkHistoryForDeltas(d1); checkHistoryForDeltas(d1, d2); checkHistoryForDeltas(d2, d3); checkHistoryForDeltas(d1, d2, d3); }
public void testDeltaHistoryInterruptQueriesCorrectHistory() throws Exception { appendDeltas(d1, d2, d3); target.persist(d3.getResultingVersion()); checkHistoryForDeltasWithInterrupt(0, d1); checkHistoryForDeltasWithInterrupt(1, d1, d2); checkHistoryForDeltasWithInterrupt(2, d1, d2, d3); }
@Override public LocalWaveletContainer create(WaveletNotificationSubscriber notifiee, WaveletName waveletName, String waveDomain) { return new LocalWaveletContainerImpl(waveletName, notifiee, WaveServerModule.loadWaveletState(waveletLoadExecutor, deltaStore, waveletName, persistExecutor), waveDomain, storageContinuationExecutor); } };
@SuppressWarnings("rawtypes") private void checkGetTransformedDeltasThrowsException(HashedVersion startVersion, HashedVersion endVersion, Receiver<TransformedWaveletDelta> receiver, Class exceptionClass) { try { target.getTransformedDeltaHistory(startVersion, endVersion, receiver); fail("Expected exception not thrown."); } catch (Exception ex) { assertEquals(IllegalArgumentException.class, exceptionClass); } }
@Override public LocalWaveletContainer create(WaveletNotificationSubscriber notifiee, WaveletName waveletName, String waveDomain) { return new LocalWaveletContainerImpl(waveletName, notifiee, WaveServerModule.loadWaveletState(waveletLoadExecutor, deltaStore, deltaStoreTransient, waveletName, persistExecutor, 100), waveDomain, storageContinuationExecutor, accessController); } };