MCPcopy Create free account
hub / github.com/apache/impala / WaitForRuntimeFilters

Method WaitForRuntimeFilters

be/src/exec/scan-node.cc:215–253  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

213}
214
215bool ScanNode::WaitForRuntimeFilters() {
216 int32_t wait_time_ms = FLAGS_runtime_filter_wait_time_ms;
217 if (runtime_state_->query_options().runtime_filter_wait_time_ms > 0) {
218 wait_time_ms = runtime_state_->query_options().runtime_filter_wait_time_ms;
219 }
220 vector<string> arrived_filter_ids;
221 vector<string> missing_filter_ids;
222 int32_t max_arrival_delay = 0;
223 int64_t start = MonotonicMillis();
224 for (auto& ctx: filter_ctxs_) {
225 string filter_id = Substitute("$0", ctx.filter->id());
226 if (ctx.filter->WaitForArrival(wait_time_ms)) {
227 arrived_filter_ids.push_back(filter_id);
228 } else {
229 missing_filter_ids.push_back(filter_id);
230 }
231 max_arrival_delay = max(max_arrival_delay, ctx.filter->arrival_delay_ms());
232 }
233 int64_t end = MonotonicMillis();
234 const string& wait_time = PrettyPrinter::Print(end - start, TUnit::TIME_MS);
235 const string& arrival_delay = PrettyPrinter::Print(max_arrival_delay, TUnit::TIME_MS);
236
237 if (arrived_filter_ids.size() == filter_ctxs_.size()) {
238 runtime_profile()->AddInfoString("Runtime filters",
239 Substitute("All filters arrived. Waited $0. Maximum arrival delay: $1.",
240 wait_time, arrival_delay));
241 VLOG(2) << "Filters arrived. Waited " << wait_time
242 << ". Current time since reboot(ms) " << end;
243 return true;
244 }
245
246 const string& filter_str = Substitute("Not all filters arrived (arrived: [$0], missing "
247 "[$1]), waited for $2. Arrival delay: $3.",
248 join(arrived_filter_ids, ", "), join(missing_filter_ids, ", "), wait_time,
249 arrival_delay);
250 runtime_profile()->AddInfoString("Runtime filters", filter_str);
251 VLOG(2) << filter_str;
252 return false;
253}
254
255void ScanNode::ScannerThreadState::Prepare(
256 ScanNode* parent, int64_t estimated_per_thread_mem) {

Callers

nothing calls this directly

Calls 10

MonotonicMillisFunction · 0.85
SubstituteFunction · 0.85
maxFunction · 0.85
joinFunction · 0.85
WaitForArrivalMethod · 0.80
push_backMethod · 0.80
arrival_delay_msMethod · 0.80
AddInfoStringMethod · 0.80
idMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected