risingwavelabs/risingwave · warning · MetaError
has been deprecated, please use instead.
Error message
{0} has been deprecated, please use {1} instead. What it means
MetaError::Deprecated(String, String) reports that a deprecated API/feature has been used, and names the replacement: `{0} has been deprecated, please use {1} instead.` The meta service uses this to reject or warn about legacy RPC endpoints/fields that have been replaced by newer ones, guiding clients to migrate.
Solutions
- Read the error message: it names the exact replacement API to use
- Migrate the caller to the suggested new API/field
- Upgrade the risingwave CLI/dashboard or client library to a version matching the cluster
- Check release notes for the deprecation notice
Example fix
// before client.deprecated_list_tables(req).await?; // after client.list_tables(req).await?; // renamed API per deprecation notice
Defensive patterns
Strategy: type-guard
Type guard
fn is_deprecation(e: &MetaError) -> Option<(&str, &str)> {
match e {
MetaError::Deprecated(old, new) => Some((old, new)),
_ => None,
}
} Try / catch
match result {
Err(MetaError::Deprecated(old, new)) => {
tracing::warn!("{old} is deprecated, migrating to {new}");
call_new_api(new)
}
r => r,
} Prevention
- Keep client tooling (CLI/dashboard/SDK) on versions matching the cluster
- Read release notes for deprecations before upgrading
- Automate checks for deprecated RPC usage in scripts
When it happens
Trigger: A client (CLI, dashboard, old SDK) calls a deprecated meta RPC or passes a deprecated request field that the meta node's handler layer checks and rejects.
Common situations: Operating an older risingwave CLI/dashboard against a newer cluster; automation scripts still invoking renamed/removed admin APIs; skipping upgrade notes when rolling forward the cluster.
Understand the failure class
Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.
Related errors
- adhoc recovery triggered
- Cannot alter the job
- Cannot alter the job
- `checkpoint_read_chunk_size` must be greater than 0
- `checkpoint_read_max_in_flight_chunks` must be greater than…
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/c500c22d6d4fb8eb.
Report an issue: GitHub.
Appendix: source
Thrown at src/meta/src/error.rs:138
#[backtrace]
SinkError,
),
#[error(transparent)]
Internal(
#[from]
#[backtrace]
anyhow::Error,
),
// Indicates that recovery was triggered manually.
#[error("adhoc recovery triggered")]
AdhocRecovery,
#[error("Integrity check failed")]
IntegrityCheckFailed,
#[error("{0} has been deprecated, please use {1} instead.")]
Deprecated(String, String),
#[error(transparent)]
NotImplemented(#[from] NotImplemented),
#[error("Secret error: {0}")]
SecretError(
#[from]
#[backtrace]
SecretError,
),
}
impl MetaError {
/// Provide the Postgres error code for the error.
fn provide_postgres_error_code(&self, request: &mut std::error::Request<'_>) {
match self.inner() {
MetaErrorInner::CatalogIdNotFound { .. } => {View on GitHub (pinned to 6469eb736d)