#include <JavaTransformExecStream.h>
Inheritance diagram for JavaTransformExecStream:
Public Member Functions | |
JavaTransformExecStream () | |
virtual | ~JavaTransformExecStream () |
virtual void | prepare (JavaTransformExecStreamParams const ¶ms) |
virtual void | setInputBufAccessors (std::vector< SharedExecStreamBufAccessor > const &inAccessors) |
Initializes the buffer accessors for inputs to this stream. | |
virtual void | setOutputBufAccessors (std::vector< SharedExecStreamBufAccessor > const &outAccessors) |
Initializes the buffer accessors for outputs from this stream. | |
virtual void | open (bool restart) |
Opens this stream, acquiring any resources needed in order to be able to fetch data. | |
virtual ExecStreamResult | execute (ExecStreamQuantum const &quantum) |
Executes this stream. | |
virtual void | closeImpl () |
Implements ClosableObject. | |
virtual ExecStreamBufProvision | getInputBufProvision () const |
Queries the BufferProvision which this stream requires of its inputs when consuming their tuples. | |
virtual ExecStreamBufProvision | getOutputBufProvision () const |
Queries the BufferProvision which this stream is capable of when producing tuples. | |
virtual ExecStreamBufProvision | getOutputBufConversion () const |
Queries the BufferProvision to which this stream needs its output to be converted, if any. | |
virtual bool | canEarlyClose () |
| |
ExecStreamGraph & | getGraph () const |
| |
ExecStreamId | getStreamId () const |
| |
virtual void | prepare (ExecStreamParams const ¶ms) |
Prepares this stream for execution. | |
virtual void | getResourceRequirements (ExecStreamResourceQuantity &minQuantity, ExecStreamResourceQuantity &optQuantity, ExecStreamResourceSettingType &optType) |
Determines resource requirements for this stream. | |
virtual void | getResourceRequirements (ExecStreamResourceQuantity &minQuantity, ExecStreamResourceQuantity &optQuantity) |
virtual void | setResourceAllocation (ExecStreamResourceQuantity &quantity) |
Sets current resource allocation for this stream. | |
virtual void | setName (std::string const &) |
Sets unique name of this stream. | |
virtual std::string const & | getName () const |
| |
virtual bool | mayBlock () const |
Queries whether this stream's implementation may block when execute() is called. | |
virtual void | checkAbort () const |
Checks whether there is an abort request for this stream's scheduler. | |
bool | isClosed () const |
| |
void | close () |
Closes this object, releasing any unallocated resources. | |
virtual void | initTraceSource (SharedTraceTarget pTraceTarget, std::string name) |
For use when initialization has to be deferred until after construction. | |
void | trace (TraceLevel level, std::string message) const |
Records a trace message. | |
bool | isTracing () const |
| |
bool | isTracingLevel (TraceLevel level) const |
Determines whether a particular level is being traced. | |
TraceTarget & | getTraceTarget () const |
| |
SharedTraceTarget | getSharedTraceTarget () const |
| |
std::string | getTraceSourceName () const |
Gets the name of this source. | |
void | setTraceSourceName (std::string const &n) |
Sets the name of this source. | |
TraceLevel | getMinimumTraceLevel () const |
void | disableTracing () |
virtual void | initErrorSource (SharedErrorTarget pErrorTarget, const std::string &name) |
For use when initialization has to be deferred until after construction. | |
void | postError (ErrorLevel level, const std::string &message, void *address, long capacity, int index) |
Posts an exception, such as a row exception. | |
void | postError (ErrorLevel level, const std::string &message, const TupleDescriptor &errorDesc, const TupleData &errorTuple, int index) |
Posts an exception, such as a row exception. | |
bool | hasTarget () const |
| |
ErrorTarget & | getErrorTarget () const |
| |
SharedErrorTarget | getSharedErrorTarget () const |
| |
std::string | getErrorSourceName () const |
Gets the name of this source. | |
void | setErrorSourceName (std::string const &n) |
Sets the name of this source. | |
void | disableTarget () |
Protected Member Functions | |
void | checkEmptyInputs () |
Request production on empty inputs. | |
Protected Attributes | |
std::vector< SharedExecStreamBufAccessor > | inAccessors |
SharedExecStreamBufAccessor | pOutAccessor |
jobject | farragoTransform |
The Java peer, an instance of a net.sf.farrago.runtime.FarragoTransform. | |
bool | isOpen |
Whether this stream is currently open. | |
ExecStreamGraph * | pGraph |
Dataflow graph containing this stream. | |
ExecStreamId | id |
Identifier for this stream; local to its containing graph. | |
std::string | name |
Name of stream, as known by optimizer. | |
SharedDynamicParamManager | pDynamicParamManager |
The dynamic parameter manager available to this stream. | |
SharedLogicalTxn | pTxn |
The transaction embracing the stream. | |
ExecStreamResourceQuantity | resourceAllocation |
Resource quantities currently allocated to this stream. | |
SharedCacheAccessor | pQuotaAccessor |
CacheAccessor used for quota tracking. | |
SharedCacheAccessor | pScratchQuotaAccessor |
CacheAccessor used for scratch page quota tracking. | |
bool | needsClose |
Private Attributes | |
CmdInterpreter::StreamGraphHandle * | pStreamGraphHandle |
std::string | javaClassName |
jobject | outputByteBuffer1 |
jobject | outputByteBuffer2 |
PBuffer | pBuffer1 |
PBuffer | pBuffer2 |
Definition at line 65 of file JavaTransformExecStream.h.
JavaTransformExecStream::JavaTransformExecStream | ( | ) |
Definition at line 37 of file JavaTransformExecStream.cpp.
References farragoTransform, outputByteBuffer1, outputByteBuffer2, pBuffer1, pBuffer2, and pStreamGraphHandle.
00038 { 00039 pStreamGraphHandle = NULL; 00040 outputByteBuffer1 = NULL; 00041 outputByteBuffer2 = NULL; 00042 pBuffer1 = NULL; 00043 pBuffer2 = NULL; 00044 farragoTransform = NULL; 00045 }
JavaTransformExecStream::~JavaTransformExecStream | ( | ) | [virtual] |
void JavaTransformExecStream::checkEmptyInputs | ( | ) | [protected] |
Request production on empty inputs.
Called by execute()
Definition at line 209 of file JavaTransformExecStream.cpp.
References EXECBUF_EMPTY, and inAccessors.
Referenced by execute().
00210 { 00211 for (uint i = 0; i < inAccessors.size(); ++i) { 00212 SharedExecStreamBufAccessor inAccessor = inAccessors[i]; 00213 if (inAccessor->getState() == EXECBUF_EMPTY) { 00214 inAccessor->requestProduction(); 00215 } 00216 } 00217 }
void JavaTransformExecStream::prepare | ( | JavaTransformExecStreamParams const & | params | ) | [virtual] |
Definition at line 67 of file JavaTransformExecStream.cpp.
References getInputBufProvision(), getOutputBufProvision(), inAccessors, JavaTransformExecStreamParams::javaClassName, javaClassName, JavaTransformExecStreamParams::outputTupleDesc, JavaTransformExecStreamParams::outputTupleFormat, pOutAccessor, ExecStream::prepare(), JavaTransformExecStreamParams::pStreamGraphHandle, and pStreamGraphHandle.
00069 { 00070 ExecStream::prepare(params); 00071 00072 if (pOutAccessor) { 00073 assert(pOutAccessor->getProvision() == getOutputBufProvision()); 00074 if (pOutAccessor->getTupleDesc().empty()) { 00075 assert(!params.outputTupleDesc.empty()); 00076 pOutAccessor->setTupleShape( 00077 params.outputTupleDesc, 00078 params.outputTupleFormat); 00079 } 00080 } 00081 00082 for (uint i = 0; i < inAccessors.size(); ++i) { 00083 assert(inAccessors[i]->getProvision() == getInputBufProvision()); 00084 } 00085 00086 javaClassName = params.javaClassName; 00087 pStreamGraphHandle = params.pStreamGraphHandle; 00088 }
void JavaTransformExecStream::setInputBufAccessors | ( | std::vector< SharedExecStreamBufAccessor > const & | inAccessors | ) | [virtual] |
Initializes the buffer accessors for inputs to this stream.
This method is only ever called once, before prepare.
inAccessors | buffer accessors ordered by input stream |
Implements ExecStream.
Definition at line 51 of file JavaTransformExecStream.cpp.
References inAccessors.
00053 { 00054 inAccessors = inAccessorsInit; 00055 }
void JavaTransformExecStream::setOutputBufAccessors | ( | std::vector< SharedExecStreamBufAccessor > const & | outAccessors | ) | [virtual] |
Initializes the buffer accessors for outputs from this stream.
This method is only ever called once, before prepare.
outAccessors | buffer accessors ordered by output stream |
Implements ExecStream.
Definition at line 57 of file JavaTransformExecStream.cpp.
References pOutAccessor.
00059 { 00060 assert(outAccessors.size() <= 1); 00061 00062 if (outAccessors.size() > 0) { 00063 pOutAccessor = outAccessors[0]; 00064 } 00065 }
void JavaTransformExecStream::open | ( | bool | restart | ) | [virtual] |
Opens this stream, acquiring any resources needed in order to be able to fetch data.
A precondition is that input streams must already be opened. A stream can be closed and reopened.
restart | if true, the stream must be already open, and should reset itself to start from the beginning of its result set |
Reimplemented from ExecStream.
Definition at line 90 of file JavaTransformExecStream.cpp.
References farragoTransform, ExecStream::getStreamId(), ExecStreamGraph::getStreamInput(), inAccessors, javaClassName, CmdInterpreter::StreamGraphHandle::javaRuntimeContext, JniUtil::methFarragoRuntimeContextFindFarragoTransform, JniUtil::methFarragoTransformRestart, ExecStream::open(), ExecStream::pGraph, pOutAccessor, pStreamGraphHandle, and TRACE_FINER.
00091 { 00092 FENNEL_TRACE(TRACE_FINER, "open" << (restart ? " (restart)" : "")); 00093 ExecStream::open(restart); 00094 00095 JniEnvAutoRef pEnv; 00096 if (restart) { 00097 if (pOutAccessor) { 00098 pOutAccessor->clear(); 00099 } 00100 00101 // restart inputs 00102 for (uint i = 0; i < inAccessors.size(); ++i) { 00103 inAccessors[i]->clear(); 00104 pGraph->getStreamInput(getStreamId(),i)->open(true); 00105 } 00106 00107 assert(farragoTransform); 00108 pEnv->CallVoidMethod( 00109 farragoTransform, 00110 JniUtil::methFarragoTransformRestart, 00111 NULL); 00112 return; 00113 } 00114 00115 // find java peer (a FarragoTransform) 00116 FENNEL_TRACE(TRACE_FINER, "finding java peer, class " << javaClassName); 00117 jobject o = 00118 pEnv->CallObjectMethod( 00119 pStreamGraphHandle->javaRuntimeContext, 00120 JniUtil::methFarragoRuntimeContextFindFarragoTransform, 00121 pEnv->NewStringUTF(javaClassName.c_str())); 00122 assert(o); 00123 farragoTransform = pEnv->NewGlobalRef(o); 00124 }
ExecStreamResult JavaTransformExecStream::execute | ( | ExecStreamQuantum const & | quantum | ) | [virtual] |
Executes this stream.
quantum | governs the maximum amount of execution to perform |
Implements ExecStream.
Definition at line 127 of file JavaTransformExecStream.cpp.
References checkEmptyInputs(), EXECBUF_EOS, EXECBUF_NONEMPTY, EXECBUF_OVERFLOW, EXECRC_BUF_OVERFLOW, EXECRC_BUF_UNDERFLOW, EXECRC_EOS, farragoTransform, JniUtil::methFarragoTransformExecute, ExecStreamQuantum::nTuplesMax, outputByteBuffer1, outputByteBuffer2, pBuffer1, pBuffer2, pOutAccessor, TRACE_FINER, and TRACE_FINEST.
00129 { 00130 FENNEL_TRACE(TRACE_FINEST, "execute"); 00131 00132 if (pOutAccessor) { 00133 switch (pOutAccessor->getState()) { 00134 case EXECBUF_NONEMPTY: 00135 case EXECBUF_OVERFLOW: 00136 FENNEL_TRACE(TRACE_FINER, "overflow"); 00137 return EXECRC_BUF_OVERFLOW; 00138 case EXECBUF_EOS: 00139 FENNEL_TRACE(TRACE_FINER, "eos"); 00140 return EXECRC_EOS; 00141 default: 00142 break; 00143 } 00144 } 00145 00146 checkEmptyInputs(); 00147 00148 jlong jquantum = static_cast<jlong>(quantum.nTuplesMax); 00149 JniEnvAutoRef pEnv; 00150 assert(farragoTransform); 00151 PBuffer pBuffer; 00152 if (pOutAccessor) { 00153 pBuffer = pOutAccessor->getProductionStart(); 00154 if (!outputByteBuffer1) { 00155 outputByteBuffer1 = pEnv->NewDirectByteBuffer( 00156 pBuffer, 00157 pOutAccessor->getProductionAvailable()); 00158 outputByteBuffer1 = pEnv->NewGlobalRef(outputByteBuffer1); 00159 pBuffer1 = pBuffer; 00160 } else if (!outputByteBuffer2) { 00161 if (pBuffer1 != pBuffer) { 00162 outputByteBuffer2 = pEnv->NewDirectByteBuffer( 00163 pBuffer, 00164 pOutAccessor->getProductionAvailable()); 00165 outputByteBuffer2 = pEnv->NewGlobalRef(outputByteBuffer2); 00166 pBuffer2 = pBuffer; 00167 } 00168 } 00169 } else { 00170 pBuffer = NULL; 00171 } 00172 00173 // If this assertion fails, it means we're dealing with something 00174 // other than a ScratchBufferExecStream or DoubleBufferExecStream 00175 // immediately downstream. 00176 assert((pBuffer == pBuffer1) || (pBuffer == pBuffer2)); 00177 00178 // REVIEW jvs 18-Dec-2008: Is it OK to pass NULL for the buffer 00179 // in the case where no outputs are defined? There are no 00180 // unit tests demonstrating this pattern in Fennel, but 00181 // there should be. 00182 00183 int cb = pEnv->CallIntMethod( 00184 farragoTransform, 00185 JniUtil::methFarragoTransformExecute, 00186 (pBuffer == pBuffer1) ? outputByteBuffer1 : outputByteBuffer2, 00187 jquantum); 00188 00189 if (cb > 0) { 00190 assert(pOutAccessor); 00191 pOutAccessor->produceData(pBuffer + cb); 00192 FENNEL_TRACE(TRACE_FINER, "wrote " << cb << " bytes"); 00193 return EXECRC_BUF_OVERFLOW; 00194 } else if (cb < 0) { 00195 FENNEL_TRACE(TRACE_FINER, "underflow"); 00196 checkEmptyInputs(); 00197 // TODO mb 10/28/08: return EXECRC_YIELD when executing in data-push 00198 // mode. 00199 return EXECRC_BUF_UNDERFLOW; 00200 } else { 00201 FENNEL_TRACE(TRACE_FINER, "marking EOS"); 00202 if (pOutAccessor) { 00203 pOutAccessor->markEOS(); 00204 } 00205 return EXECRC_EOS; 00206 } 00207 }
void JavaTransformExecStream::closeImpl | ( | ) | [virtual] |
Implements ClosableObject.
ExecStream implementations may override this to release any resources acquired while open.
Reimplemented from ExecStream.
Definition at line 219 of file JavaTransformExecStream.cpp.
References ExecStream::closeImpl(), farragoTransform, outputByteBuffer1, outputByteBuffer2, pBuffer1, and pBuffer2.
00220 { 00221 JniEnvAutoRef pEnv; 00222 if (farragoTransform) { 00223 pEnv->DeleteGlobalRef(farragoTransform); 00224 farragoTransform = NULL; 00225 } 00226 if (outputByteBuffer1) { 00227 pEnv->DeleteGlobalRef(outputByteBuffer1); 00228 outputByteBuffer1 = NULL; 00229 } 00230 if (outputByteBuffer2) { 00231 pEnv->DeleteGlobalRef(outputByteBuffer2); 00232 outputByteBuffer2 = NULL; 00233 } 00234 pBuffer1 = NULL; 00235 pBuffer2 = NULL; 00236 ExecStream::closeImpl(); 00237 }
ExecStreamBufProvision JavaTransformExecStream::getInputBufProvision | ( | ) | const [virtual] |
Queries the BufferProvision which this stream requires of its inputs when consuming their tuples.
Reimplemented from ExecStream.
Definition at line 239 of file JavaTransformExecStream.cpp.
References BUFPROV_PRODUCER.
Referenced by prepare().
00240 { 00241 return BUFPROV_PRODUCER; 00242 }
ExecStreamBufProvision JavaTransformExecStream::getOutputBufProvision | ( | ) | const [virtual] |
Queries the BufferProvision which this stream is capable of when producing tuples.
Reimplemented from ExecStream.
Definition at line 244 of file JavaTransformExecStream.cpp.
References BUFPROV_CONSUMER.
Referenced by prepare().
00245 { 00246 return BUFPROV_CONSUMER; 00247 }
ExecStreamBufProvision JavaTransformExecStream::getOutputBufConversion | ( | ) | const [virtual] |
Queries the BufferProvision to which this stream needs its output to be converted, if any.
Reimplemented from ExecStream.
Definition at line 249 of file JavaTransformExecStream.cpp.
References BUFPROV_PRODUCER.
00250 { 00251 // Although JavaTransformExecStream itself does not provide buffers, 00252 // it relies on having either ScratchBufferExecStream or 00253 // DoubleBufferExecStream available immediately downstream; it cannot 00254 // handle any other kind of buffers such as those from 00255 // SegBufferExecStream. 00256 return BUFPROV_PRODUCER; 00257 }
bool ExecStream::canEarlyClose | ( | ) | [virtual, inherited] |
Reimplemented in SegBufferWriterExecStream.
Definition at line 49 of file ExecStream.cpp.
ExecStreamGraph & ExecStream::getGraph | ( | ) | const [inline, inherited] |
Definition at line 293 of file ExecStream.h.
References ExecStream::pGraph.
Referenced by ExternalSortExecStreamImpl::execute(), JavaSinkExecStream::execute(), SegBufferWriterExecStream::execute(), SegBufferExecStream::execute(), BarrierExecStream::execute(), Java_net_sf_farrago_fennel_FennelStorage_tupleStreamFetch(), Java_net_sf_farrago_fennel_FennelStorage_tupleStreamTransformFetch(), JavaSinkExecStream::stuffByteBuffer(), and ExecStreamScheduler::traceStreamBuffers().
ExecStreamId ExecStream::getStreamId | ( | ) | const [inline, inherited] |
Definition at line 288 of file ExecStream.h.
References ExecStream::id.
Referenced by ExternalSortExecStreamImpl::execute(), SegBufferWriterExecStream::execute(), SegBufferExecStream::execute(), CorrelationJoinExecStream::execute(), BarrierExecStream::execute(), Java_net_sf_farrago_fennel_FennelStorage_tupleStreamTransformFetch(), open(), SingleInputExecStream::open(), ConfluenceExecStream::open(), CartesianJoinExecStream::prepare(), ParallelExecStreamScheduler::readStream(), DfsTreeExecStreamScheduler::readStream(), LbmMinusExecStream::restartSubtrahends(), ExecStreamScheduler::tracePostExecution(), ExecStreamScheduler::tracePreExecution(), ExecStreamScheduler::traceStreamBuffers(), and ParallelExecStreamScheduler::tryExecuteTask().
00289 { 00290 return id; 00291 }
void ExecStream::prepare | ( | ExecStreamParams const & | params | ) | [virtual, inherited] |
Prepares this stream for execution.
A precondition is that input streams must already be defined and prepared. As an effect of this call, the tuple shape should be defined for all output buffers and remain unchanged for the lifetime of the stream. This method is only ever called once, before the first open. Although this method is virtual, derived classes may choose to define an overloaded version instead with a specialized covariant parameter class.
params | instance of stream parameterization class which should be used to prepare this stream |
Definition at line 84 of file ExecStream.cpp.
References ExecStreamGraph::getDynamicParamManager(), SegmentAccessor::pCacheAccessor, ExecStreamParams::pCacheAccessor, ExecStream::pDynamicParamManager, ExecStream::pGraph, ExecStream::pQuotaAccessor, ExecStream::pScratchQuotaAccessor, and ExecStreamParams::scratchAccessor.
Referenced by prepare(), SingleOutputExecStream::prepare(), and SingleInputExecStream::prepare().
00085 { 00086 if (pGraph) { 00087 pDynamicParamManager = pGraph->getDynamicParamManager(); 00088 } 00089 pQuotaAccessor = params.pCacheAccessor; 00090 pScratchQuotaAccessor = params.scratchAccessor.pCacheAccessor; 00091 }
void ExecStream::getResourceRequirements | ( | ExecStreamResourceQuantity & | minQuantity, | |
ExecStreamResourceQuantity & | optQuantity, | |||
ExecStreamResourceSettingType & | optType | |||
) | [virtual, inherited] |
Determines resource requirements for this stream.
Default implementation declares zero resource requirements.
minQuantity | receives the minimum resource quantity needed by this stream in order to execute | |
optQuantity | receives the resource quantity needed by this stream in order to execute optimally | |
optType | Receives the value indicating the accuracy of the optQuantity parameter. This parameter is optional and defaults to EXEC_RESOURCE_ACCURATE if omitted. If the optimum setting is an estimate or no value can be specified (e.g., due to lack of statistics), then this parameter needs to be used to indicate a non-accurate optimum resource setting. |
Reimplemented in MockResourceExecStream, BTreePrefetchSearchExecStream, LhxAggExecStream, LhxJoinExecStream, LbmGeneratorExecStream, LbmUnionExecStream, and ExternalSortExecStreamImpl.
Definition at line 93 of file ExecStream.cpp.
References EXEC_RESOURCE_ACCURATE.
Referenced by ExternalSortExecStreamImpl::getResourceRequirements(), LcsRowScanBaseExecStream::getResourceRequirements(), LcsClusterAppendExecStream::getResourceRequirements(), LbmUnionExecStream::getResourceRequirements(), LbmSplicerExecStream::getResourceRequirements(), LbmGeneratorExecStream::getResourceRequirements(), LbmChopperExecStream::getResourceRequirements(), LhxJoinExecStream::getResourceRequirements(), LhxAggExecStream::getResourceRequirements(), FtrsTableWriterExecStream::getResourceRequirements(), BTreeReadExecStream::getResourceRequirements(), BTreeInsertExecStream::getResourceRequirements(), FlatFileExecStreamImpl::getResourceRequirements(), SegBufferWriterExecStream::getResourceRequirements(), SegBufferReaderExecStream::getResourceRequirements(), SegBufferExecStream::getResourceRequirements(), ScratchBufferExecStream::getResourceRequirements(), and DoubleBufferExecStream::getResourceRequirements().
00097 { 00098 getResourceRequirements(minQuantity, optQuantity); 00099 optType = EXEC_RESOURCE_ACCURATE; 00100 }
void ExecStream::getResourceRequirements | ( | ExecStreamResourceQuantity & | minQuantity, | |
ExecStreamResourceQuantity & | optQuantity | |||
) | [virtual, inherited] |
Reimplemented in DoubleBufferExecStream, ScratchBufferExecStream, SegBufferExecStream, SegBufferReaderExecStream, SegBufferWriterExecStream, FlatFileExecStreamImpl, BTreeInsertExecStream, BTreeReadExecStream, FtrsTableWriterExecStream, LbmChopperExecStream, LbmSplicerExecStream, LcsClusterAppendExecStream, LcsClusterReplaceExecStream, LcsRowScanBaseExecStream, and LcsRowScanExecStream.
Definition at line 102 of file ExecStream.cpp.
References ExecStreamResourceQuantity::nCachePages, and ExecStreamResourceQuantity::nThreads.
00105 { 00106 minQuantity.nThreads = 0; 00107 minQuantity.nCachePages = 0; 00108 optQuantity = minQuantity; 00109 }
void ExecStream::setResourceAllocation | ( | ExecStreamResourceQuantity & | quantity | ) | [virtual, inherited] |
Sets current resource allocation for this stream.
If called while the stream is open, this indicates a request for the stream to dynamically adjust its memory usage. If the stream is incapable of honoring the request, it should update quantity with the actual amounts still in use.
quantity | allocated resource quantity |
Reimplemented in MockResourceExecStream, BTreePrefetchSearchExecStream, LhxAggExecStream, LhxJoinExecStream, LbmGeneratorExecStream, LbmUnionExecStream, and ExternalSortExecStreamImpl.
Definition at line 111 of file ExecStream.cpp.
References ExecStreamResourceQuantity::nCachePages, ExecStream::pQuotaAccessor, ExecStream::pScratchQuotaAccessor, and ExecStream::resourceAllocation.
Referenced by ExternalSortExecStreamImpl::setResourceAllocation(), LbmUnionExecStream::setResourceAllocation(), LbmGeneratorExecStream::setResourceAllocation(), LhxJoinExecStream::setResourceAllocation(), LhxAggExecStream::setResourceAllocation(), and BTreePrefetchSearchExecStream::setResourceAllocation().
00113 { 00114 resourceAllocation = quantity; 00115 if (pQuotaAccessor) { 00116 pQuotaAccessor->setMaxLockedPages(quantity.nCachePages); 00117 } 00118 if (pScratchQuotaAccessor) { 00119 pScratchQuotaAccessor->setMaxLockedPages(quantity.nCachePages); 00120 } 00121 }
void ExecStream::setName | ( | std::string const & | ) | [virtual, inherited] |
Sets unique name of this stream.
Definition at line 157 of file ExecStream.cpp.
References ExecStream::name.
00158 { 00159 name = nameInit; 00160 }
std::string const & ExecStream::getName | ( | ) | const [virtual, inherited] |
Definition at line 162 of file ExecStream.cpp.
References ExecStream::name.
Referenced by DfsTreeExecStreamScheduler::findNextConsumer(), ParallelExecStreamScheduler::readStream(), DfsTreeExecStreamScheduler::readStream(), ExecStreamScheduler::tracePostExecution(), and ExecStreamScheduler::tracePreExecution().
00163 { 00164 return name; 00165 }
bool ExecStream::mayBlock | ( | ) | const [virtual, inherited] |
Queries whether this stream's implementation may block when execute() is called.
For accurate scheduling, non-blocking implementations are preferred; the scheduler must be aware of the potential for blocking so that it can allocate extra threads accordingly.
Definition at line 167 of file ExecStream.cpp.
void ExecStream::checkAbort | ( | ) | const [virtual, inherited] |
Checks whether there is an abort request for this stream's scheduler.
Normally, streams don't need to check this, since the scheduler services abort requests in between quanta. However, streams which enter long-running loops need to check for themselves. If an abort is scheduled, this method will throw an AbortExcn automatically.
Definition at line 72 of file ExecStream.cpp.
References ExecStreamScheduler::checkAbort(), ExecStreamGraph::getScheduler(), and ExecStream::pGraph.
Referenced by LhxJoinExecStream::execute(), LhxAggExecStream::execute(), ExternalSortRunAccessor::fetch(), and ExternalSortMerger::fetch().
00073 { 00074 if (!pGraph) { 00075 return; 00076 } 00077 ExecStreamScheduler *pScheduler = pGraph->getScheduler(); 00078 if (!pScheduler) { 00079 return; 00080 } 00081 pScheduler->checkAbort(); 00082 }
bool ClosableObject::isClosed | ( | ) | const [inline, inherited] |
Definition at line 58 of file ClosableObject.h.
00059 { 00060 return !needsClose; 00061 }
void ClosableObject::close | ( | ) | [inherited] |
Closes this object, releasing any unallocated resources.
Reimplemented in CollectExecStream, CorrelationJoinExecStream, LcsClusterAppendExecStream, and LcsClusterReplaceExecStream.
Definition at line 39 of file ClosableObject.cpp.
References ClosableObject::closeImpl(), and ClosableObject::needsClose.
Referenced by CacheImpl< PageT, VictimPolicyT >::allocatePages(), LcsRowScanBaseExecStream::closeImpl(), ExecStreamGraphImpl::closeImpl(), FlatFileBuffer::open(), ClosableObjectDestructor::operator()(), and Segment::~Segment().
00040 { 00041 if (!needsClose) { 00042 return; 00043 } 00044 needsClose = false; 00045 closeImpl(); 00046 }
void TraceSource::initTraceSource | ( | SharedTraceTarget | pTraceTarget, | |
std::string | name | |||
) | [virtual, inherited] |
For use when initialization has to be deferred until after construction.
pTraceTarget | the TraceTarget to which messages will be sent | |
name | the name of this source |
Definition at line 46 of file TraceSource.cpp.
References TraceSource::isTracing(), TraceSource::minimumLevel, TraceSource::name, TraceSource::pTraceTarget, and TRACE_OFF.
Referenced by TestBase::beforeTestCase(), TestBase::TestBase(), and TraceSource::TraceSource().
00049 { 00050 assert(!pTraceTarget.get()); 00051 00052 pTraceTarget = pTraceTargetInit; 00053 name = nameInit; 00054 if (isTracing()) { 00055 minimumLevel = pTraceTarget->getSourceTraceLevel(name); 00056 } else { 00057 minimumLevel = TRACE_OFF; 00058 } 00059 }
void TraceSource::trace | ( | TraceLevel | level, | |
std::string | message | |||
) | const [inherited] |
Records a trace message.
Normally only called via FENNEL_TRACE.
level | severity level of event being trace | |
message | the text of the message |
Definition at line 61 of file TraceSource.cpp.
References TraceSource::getTraceTarget(), TraceSource::isTracing(), TraceSource::name, and TraceTarget::notifyTrace().
Referenced by Calculator::exec(), and ExecStreamScheduler::traceStreamBufferContents().
00062 { 00063 if (isTracing()) { 00064 getTraceTarget().notifyTrace(name,level,message); 00065 } 00066 }
bool TraceSource::isTracing | ( | ) | const [inline, inherited] |
Definition at line 88 of file TraceSource.h.
Referenced by TraceSource::initTraceSource(), CalcExecStream::prepare(), and TraceSource::trace().
00089 { 00090 return pTraceTarget.get() ? true : false; 00091 }
bool TraceSource::isTracingLevel | ( | TraceLevel | level | ) | const [inline, inherited] |
Determines whether a particular level is being traced.
level | trace level to test |
Definition at line 100 of file TraceSource.h.
Referenced by ExecStreamScheduler::addGraph(), SimpleExecStreamGovernor::assignCachePages(), SimpleExecStreamGovernor::distributeCachePages(), Calculator::exec(), ExecStreamScheduler::ExecStreamScheduler(), LcsClusterNodeWriter::getLastClusterPageForWrite(), LcsClusterNodeWriter::moveFromTempToIndex(), JavaSinkExecStream::stuffByteBuffer(), and ExecStreamScheduler::traceStreamBuffers().
00101 { 00102 return level >= minimumLevel; 00103 }
TraceTarget& TraceSource::getTraceTarget | ( | ) | const [inline, inherited] |
Definition at line 108 of file TraceSource.h.
Referenced by TraceSource::trace().
00109 { 00110 assert(isTracing()); 00111 return *(pTraceTarget.get()); 00112 }
SharedTraceTarget TraceSource::getSharedTraceTarget | ( | ) | const [inline, inherited] |
Definition at line 117 of file TraceSource.h.
Referenced by Database::init(), LcsClusterAppendExecStream::initLoad(), and CalcExecStream::prepare().
00118 { 00119 return pTraceTarget; 00120 }
std::string TraceSource::getTraceSourceName | ( | ) | const [inline, inherited] |
Gets the name of this source.
Useful to construct nested names for subcomponents that are also TraceSources.
Definition at line 127 of file TraceSource.h.
Referenced by LcsClusterAppendExecStream::initLoad().
00128 { 00129 return name; 00130 }
void TraceSource::setTraceSourceName | ( | std::string const & | n | ) | [inline, inherited] |
Sets the name of this source.
Useful to construct dynamic names for fine-grained filtering.
Definition at line 136 of file TraceSource.h.
00137 { 00138 name = n; 00139 }
TraceLevel TraceSource::getMinimumTraceLevel | ( | ) | const [inline, inherited] |
void TraceSource::disableTracing | ( | ) | [inherited] |
Definition at line 68 of file TraceSource.cpp.
References TraceSource::minimumLevel, TraceSource::pTraceTarget, and TRACE_OFF.
Referenced by TestBase::afterTestCase().
00069 { 00070 pTraceTarget.reset(); 00071 minimumLevel = TRACE_OFF; 00072 }
void ErrorSource::initErrorSource | ( | SharedErrorTarget | pErrorTarget, | |
const std::string & | name | |||
) | [virtual, inherited] |
For use when initialization has to be deferred until after construction.
pErrorTarget | the ErrorTarget to which errors will be posted | |
name | the name of this source |
Definition at line 47 of file ErrorSource.cpp.
References ErrorSource::name, and ErrorSource::pErrorTarget.
Referenced by ErrorSource::ErrorSource().
00050 { 00051 pErrorTarget = pErrorTargetInit; 00052 name = nameInit; 00053 }
void ErrorSource::postError | ( | ErrorLevel | level, | |
const std::string & | message, | |||
void * | address, | |||
long | capacity, | |||
int | index | |||
) | [inherited] |
Posts an exception, such as a row exception.
Definition at line 55 of file ErrorSource.cpp.
References ErrorSource::getErrorTarget(), ErrorSource::hasTarget(), ErrorSource::name, and ErrorTarget::notifyError().
Referenced by FlatFileExecStreamImpl::logError(), ErrorSource::postError(), and LbmSplicerExecStream::postViolation().
00058 { 00059 if (hasTarget()) { 00060 getErrorTarget().notifyError( 00061 name, level, message, address, capacity, index); 00062 } 00063 }
void ErrorSource::postError | ( | ErrorLevel | level, | |
const std::string & | message, | |||
const TupleDescriptor & | errorDesc, | |||
const TupleData & | errorTuple, | |||
int | index | |||
) | [inherited] |
Posts an exception, such as a row exception.
Definition at line 65 of file ErrorSource.cpp.
References TupleAccessor::compute(), ErrorSource::errorAccessor, FixedBuffer, TupleAccessor::getByteCount(), TupleAccessor::getMaxByteCount(), ErrorSource::hasTarget(), TupleAccessor::marshal(), ErrorSource::pErrorBuf, and ErrorSource::postError().
00068 { 00069 if (!hasTarget()) { 00070 return; 00071 } 00072 00073 if (!pErrorBuf) { 00074 errorAccessor.compute(errorDesc); 00075 uint cbMax = errorAccessor.getMaxByteCount(); 00076 pErrorBuf.reset(new FixedBuffer[cbMax]); 00077 } 00078 00079 uint cbTuple = errorAccessor.getByteCount(errorTuple); 00080 errorAccessor.marshal(errorTuple, pErrorBuf.get()); 00081 postError(level, message, pErrorBuf.get(), cbTuple, index); 00082 }
bool ErrorSource::hasTarget | ( | ) | const [inline, inherited] |
Definition at line 112 of file ErrorSource.h.
Referenced by ErrorSource::postError().
00113 { 00114 return pErrorTarget.get() ? true : false; 00115 }
ErrorTarget& ErrorSource::getErrorTarget | ( | ) | const [inline, inherited] |
Definition at line 120 of file ErrorSource.h.
Referenced by ErrorSource::postError().
00121 { 00122 assert(hasTarget()); 00123 return *(pErrorTarget.get()); 00124 }
SharedErrorTarget ErrorSource::getSharedErrorTarget | ( | ) | const [inline, inherited] |
Definition at line 129 of file ErrorSource.h.
00130 { 00131 return pErrorTarget; 00132 }
std::string ErrorSource::getErrorSourceName | ( | ) | const [inline, inherited] |
Gets the name of this source.
Useful to construct nested names for subcomponents that are also ErrorSources.
Definition at line 139 of file ErrorSource.h.
00140 { 00141 return name; 00142 }
void ErrorSource::setErrorSourceName | ( | std::string const & | n | ) | [inline, inherited] |
Sets the name of this source.
Useful to construct dynamic names for fine-grained filtering.
Definition at line 148 of file ErrorSource.h.
00149 { 00150 name = n; 00151 }
void ErrorSource::disableTarget | ( | ) | [inherited] |
Definition at line 84 of file ErrorSource.cpp.
References ErrorSource::pErrorTarget.
00085 { 00086 pErrorTarget.reset(); 00087 }
Definition at line 68 of file JavaTransformExecStream.h.
Referenced by JavaTransformExecStream(), open(), and prepare().
std::string JavaTransformExecStream::javaClassName [private] |
jobject JavaTransformExecStream::outputByteBuffer1 [private] |
Definition at line 70 of file JavaTransformExecStream.h.
Referenced by closeImpl(), execute(), and JavaTransformExecStream().
jobject JavaTransformExecStream::outputByteBuffer2 [private] |
Definition at line 71 of file JavaTransformExecStream.h.
Referenced by closeImpl(), execute(), and JavaTransformExecStream().
PBuffer JavaTransformExecStream::pBuffer1 [private] |
Definition at line 72 of file JavaTransformExecStream.h.
Referenced by closeImpl(), execute(), and JavaTransformExecStream().
PBuffer JavaTransformExecStream::pBuffer2 [private] |
Definition at line 73 of file JavaTransformExecStream.h.
Referenced by closeImpl(), execute(), and JavaTransformExecStream().
std::vector<SharedExecStreamBufAccessor> JavaTransformExecStream::inAccessors [protected] |
Definition at line 77 of file JavaTransformExecStream.h.
Referenced by checkEmptyInputs(), open(), prepare(), and setInputBufAccessors().
Definition at line 78 of file JavaTransformExecStream.h.
Referenced by execute(), open(), prepare(), and setOutputBufAccessors().
jobject JavaTransformExecStream::farragoTransform [protected] |
The Java peer, an instance of a net.sf.farrago.runtime.FarragoTransform.
Definition at line 89 of file JavaTransformExecStream.h.
Referenced by closeImpl(), execute(), JavaTransformExecStream(), and open().
bool ExecStream::isOpen [protected, inherited] |
Whether this stream is currently open.
Note that this is not quite the opposite of the inherited ClosableObject.needsClose, since a stream needs to be closed before destruction if it has been prepared but never opened.
Definition at line 61 of file ExecStream.h.
Referenced by ExecStream::closeImpl(), ExecStream::ExecStream(), and ExecStream::open().
ExecStreamGraph* ExecStream::pGraph [protected, inherited] |
Dataflow graph containing this stream.
Note that we don't use a weak_ptr for this because it needs to be accessed frequently during execution, and the extra locking overhead would be frivolous.
Definition at line 68 of file ExecStream.h.
Referenced by ExecStream::checkAbort(), ExecStream::ExecStream(), CorrelationJoinExecStream::execute(), ExecStream::getGraph(), open(), SingleInputExecStream::open(), MergeExecStream::open(), ExecStream::open(), CorrelationJoinExecStream::open(), ConfluenceExecStream::open(), ExecStream::prepare(), CartesianJoinExecStream::prepare(), and LbmMinusExecStream::restartSubtrahends().
ExecStreamId ExecStream::id [protected, inherited] |
Identifier for this stream; local to its containing graph.
Definition at line 73 of file ExecStream.h.
Referenced by ExecStream::getStreamId().
std::string ExecStream::name [protected, inherited] |
Name of stream, as known by optimizer.
Reimplemented from TraceSource.
Definition at line 78 of file ExecStream.h.
Referenced by ExecStream::ExecStream(), ExecStream::getName(), FlatFileExecStreamImpl::open(), and ExecStream::setName().
SharedDynamicParamManager ExecStream::pDynamicParamManager [protected, inherited] |
The dynamic parameter manager available to this stream.
(Obtained at prepare() time. Keep a shared pointer in case the stream is reassigned to another graph for execution; cf ExecStreamGraph::mergeFrom())
Definition at line 85 of file ExecStream.h.
Referenced by CorrelationJoinExecStream::close(), SegBufferReaderExecStream::closeImpl(), LbmUnionExecStream::execute(), LbmSplicerExecStream::execute(), LbmGeneratorExecStream::execute(), LbmChopperExecStream::execute(), CorrelationJoinExecStream::execute(), BarrierExecStream::execute(), LcsClusterReplaceExecStream::open(), LbmUnionExecStream::open(), LbmSplicerExecStream::open(), LbmGeneratorExecStream::open(), LbmBitOpExecStream::open(), BTreeSearchExecStream::open(), BTreeInsertExecStream::open(), SegBufferWriterExecStream::open(), SegBufferReaderExecStream::open(), NestedLoopJoinExecStream::open(), CorrelationJoinExecStream::open(), ExecStream::prepare(), CalcExecStream::prepare(), NestedLoopJoinExecStream::processLeftInput(), LbmSearchExecStream::reachedTupleLimit(), ReshapeExecStream::readDynamicParams(), SegBufferWriterExecStream::readReaderRefCount(), BTreeSearchExecStream::readSearchKey(), BTreeSearchExecStream::readUpperBoundKey(), LbmSearchExecStream::setAdditionalKeys(), and LbmBitOpExecStream::writeStartRidParamValue().
SharedLogicalTxn ExecStream::pTxn [protected, inherited] |
The transaction embracing the stream.
Obtained at open() time; but not released at close() time, to allow TableWriters to replay a txn. Keep a shared pointer in case the stream is reassigned to another graph for execution; cf ExecStreamGraph::mergeFrom())
Definition at line 94 of file ExecStream.h.
Referenced by FtrsTableWriterExecStream::commitSavepoint(), FtrsTableWriterExecStream::createSavepoint(), FtrsTableWriterExecStream::open(), ExecStream::open(), and FtrsTableWriterExecStream::rollbackSavepoint().
ExecStreamResourceQuantity ExecStream::resourceAllocation [protected, inherited] |
Resource quantities currently allocated to this stream.
Definition at line 100 of file ExecStream.h.
Referenced by ExecStream::setResourceAllocation().
SharedCacheAccessor ExecStream::pQuotaAccessor [protected, inherited] |
CacheAccessor used for quota tracking.
Definition at line 105 of file ExecStream.h.
Referenced by ExecStream::open(), ExecStream::prepare(), and ExecStream::setResourceAllocation().
SharedCacheAccessor ExecStream::pScratchQuotaAccessor [protected, inherited] |
CacheAccessor used for scratch page quota tracking.
Definition at line 110 of file ExecStream.h.
Referenced by ExecStream::open(), ExecStream::prepare(), and ExecStream::setResourceAllocation().
bool ClosableObject::needsClose [protected, inherited] |
Definition at line 44 of file ClosableObject.h.
Referenced by SegStreamAllocation::beginWrite(), ExecStreamGraphImpl::clear(), ClosableObject::ClosableObject(), ClosableObject::close(), FlatFileBuffer::open(), ExecStreamGraphImpl::open(), ExecStream::open(), and ClosableObject::~ClosableObject().