mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2025-12-26 16:10:02 +00:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user