mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-08-18 20:18:30 +00:00
fix(meta): release region guards after drop rollback (#8751)
Signed-off-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
@@ -456,7 +456,10 @@ impl Procedure for DropTableProcedure {
|
||||
&self.data.region_wal_options,
|
||||
)
|
||||
.await
|
||||
.map_err(ProcedureError::external)
|
||||
.map_err(ProcedureError::external)?;
|
||||
|
||||
self.dropping_regions.clear();
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2646,6 +2646,18 @@ async fn test_on_rollback() {
|
||||
procedure.on_delete_metadata().await.unwrap();
|
||||
assert!(procedure.rollback_supported());
|
||||
procedure.rollback(&ctx).await.unwrap();
|
||||
assert!(procedure.dropping_regions.is_empty());
|
||||
assert_eq!(ddl_context.memory_region_keeper.len(), 0);
|
||||
|
||||
// The physical table can be dropped again after the metadata rollback.
|
||||
let retry_task = new_drop_table_task("phy_table", physical_table_id, false);
|
||||
let mut retry = DropTableProcedure::new(retry_task, ddl_context.clone());
|
||||
retry.on_prepare().await.unwrap();
|
||||
retry.on_delete_metadata().await.unwrap();
|
||||
retry.rollback(&ctx).await.unwrap();
|
||||
assert!(retry.dropping_regions.is_empty());
|
||||
assert_eq!(ddl_context.memory_region_keeper.len(), 0);
|
||||
|
||||
// Rollback again
|
||||
assert!(procedure.rollback_supported());
|
||||
procedure.rollback(&ctx).await.unwrap();
|
||||
|
||||
Reference in New Issue
Block a user