From 32a176af54f59d46d46eef3d8726a92139a4ba22 Mon Sep 17 00:00:00 2001 From: Denis Smirnov <sd@picodata.io> Date: Tue, 15 Aug 2023 10:54:00 +0700 Subject: [PATCH] fix: make ddl wait to be committed in pico.sql Before current commit, sql waited for ddl operations to be prepared in the cluster, but not committed or aborted. As a result, when the user queries the space right after the previous ddl successfully returned "ok", it was possible to retrieve "no space found" error. --- src/sql.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sql.rs b/src/sql.rs index 65c2a8d75b..39d639026c 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -1,6 +1,6 @@ //! Clusterwide SQL query execution. -use crate::schema::{CreateSpaceParams, DistributionParam, Field, ShardingFn}; +use crate::schema::{wait_for_ddl_commit, CreateSpaceParams, DistributionParam, Field, ShardingFn}; use crate::sql::router::RouterRuntime; use crate::sql::storage::StorageRuntime; use crate::traft::error::Error; @@ -188,6 +188,7 @@ fn reenterable_ddl_request( ); node.wait_index(index, deadline.duration_since(Instant::now()))?; + wait_for_ddl_commit(index, deadline.duration_since(Instant::now()))?; if term != raft::Storage::term(&node.raft_storage, index)? { // Leader has changed and the entry got rolled back, retry. -- GitLab