Interface Operator

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static com.google.common.util.concurrent.ListenableFuture<?> NOT_BLOCKED  
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      void addInput​(Page page)
      Adds an input page to the operator.
      default void close()
      This method will always be called before releasing the Operator reference.
      void finish()
      Notifies the operator that no more pages will be added and the operator should finish processing and flush results.
      default void finishMemoryRevoke()
      Clean up and release resources after completed memory revoking.
      OperatorContext getOperatorContext()  
      Page getOutput()
      Gets an output page from the operator.
      default com.google.common.util.concurrent.ListenableFuture<?> isBlocked()
      Returns a future that will be completed when the operator becomes unblocked.
      boolean isFinished()
      Is this operator completely finished processing and no more output pages will be produced.
      boolean needsInput()
      Returns true if and only if this operator can accept an input page.
      default com.google.common.util.concurrent.ListenableFuture<?> startMemoryRevoke()
      After calling this method operator should revoke all reserved revocable memory.
    • Field Detail

      • NOT_BLOCKED

        static final com.google.common.util.concurrent.ListenableFuture<?> NOT_BLOCKED
    • Method Detail

      • isBlocked

        default com.google.common.util.concurrent.ListenableFuture<?> isBlocked()
        Returns a future that will be completed when the operator becomes unblocked. If the operator is not blocked, this method should return NOT_BLOCKED.
      • needsInput

        boolean needsInput()
        Returns true if and only if this operator can accept an input page.
      • addInput

        void addInput​(Page page)
        Adds an input page to the operator. This method will only be called if needsInput() returns true.
      • getOutput

        Page getOutput()
        Gets an output page from the operator. If no output data is currently available, return null.
      • startMemoryRevoke

        default com.google.common.util.concurrent.ListenableFuture<?> startMemoryRevoke()
        After calling this method operator should revoke all reserved revocable memory. As soon as memory is revoked returned future should be marked as done.

        Spawned threads cannot modify OperatorContext because it's not thread safe. For this purpose implement finishMemoryRevoke()

        Since memory revoking signal is delivered asynchronously to the Operator, implementation must gracefully handle the case when there no longer is any revocable memory allocated.

        After this method is called on Operator the Driver is disallowed to call any processing methods on it (isBlocked/needsInput/addInput/getOutput) until finishMemoryRevoke() is called.

      • finishMemoryRevoke

        default void finishMemoryRevoke()
        Clean up and release resources after completed memory revoking. Called by driver once future returned by startMemoryRevoke is completed.
      • finish

        void finish()
        Notifies the operator that no more pages will be added and the operator should finish processing and flush results. This method will not be called if the Task is already failed or canceled.
      • isFinished

        boolean isFinished()
        Is this operator completely finished processing and no more output pages will be produced.
      • close

        default void close()
                    throws Exception
        This method will always be called before releasing the Operator reference.
        Specified by:
        close in interface AutoCloseable
        Throws:
        Exception