Package org.pentaho.di.core
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 Summary
Fields Modifier and Type Field Description protected AtomicIntegerdestinationStepCopyprotected StringdestinationStepNameprotected AtomicBooleandoneprotected AtomicIntegeroriginStepCopyprotected StringoriginStepNameprotected StringremoteSlaveServerNameprotected RowMetaInterfacerowMeta
-
Constructor Summary
Constructors Constructor Description BlockingBatchingRowSet(int maxSize)Create new non-blocking-queue with maxSize capacity.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Clear this rowset: remove all rows and remove the "done" flag.intcompareTo(RowSet rowSet)Compares using the target steps and copy, not the source.booleanequals(org.pentaho.di.core.BaseRowSet rowSet)intgetDestinationStepCopy()StringgetDestinationStepName()StringgetName()intgetOriginStepCopy()StringgetOriginStepName()StringgetRemoteSlaveServerName()Object[]getRow()Get a row from the input buffer, it blocks for a short period until a new row becomes available.Object[]getRowImmediate()Get the first row in the list immediately.RowMetaInterfacegetRowMeta()Object[]getRowWait(long timeout, TimeUnit tu)get the first row in the list immediately if it is available or wait until timeoutbooleanisBlocking()By default we don't report blocking, only for monitored transformations.booleanisDone()booleanputRow(RowMetaInterface rowMeta, Object[] rowData)Offer a row of data to this rowset providing for the description (metadata) of the row.booleanputRowWait(RowMetaInterface rowMeta, Object[] rowData, long time, TimeUnit tu)We need to wait untilvoidsetDone()voidsetRemoteSlaveServerName(String remoteSlaveServerName)voidsetRowMeta(RowMetaInterface rowMeta)voidsetThreadNameFromToCopy(String from, int fromCopy, String to, int toCopy)This method is used only in Trans.java when created RowSet at line 333.intsize()StringtoString()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Comparable
compareTo
-
Methods inherited from interface org.pentaho.di.core.RowSet
getDestinationStepCopy, getDestinationStepName, getName, getOriginStepCopy, getOriginStepName, getRemoteSlaveServerName, getRowMeta, isBlocking, isDone, setRemoteSlaveServerName, setRowMeta, setThreadNameFromToCopy
-
-
-
-
Field Detail
-
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
-
-
Method Detail
-
putRow
public boolean putRow(RowMetaInterface rowMeta, Object[] rowData)
Description copied from interface:RowSetOffer 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.
-
putRowWait
public boolean putRowWait(RowMetaInterface rowMeta, Object[] rowData, long time, TimeUnit tu)
We need to wait until- Specified by:
putRowWaitin interfaceRowSet- Parameters:
rowMeta- The description of the row datarowData- the row of datatime- The number of units of timetu- 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:RowSetGet a row from the input buffer, it blocks for a short period until a new row becomes available. Otherwise, it returns null.
-
getRowImmediate
public Object[] getRowImmediate()
Description copied from interface:RowSetGet the first row in the list immediately.- Specified by:
getRowImmediatein interfaceRowSet- Returns:
- a row of data or null if no row is available.
-
getRowWait
public Object[] getRowWait(long timeout, TimeUnit tu)
Description copied from interface:RowSetget the first row in the list immediately if it is available or wait until timeout- Specified by:
getRowWaitin interfaceRowSet- Returns:
- a row of data or null if no row is available.
-
size
public int size()
-
clear
public void clear()
Description copied from interface:RowSetClear this rowset: remove all rows and remove the "done" flag.
-
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:
compareToin interfaceComparable<RowSet>
-
equals
public boolean equals(org.pentaho.di.core.BaseRowSet rowSet)
-
isDone
public boolean isDone()
-
getOriginStepName
public String getOriginStepName()
- Specified by:
getOriginStepNamein interfaceRowSet- Returns:
- Returns the originStepName.
-
getOriginStepCopy
public int getOriginStepCopy()
- Specified by:
getOriginStepCopyin interfaceRowSet- Returns:
- Returns the originStepCopy.
-
getDestinationStepName
public String getDestinationStepName()
- Specified by:
getDestinationStepNamein interfaceRowSet- Returns:
- Returns the destinationStepName.
-
getDestinationStepCopy
public int getDestinationStepCopy()
- Specified by:
getDestinationStepCopyin interfaceRowSet- Returns:
- Returns the destinationStepCopy.
-
setThreadNameFromToCopy
public void setThreadNameFromToCopy(String from, int fromCopy, String to, int toCopy)
Description copied from interface:RowSetThis method is used only in Trans.java when created RowSet at line 333. Don't need any synchronization on this method- Specified by:
setThreadNameFromToCopyin interfaceRowSet
-
getRowMeta
public RowMetaInterface getRowMeta()
- Specified by:
getRowMetain interfaceRowSet- Returns:
- the rowMeta
-
setRowMeta
public void setRowMeta(RowMetaInterface rowMeta)
- Specified by:
setRowMetain interfaceRowSet- Parameters:
rowMeta- the rowMeta to set
-
getRemoteSlaveServerName
public String getRemoteSlaveServerName()
- Specified by:
getRemoteSlaveServerNamein interfaceRowSet- Returns:
- the targetSlaveServer
-
setRemoteSlaveServerName
public void setRemoteSlaveServerName(String remoteSlaveServerName)
- Specified by:
setRemoteSlaveServerNamein interfaceRowSet- 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:
isBlockingin interfaceRowSet- Returns:
- true if this row set is blocking on reading or writing.
-
-