risingwavelabs/risingwave · info · StreamExecutorError

test_error

Error message

test_error

What it means

A panic (via the `bail!` macro) raised inside a test helper `func_return_error` in the stream executor's test module. `bail!` returns `Err(StreamExecutorError::msg("test_error"))`, and the test's panic is used to exercise the executor error Display/backtrace rendering for manual UI inspection. It is not a production error path.

Solutions

  1. No fix needed: this is an intentional panic in a `#[should_panic] #[ignore]` test used for manual UI inspection.
  2. If you did not expect it, ensure you are not running the test with `--include-ignored`; it is meant to be run only for manual checks.
Defensive patterns

Strategy: try-catch

Try / catch

// Not needed in normal development. Only run for manual UI checks:
// cargo test -p risingwave_stream executor_error_ui_test -- --ignored --nocapture
// The test is #[should_panic], so a panic is the expected outcome.

Prevention

When it happens

Trigger: Running the ignored tests `executor_error_ui_test_1` or `executor_error_ui_test_2` explicitly with `cargo test -- --ignored` (they are `#[ignore = "manual UI check"]` and `#[should_panic]`); the helper `func_return_error` calls `bail!("test_error")`.

Common situations: Developers manually verifying how `StreamExecutorError` backtraces look in logs; contributors touching the error type or tracing setup who run ignored tests.

Understand the failure class

Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.

Related errors


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/741e91be2bca65d7. Report an issue: GitHub.

Appendix: source

Thrown at src/stream/src/executor/error.rs:178

    }
}

impl StreamExecutorError {
    pub fn variant_name(&self) -> &str {
        self.0.inner().as_ref()
    }
}

static_assertions::const_assert_eq!(std::mem::size_of::<StreamExecutorError>(), 8);

#[cfg(test)]
mod tests {
    use risingwave_common::bail;

    use super::*;

    fn func_return_error() -> StreamExecutorResult<()> {
        bail!("test_error")
    }

    #[test]
    #[should_panic]
    #[ignore = "manual UI check: only prints the error/backtrace for human inspection"]
    fn executor_error_ui_test_1() {
        // For this test, ensure that we have only one backtrace from error when panic.
        func_return_error().unwrap();
    }

    #[test]
    #[ignore = "manual UI check: only prints the error/backtrace for human inspection"]
    fn executor_error_ui_test_2() {
        // For this test, ensure that we have only one backtrace from error when panic.
        func_return_error().map_err(|e| println!("{:?}", e)).ok();
    }
}

View on GitHub (pinned to 6469eb736d)