fix: check version before alter region (#2433)

* fix: check version before alter region

* chore: apply suggestions from CR

* Update src/mito2/src/worker/handle_alter.rs

Co-authored-by: dennis zhuang <killme2008@gmail.com>

---------

Co-authored-by: dennis zhuang <killme2008@gmail.com>
This commit is contained in:
Weny Xu
2023-09-18 20:49:26 +09:00
committed by GitHub
parent 5566f34bd1
commit df6c79a378

View File

@@ -17,7 +17,7 @@
use std::sync::Arc;
use common_query::Output;
use common_telemetry::{error, info};
use common_telemetry::{error, info, warn};
use snafu::ResultExt;
use store_api::metadata::{RegionMetadata, RegionMetadataBuilder, RegionMetadataRef};
use store_api::region_request::RegionAlterRequest;
@@ -47,6 +47,15 @@ impl<S> RegionWorkerLoop<S> {
// Get the version before alter.
let version = region.version();
if version.metadata.schema_version > request.schema_version {
warn!(
"Ignored alert request, region id:{}, region schema version {} is greater than request schema version {}",
region_id, version.metadata.schema_version, request.schema_version
);
// Returns if it altered.
sender.send(Ok(Output::AffectedRows(0)));
return;
}
// Checks whether we can alter the region directly.
if !version.memtables.is_empty() {
// If memtable is not empty, we can't alter it directly and need to flush