基于jprofiler 的一个简单dremio 查询处理学习

private void run(){
assert taskState != State.DONE : "Attempted to run a task with state of DONE.";
assert eventProvider != null : "Attempted to run without an eventProvider";
if (!activateResource.isActivated()) {
taskState = State.BLOCKED_ON_SHARED_RESOURCE;
return;
}
stats.runStarted();
final Thread currentThread = Thread.currentThread();
final String originalName = currentThread.getName();
currentThread.setName(originalName + " - " + name);
try {
if(state == FragmentState.CANCELLED || state == FragmentState.FAILED || state == FragmentState.FINISHED) {
return;
}
if(deferredException.hasException()) {
transitionToFailed(null);
return;
}
if (cancelled.isDone()) {
        Optional<Throwable> failedReason = eventProvider.getFailedReason();
if (failedReason.isPresent() || foremanDead) {
assert(!foremanDead || (foremanDeadException != null));
transitionToFailed(failedReason.isPresent() ? failedReason.get() : foremanDeadException);
return;
}
transitionToCancelled();
taskState = State.DONE;
return;
}
if(!isSetup){
stats.setupStarted();
try {
if (memoryArbiter != null) {
memoryArbiter.acquireMemoryGrant(this, getMemoryToAcquire());
}
setupExecution();
} finally {
stats.setupEnded();
}
return;
}
final Runnable work = workQueue.poll();
if (work != null) {
work.run();
return;
}
FragmentHandle finishedFragment;
while ((finishedFragment = eventProvider.pollFinishedReceiver()) != null) {
pipeline.getTerminalOperator().receivingFragmentFinished(finishedFragment);
}
if (memoryArbiter != null) {
memoryArbiter.acquireMemoryGrant(this, getMemoryToAcquire());
}
taskState = pumper.run();
if(taskState == State.DONE){
transitionToFinished();
}
injector.injectChecked(executionControls, INJECTOR_DO_WORK, OutOfMemoryError.class);
} catch (OutOfMemoryError | OutOfMemoryException e) {
if (e instanceof OutOfDirectMemoryError || e instanceof OutOfMemoryException || "Direct buffer memory".equals(e.getMessage()) || INJECTOR_DO_WORK.equals(e.getMessage())) {
transitionToFailed(UserException.memoryError(e)
.addContext(MemoryDebugInfo.getDetailsOnAllocationFailure(new OutOfMemoryException(e), allocator))
.buildSilently());
} else {
ProcessExit.exitHeap(e);
}
} catch (Throwable e) {
transitionToFailed(e);
} finally {
try {
finishRun(originalName);
} finally {
stats.runEnded();
}
}
}

Original: https://www.cnblogs.com/rongfengliang/p/16463884.html
Author: 荣锋亮
Title: 基于jprofiler 的一个简单dremio 查询处理学习

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/547687/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球