Class BlockingBatchingRowSet

java.lang.Object
org.pentaho.di.core.BlockingBatchingRowSet
All Implemented Interfaces:
Comparable<RowSet>, RowSet

public class BlockingBatchingRowSet extends Object implements Comparable<RowSet>, RowSet
Contains a buffer of rows. Instead of passing rows along the chain immediately we will batch them up to lower locking overhead. The row set will start in accepting mode (accepting = true) It will remain there until the buffer is full. Then it will switch to delivering mode (accepting = false) It will remain there until the buffer is empty. When the row set is done and no more rows will be entering the row set we will switch to delivering mode.
Since:
04-05-2011
Author:
Matt
  • Field Details

    • rowMeta

      protected RowMetaInterface rowMeta
    • done

      protected AtomicBoolean done
    • originStepName

      protected volatile String originStepName
    • originStepCopy

      protected AtomicInteger originStepCopy
    • destinationStepName

      protected volatile String destinationStepName
    • destinationStepCopy

      protected AtomicInteger destinationStepCopy
    • remoteSlaveServerName

      protected volatile String remoteSlaveServerName
  • Constructor Details

    • BlockingBatchingRowSet

      public BlockingBatchingRowSet(int maxSize)
      Create new non-blocking-queue with maxSize capacity.
      Parameters:
      maxSize -
  • Method Details

    • putRow

      public boolean putRow(RowMetaInterface rowMeta, Object[] rowData)
      Description copied from interface: RowSet
      Offer a row of data to this rowset providing for the description (metadata) of the row. If the buffer is full, wait (block) for a small period of time.
      Specified by:
      putRow in interface RowSet
      Parameters:
      rowMeta - The description of the row data
      rowData - the row of data
      Returns:
      true if the row was successfully added to the rowset and false if this buffer was full.
    • putRowWait

      public boolean putRowWait(RowMetaInterface rowMeta, Object[] rowData, long time, TimeUnit tu)
      We need to wait until
      Specified by:
      putRowWait in interface RowSet
      Parameters:
      rowMeta - The description of the row data
      rowData - the row of data
      time - The number of units of time
      tu - The unit of time to use
      Returns:
      true if the row was successfully added to the rowset and false if this buffer was full.
    • getRow

      public Object[] getRow()
      Description copied from interface: RowSet
      Get a row from the input buffer, it blocks for a short period until a new row becomes available. Otherwise, it returns null.
      Specified by:
      getRow in interface RowSet
      Returns:
      a row of data or null if no row is available.
    • getRowImmediate

      public Object[] getRowImmediate()
      Description copied from interface: RowSet
      Get the first row in the list immediately.
      Specified by:
      getRowImmediate in interface RowSet
      Returns:
      a row of data or null if no row is available.
    • getRowWait

      public Object[] getRowWait(long timeout, TimeUnit tu)
      Description copied from interface: RowSet
      get the first row in the list immediately if it is available or wait until timeout
      Specified by:
      getRowWait in interface RowSet
      Returns:
      a row of data or null if no row is available.
    • size

      public int size()
      Specified by:
      size in interface RowSet
      Returns:
      Return the size (or max capacity) of the RowSet
    • setDone

      public void setDone()
      Specified by:
      setDone in interface RowSet
    • clear

      public void clear()
      Description copied from interface: RowSet
      Clear this rowset: remove all rows and remove the "done" flag.
      Specified by:
      clear in interface RowSet
    • compareTo

      public int compareTo(RowSet rowSet)
      Compares using the target steps and copy, not the source. That way, re-partitioning is always done in the same way.
      Specified by:
      compareTo in interface Comparable<RowSet>
    • equals

      public boolean equals(org.pentaho.di.core.BaseRowSet rowSet)
    • isDone

      public boolean isDone()
      Specified by:
      isDone in interface RowSet
      Returns:
      Returns true if there is no more input and vice versa
    • getOriginStepName

      public String getOriginStepName()
      Specified by:
      getOriginStepName in interface RowSet
      Returns:
      Returns the originStepName.
    • getOriginStepCopy

      public int getOriginStepCopy()
      Specified by:
      getOriginStepCopy in interface RowSet
      Returns:
      Returns the originStepCopy.
    • getDestinationStepName

      public String getDestinationStepName()
      Specified by:
      getDestinationStepName in interface RowSet
      Returns:
      Returns the destinationStepName.
    • getDestinationStepCopy

      public int getDestinationStepCopy()
      Specified by:
      getDestinationStepCopy in interface RowSet
      Returns:
      Returns the destinationStepCopy.
    • getName

      public String getName()
      Specified by:
      getName in interface RowSet
    • setThreadNameFromToCopy

      public void setThreadNameFromToCopy(String from, int fromCopy, String to, int toCopy)
      Description copied from interface: RowSet
      This method is used only in Trans.java when created RowSet at line 333. Don't need any synchronization on this method
      Specified by:
      setThreadNameFromToCopy in interface RowSet
    • toString

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

      public RowMetaInterface getRowMeta()
      Specified by:
      getRowMeta in interface RowSet
      Returns:
      the rowMeta
    • setRowMeta

      public void setRowMeta(RowMetaInterface rowMeta)
      Specified by:
      setRowMeta in interface RowSet
      Parameters:
      rowMeta - the rowMeta to set
    • getRemoteSlaveServerName

      public String getRemoteSlaveServerName()
      Specified by:
      getRemoteSlaveServerName in interface RowSet
      Returns:
      the targetSlaveServer
    • setRemoteSlaveServerName

      public void setRemoteSlaveServerName(String remoteSlaveServerName)
      Specified by:
      setRemoteSlaveServerName in interface RowSet
      Parameters:
      remoteSlaveServerName - the remote slave server to set
    • isBlocking

      public boolean isBlocking()
      By default we don't report blocking, only for monitored transformations.
      Specified by:
      isBlocking in interface RowSet
      Returns:
      true if this row set is blocking on reading or writing.