MCPcopy Create free account
hub / github.com/bytedance/bolt / checkPreload

Method checkPreload

bolt/exec/TableScan.cpp:485–513  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

483}
484
485void TableScan::checkPreload() {
486 auto executor = connector_->executor();
487 if (maxSplitPreloadPerDriver_ == 0 || !executor ||
488 !connector_->supportsSplitPreload() || !asyncThreadCtx_->allowPreload()) {
489 return;
490 }
491 if (dataSource_->allPrefetchIssued()) {
492 maxPreloadedSplits_ = driverCtx_->task->numDrivers(driverCtx_->driver) *
493 maxSplitPreloadPerDriver_;
494 if (!splitPreloader_) {
495 splitPreloader_ =
496 [executor, this](std::shared_ptr<connector::ConnectorSplit> split) {
497 preload(split);
498
499 int64_t preloadBytes = split->splitSizeBytes();
500 executor->add([connectorSplit = split,
501 ctx = asyncThreadCtx_,
502 preloadBytes]() mutable {
503 connector::AsyncThreadCtx::Guard guard(ctx.get(), preloadBytes);
504 if (!guard) {
505 return;
506 }
507 connectorSplit->dataSource->prepare();
508 connectorSplit.reset();
509 });
510 };
511 }
512 }
513}
514
515bool TableScan::isFinished() {
516 return noMoreSplits_;

Callers

nothing calls this directly

Calls 10

allowPreloadMethod · 0.80
numDriversMethod · 0.80
executorMethod · 0.45
supportsSplitPreloadMethod · 0.45
allPrefetchIssuedMethod · 0.45
splitSizeBytesMethod · 0.45
addMethod · 0.45
getMethod · 0.45
prepareMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected