risingwavelabs/risingwave · error · BackupError

MetaStorage error: {0}

Error message

MetaStorage error: {0}

What it means

`BackupError::MetaStorage` wraps an underlying error from the meta storage backend encountered during backup or restore. Backup/restore reads and writes metadata snapshots in the meta store; failures there are boxed into this variant with the original error preserved as source and backtrace.

Source

Thrown at src/storage/backup/src/error.rs:28

// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

use risingwave_common::error::BoxedError;
use thiserror::Error;

pub type BackupResult<T> = Result<T, BackupError>;

#[derive(Error, Debug)]
pub enum BackupError {
    #[error("BackupStorage error: {0}")]
    BackupStorage(
        #[backtrace]
        #[source]
        BoxedError,
    ),
    #[error("MetaStorage error: {0}")]
    MetaStorage(
        #[backtrace]
        #[source]
        BoxedError,
    ),
    #[error("StateStorage error: {0}")]
    StateStorage(
        #[backtrace]
        #[source]
        BoxedError,
    ),
    #[error("Encoding error: {0}")]
    Encoding(
        #[backtrace]
        #[source]
        BoxedError,
    ),
    #[error("Decoding error: {0}")]

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Check the wrapped source error to identify which meta store operation failed.
  2. Verify the meta store service is running and reachable from the meta node.
  3. Retry the backup/restore after the meta store recovers; investigate persistence layer logs.
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify meta store connectivity before backup/restore
// e.g. etcd client health check
let healthy = etcd_client.status().await.is_ok();
debug_assert!(healthy, "meta store must be reachable before backup");

Try / catch

match restore_backup().await {
    Err(e @ BackupError::MetaStorage(_)) => {
        tracing::error!(source = ?e.source(), "meta store failure during restore");
        // alert and retry after meta store recovers
    }
    other => other?,
}

Prevention

When it happens

Trigger: During `meta_backup` snapshot creation or restore: a failed meta store read/write (e.g. get latest snapshot, list/version checks, writing snapshot data into the meta store).

Common situations: Meta store (e.g. etcd/memory backend) unavailable or unhealthy; restore run against a meta store with connectivity problems; transient DB errors during long backup jobs.

Related errors


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