feat(frontend): migrate insert to region server (#2318)

* feat(frontend): migrate insert to region server

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>

* refactor: move converter to Inserter

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>

* chore: rename convert function

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>

* fix: address comments

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>

* fix: address comments

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>

* fix: add span id

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>

* fix: compilation

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>

* retrigger action

* retrigger action

---------

Signed-off-by: Zhenchi <zhongzc_arch@outlook.com>
This commit is contained in:
Zhenchi
2023-09-05 11:23:54 +08:00
committed by Ruihang Xia
parent 3eccb36047
commit 7dde9ce3ce
22 changed files with 837 additions and 609 deletions

View File

@@ -14,7 +14,7 @@
use std::sync::Arc;
use api::v1::region::region_request;
use api::v1::region::RegionRequest;
use crate::error::Result;
use crate::peer::Peer;
@@ -24,7 +24,7 @@ pub type AffectedRows = u64;
#[async_trait::async_trait]
pub trait Datanode: Send + Sync {
/// Handles DML, and DDL requests.
async fn handle(&self, request: region_request::Body) -> Result<AffectedRows>;
async fn handle(&self, request: RegionRequest) -> Result<AffectedRows>;
}
pub type DatanodeRef = Arc<dyn Datanode>;

View File

@@ -13,7 +13,9 @@
// limitations under the License.
use api::v1::region::region_request::Body as PbRegionRequest;
use api::v1::region::{ColumnDef, CreateRequest as PbCreateRegionRequest};
use api::v1::region::{
ColumnDef, CreateRequest as PbCreateRegionRequest, RegionRequest, RegionRequestHeader,
};
use api::v1::SemanticType;
use async_trait::async_trait;
use common_procedure::error::{FromJsonSnafu, Result as ProcedureResult, ToJsonSnafu};
@@ -197,6 +199,13 @@ impl CreateTableProcedure {
for request in requests {
let requester = manager.datanode(&datanode).await;
let request = RegionRequest {
header: Some(RegionRequestHeader {
trace_id: 0,
span_id: 0,
}),
body: Some(request),
};
if let Err(err) = requester.handle(request).await {
return Err(handle_operate_region_error(datanode)(err));
}

View File

@@ -12,7 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
use api::v1::region::{region_request, DropRequest as PbDropRegionRequest};
use api::v1::region::{
region_request, DropRequest as PbDropRegionRequest, RegionRequest, RegionRequestHeader,
};
use async_trait::async_trait;
use common_error::ext::ErrorExt;
use common_error::status_code::StatusCode;
@@ -162,13 +164,17 @@ impl DropTableProcedure {
for region_id in region_ids {
debug!("Dropping region {region_id} on Datanode {datanode:?}");
let request = region_request::Body::Drop(PbDropRegionRequest {
region_id: region_id.as_u64(),
});
let request = RegionRequest {
header: Some(RegionRequestHeader {
trace_id: 0,
span_id: 0,
}),
body: Some(region_request::Body::Drop(PbDropRegionRequest {
region_id: region_id.as_u64(),
})),
};
let requester = clients.datanode(&datanode).await;
if let Err(err) = requester.handle(request).await {
if let Err(err) = clients.datanode(&datanode).await.handle(request).await {
if err.status_code() != StatusCode::RegionNotFound {
return Err(handle_operate_region_error(datanode)(err));
}