Class ReadOpBase.LedgerEntryRequest

java.lang.Object
org.apache.bookkeeper.client.ReadOpBase.LedgerEntryRequest
All Implemented Interfaces:
SpeculativeRequestExecutor
Direct Known Subclasses:
BatchedReadOp.BatchedLedgerEntryRequest, PendingReadOp.SingleLedgerEntryRequest
Enclosing class:
ReadOpBase

abstract class ReadOpBase.LedgerEntryRequest extends Object implements SpeculativeRequestExecutor
  • Field Details

  • Constructor Details

    • LedgerEntryRequest

      LedgerEntryRequest(List<BookieId> ensemble, long eId)
  • Method Details

    • close

      public void close()
    • read

      abstract void read()
      Execute the read request.
    • fail

      boolean fail(int rc)
      Fail the request with given result code rc.
      Parameters:
      rc - result code to fail the request.
      Returns:
      true if we managed to fail the entry; otherwise return false if it already failed or completed.
    • logErrorAndReattemptRead

      void logErrorAndReattemptRead(int bookieIndex, BookieId host, String errMsg, int rc)
      Log error errMsg and reattempt read from host.
      Parameters:
      bookieIndex - bookie index
      host - host that just respond
      errMsg - error msg to log
      rc - read result code
    • maybeSendSpeculativeRead

      abstract BookieId maybeSendSpeculativeRead(BitSet heardFromHostsBitSet)
      Send to next replica speculatively, if required and possible. This returns the host we may have sent to for unit testing.
      Parameters:
      heardFromHostsBitSet - the set of hosts that we already received responses.
      Returns:
      host we sent to if we sent. null otherwise.
    • isComplete

      boolean isComplete()
      Whether the read request completed.
      Returns:
      true if the read request is completed.
    • getRc

      int getRc()
      Get result code of this entry.
      Returns:
      result code.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • issueSpeculativeRequest

      public com.google.common.util.concurrent.ListenableFuture<Boolean> issueSpeculativeRequest()
      Issues a speculative request and indicates if more speculative requests should be issued.
      Specified by:
      issueSpeculativeRequest in interface SpeculativeRequestExecutor
      Returns:
      whether more speculative requests should be issued