package org.corfudb.runtime.view.replication; import org.corfudb.protocols.wireprotocol.ILogData; import org.corfudb.runtime.exceptions.HoleFillRequiredException; import javax.annotation.Nonnull; import java.util.function.Function; /** A simple hole filling policy which aggressively * fills holes whenever there is a failed read. * * Created by mwei on 4/6/17. */ public class AlwaysHoleFillPolicy implements IHoleFillPolicy { /** {@inheritDoc} */ @Nonnull @Override public ILogData peekUntilHoleFillRequired(long address, Function<Long, ILogData> peekFunction) throws HoleFillRequiredException { ILogData data = peekFunction.apply(address); if (data == null) { throw new HoleFillRequiredException("No data at address"); } return data; } }