risingwavelabs/risingwave · error · StorageError
Hummock error: {0}
Error message
Hummock error: {0} What it means
A StorageError variant wrapping a HummockError via #[from]. Hummock is RisingWave's state-store layer; any failure inside it (S3/GCS I/O, checksum mismatch, compaction, version errors) surfaces through this display wrapper when propagated to storage-level callers.
Source
Thrown at src/storage/src/error.rs:24
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// 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::util::value_encoding::error::ValueEncodingError;
use thiserror::Error;
use crate::hummock::HummockError;
use crate::mem_table::MemTableError;
#[derive(Error, thiserror_ext::ReportDebug, thiserror_ext::Box)]
#[thiserror_ext(newtype(name = StorageError, backtrace))]
pub enum ErrorKind {
#[error("Hummock error: {0}")]
Hummock(
#[backtrace]
#[from]
HummockError,
),
#[error("Deserialize row error: {0}")]
DeserializeRow(
#[from]
#[backtrace]
ValueEncodingError,
),
#[error("Serialize/deserialize error: {0}")]
SerdeError(
#[from]
#[backtrace]
memcomparable::Error,View on GitHub (pinned to 6469eb736d)
Solutions
- Inspect the inner HummockError source (ReportDebug/backtrace) for the root cause
- Fix the underlying cause: restore cloud credentials, retry transient network failures, or re-ingest corrupted data
- If it stems from a stale hummock version, retry the operation after the version sync advances
Defensive patterns
Strategy: retry
Try / catch
match op().await {
Err(e) if matches!(e.kind(), StorageErrorKind::Hummock(_)) => {
// inspect inner HummockError; retry only if transient (network/throttle)
if is_transient(&e) { retry_with_backoff(op) } else { propagate(e) }
}
other => other,
} Prevention
- Monitor object-store connectivity and credentials proactively
- Set up retries with backoff for transient hummock/object-store failures
- Keep hummock versions in sync across nodes to avoid stale-version errors
When it happens
Trigger: Any storage operation that internally returns a HummockResult::Err — e.g. get/put to object store failures, hummock version not found, checksum mismatches during read, compaction executor errors (see error 1969) — converted automatically into StorageError by the ? operator.
Common situations: Object store outages or expired cloud credentials, network partitions to S3, corrupt SST files, concurrent version bumps causing stale-version reads.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- SST {0} is invalid
- MemTable error: {0}
- Unsupported task type for copy-on-write iceberg compaction:
- Magic number mismatch: expected {expected}, found: {found}
- Storage error: {0}
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/8636083000dcb885.
Report an issue: GitHub.