From 04bd571d8bc69f00a527cea11baf589a64944cc9 Mon Sep 17 00:00:00 2001 From: Drew Koszewnik Date: Tue, 4 Apr 2017 15:09:15 -0700 Subject: [PATCH] HollowProducer: expose the prior ReadState --- .../netflix/hollow/api/producer/HollowProducer.java | 12 +++++------- .../netflix/hollow/api/producer/WriteStateImpl.java | 10 +++++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/hollow/src/main/java/com/netflix/hollow/api/producer/HollowProducer.java b/hollow/src/main/java/com/netflix/hollow/api/producer/HollowProducer.java index 2659817416..be597666a3 100644 --- a/hollow/src/main/java/com/netflix/hollow/api/producer/HollowProducer.java +++ b/hollow/src/main/java/com/netflix/hollow/api/producer/HollowProducer.java @@ -26,9 +26,10 @@ import com.netflix.hollow.api.client.HollowBlobRetriever; import com.netflix.hollow.api.client.HollowClient; import com.netflix.hollow.api.consumer.HollowConsumer; +import com.netflix.hollow.api.consumer.HollowConsumer.ReadState; import com.netflix.hollow.api.producer.HollowProducerListener.ProducerStatus; -import com.netflix.hollow.api.producer.HollowProducerListener.RestoreStatus; import com.netflix.hollow.api.producer.HollowProducerListener.PublishStatus; +import com.netflix.hollow.api.producer.HollowProducerListener.RestoreStatus; import com.netflix.hollow.core.read.engine.HollowBlobHeaderReader; import com.netflix.hollow.core.read.engine.HollowBlobReader; import com.netflix.hollow.core.read.engine.HollowReadStateEngine; @@ -38,7 +39,6 @@ import com.netflix.hollow.core.write.HollowWriteStateEngine; import com.netflix.hollow.core.write.objectmapper.HollowObjectMapper; import com.netflix.hollow.tools.checksum.HollowChecksum; - import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; @@ -61,10 +61,6 @@ public class HollowProducer { public void validate(HollowConsumer.ReadState readState) {} }; - public static WriteState newWriteState(long version, HollowObjectMapper objectMapper) { - return new WriteStateImpl(version, objectMapper); - } - private final Publisher publisher; private final Validator validator; private final Announcer announcer; @@ -148,7 +144,7 @@ public void runCycle(Populator task) { // 1a. Prepare the write state writeEngine.prepareForNextCycle(); HollowObjectMapper objectMapper = this.objectMapper; - WriteState writeState = newWriteState(toVersion, objectMapper); + WriteState writeState = new WriteStateImpl(toVersion, objectMapper, readStates.current()); // 2. Populate the state ProducerStatus.Builder populateStatus = listeners.firePopulateStart(toVersion); @@ -383,6 +379,8 @@ public static interface WriteState { HollowObjectMapper getObjectMapper(); HollowWriteStateEngine getStateEngine(); + + ReadState getPriorState(); long getVersion(); } diff --git a/hollow/src/main/java/com/netflix/hollow/api/producer/WriteStateImpl.java b/hollow/src/main/java/com/netflix/hollow/api/producer/WriteStateImpl.java index fdeb5ce9a7..f734d213ce 100644 --- a/hollow/src/main/java/com/netflix/hollow/api/producer/WriteStateImpl.java +++ b/hollow/src/main/java/com/netflix/hollow/api/producer/WriteStateImpl.java @@ -17,6 +17,7 @@ */ package com.netflix.hollow.api.producer; +import com.netflix.hollow.api.consumer.HollowConsumer.ReadState; import com.netflix.hollow.core.write.HollowWriteStateEngine; import com.netflix.hollow.core.write.objectmapper.HollowObjectMapper; @@ -28,10 +29,12 @@ final class WriteStateImpl implements HollowProducer.WriteState { private final long version; private final HollowObjectMapper objectMapper; + private final ReadState priorReadState; - protected WriteStateImpl(long version, HollowObjectMapper objectMapper) { + protected WriteStateImpl(long version, HollowObjectMapper objectMapper, ReadState priorReadState) { this.version = version; this.objectMapper = objectMapper; + this.priorReadState = priorReadState; } @Override @@ -53,4 +56,9 @@ public HollowWriteStateEngine getStateEngine() { public long getVersion() { return version; } + + @Override + public ReadState getPriorState() { + return priorReadState; + } }