Skip to content

Commit af98aa8

Browse files
committed
fix unit test and add a new interface
1 parent a622798 commit af98aa8

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

hollow/src/main/java/com/netflix/hollow/api/producer/AbstractHollowProducer.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,19 +265,25 @@ public void initializeDataModel(HollowSchema... schemas) {
265265
* @see #initializeDataModel(Class[])
266266
*/
267267
public HollowProducer.ReadState restore(long versionDesired, HollowConsumer.BlobRetriever blobRetriever) {
268+
return restore(new HollowConsumer.VersionInfo(versionDesired), blobRetriever,
269+
(restoreFrom, restoreTo) -> restoreTo.restoreFrom(restoreFrom));
270+
}
271+
272+
public HollowProducer.ReadState restore(HollowConsumer.VersionInfo versionDesired, HollowConsumer.BlobRetriever blobRetriever) {
268273
return restore(versionDesired, blobRetriever,
269274
(restoreFrom, restoreTo) -> restoreTo.restoreFrom(restoreFrom));
270275
}
271276

272277
HollowProducer.ReadState hardRestore(long versionDesired, HollowConsumer.BlobRetriever blobRetriever) {
273-
return restore(versionDesired, blobRetriever,
278+
return restore(new HollowConsumer.VersionInfo(versionDesired), blobRetriever,
274279
(restoreFrom, restoreTo) -> HollowWriteStateCreator.
275280
populateUsingReadEngine(restoreTo, restoreFrom, false));
276281
}
277282

278283
private HollowProducer.ReadState restore(
279-
long versionDesired, HollowConsumer.BlobRetriever blobRetriever,
284+
HollowConsumer.VersionInfo versionInfoDesired, HollowConsumer.BlobRetriever blobRetriever,
280285
BiConsumer<HollowReadStateEngine, HollowWriteStateEngine> restoreAction) {
286+
long versionDesired = versionInfoDesired.getVersion();
281287
Objects.requireNonNull(blobRetriever);
282288
Objects.requireNonNull(restoreAction);
283289

@@ -292,8 +298,9 @@ private HollowProducer.ReadState restore(
292298
try {
293299
if (versionDesired != HollowConstants.VERSION_NONE) {
294300
HollowConsumer client = HollowConsumer.withBlobRetriever(blobRetriever)
295-
.withUpdatePlanVerifier(updatePlanBlobVerifier).build();
296-
client.triggerRefreshTo(versionDesired);
301+
.withUpdatePlanVerifier(updatePlanBlobVerifier)
302+
.build();
303+
client.triggerRefreshTo(versionInfoDesired);
297304
readState = ReadStateHelper.newReadState(client.getCurrentVersionId(), client.getStateEngine());
298305
readStates = ReadStateHelper.restored(readState);
299306

hollow/src/main/java/com/netflix/hollow/api/producer/HollowProducer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,11 @@ public HollowProducer.ReadState restore(long versionDesired, HollowConsumer.Blob
207207
return super.restore(versionDesired, blobRetriever);
208208
}
209209

210+
@Override
211+
public HollowProducer.ReadState restore(HollowConsumer.VersionInfo versionDesired, HollowConsumer.BlobRetriever blobRetriever) {
212+
return super.restore(versionDesired, blobRetriever);
213+
}
214+
210215
@Override
211216
public HollowWriteStateEngine getWriteEngine() {
212217
return super.getWriteEngine();

hollow/src/test/java/com/netflix/hollow/api/producer/HollowProducerTest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,12 @@
6262
import java.util.ArrayList;
6363
import java.util.Arrays;
6464
import java.util.BitSet;
65+
import java.util.Collections;
6566
import java.util.HashMap;
6667
import java.util.HashSet;
6768
import java.util.List;
6869
import java.util.Map;
70+
import java.util.Optional;
6971
import java.util.Random;
7072
import java.util.Set;
7173
import java.util.concurrent.TimeUnit;
@@ -1006,25 +1008,26 @@ public boolean announcementVerificationEnabled() {
10061008

10071009
@Override
10081010
public int announcementVerificationMaxLookback() {
1009-
return 1;
1011+
return 5;
10101012
}
10111013

10121014
@Override
10131015
public HollowConsumer.AnnouncementWatcher announcementWatcher() {
10141016
HollowConsumer.AnnouncementWatcher watcher = mock(HollowConsumer.AnnouncementWatcher.class);
10151017
when(watcher.getVersionAnnouncementStatus(1001L)).thenReturn(HollowConsumer.AnnouncementStatus.NOT_ANNOUNCED);
1016-
when(watcher.getVersionAnnouncementStatus(1000L)).thenReturn(HollowConsumer.AnnouncementStatus.ANNOUNCED);
1017-
return null;
1018+
when(watcher.getVersionAnnouncementStatus(990L)).thenReturn(HollowConsumer.AnnouncementStatus.ANNOUNCED);
1019+
return watcher;
10181020
}
10191021
};
10201022
HollowProducer.VersionMinter mockVersionMinter = mock(HollowProducer.VersionMinter.class);
1021-
when(mockVersionMinter.mint()).thenReturn(1000L).thenReturn(1001L);
1023+
when(mockVersionMinter.mint()).thenReturn(990L).thenReturn(1001L);
10221024
HollowProducer producer = createProducer(tmpFolder,
10231025
blobVerifier, mockVersionMinter, schema);
10241026
long version1 = testPublishV1(producer, 2, 10);
1025-
long version2 = testPublishV1(producer, 2, 10);
1027+
long version2 = testPublishV1(producer, 2, 11);
10261028

1027-
HollowProducer.ReadState readState = producer.restore(version2, blobRetriever);
1029+
HollowProducer.ReadState readState = producer.restore(new HollowConsumer.VersionInfo(1003l, Optional.empty(), Optional.empty(), Optional.of(true)), blobRetriever);
1030+
//the mocked blob retriever does not have delta blob so restore should go to the latest verified snapshot prior to 1003 which is 990
10281031
assertEquals(version1, readState.getVersion());
10291032
}
10301033

0 commit comments

Comments
 (0)