databendlabs/databend · error
verifier did not complete within the timeout.
Error message
verifier did not complete within the timeout.
What it means
The Walk/WalkMut derive only knows how to emit walks for a fixed set of field type shapes (paths, references, options, boxed, vectors, etc.). Any other type expression (arrays, tuples, bare trait objects, fn pointers, macros, raw pointers) hits this fallthrough at compile time.
Solutions
- Change the field to a supported shape (named path type, Option, Box, Vec of a supported type).
- Implement Walk/WalkMut manually for the containing type instead of deriving.
- Add support for the new type shape in emit_walk_for_type if you own the derive crate.
- Move the unsupported field out of the AST node into a side table.
Example fix
// before
struct Expr { meta: (String, u32) }
// after
struct Expr { meta: MetaPair } // named struct type with derive support Defensive patterns
Strategy: fallback
Validate before calling
// pre-check the field type shape before adding a derive; e.g. avoid tuples/arrays/fn pointers in AST nodes
Prevention
- Restrict AST node fields to named path types, Option, Box, Vec
- Manually implement Walk for exotic types
- Add trybuild tests covering each supported field shape
- Extend emit_walk_for_type when new shapes are needed
When it happens
Trigger: Adding a field of an unsupported type shape — e.g. `[u8; 4]`, `(A, B)`, `Box<dyn Trait>`, `*const T`, `fn(A)->B` — to a struct or enum variant that derives Visit/VisitMut.
Common situations: Extending the query AST with new node types; using FFI or low-level types inside AST nodes; copy-pasting derives onto utility structs that were not designed for visiting.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- Token does not belong to this ContextVar
- MEMORY_EXCEEDS_LIMIT
- invalid engine
- Unsupported format for
- Unsupported source type. Expected path, pandas.DataFrame…
AI-assisted analysis of databendlabs/databend@288d84d76e (2026-09-11).
Data as JSON: /api/errors/70028b61adda2e7b.
Report an issue: GitHub.
Appendix: source
Thrown at src/meta/binaries/metaverifier/main.rs:179
println!("verifier worker {} started..", client_num);
handles.push(handle)
}
let waiter_handle = DatabendRuntime::spawn(
async move {
let result = rx.recv_timeout(Duration::from_secs(config.time));
match result {
Ok(_) => {
println!("verifier completed within the timeout.");
}
Err(e) => {
println!(
"verifier did not complete within the timeout: {:?}s, error: {:?}",
config.time, e
);
let _ = fs::write(VERIFIER_RESULT_FILE, "ERROR");
panic!("verifier did not complete within the timeout.")
}
}
},
None,
);
let wait_verifier_handle = DatabendRuntime::spawn(
async move {
for handle in handles {
let ret = handle.await.unwrap();
if let Err(e) = ret {
fs::write(VERIFIER_RESULT_FILE, "ERROR")?;
println!("verifier return error: {:?}", e);
return Err(e);
}
}
tx.send(()).unwrap();
View on GitHub (pinned to 288d84d76e)