Skip to content

Commit 804fcd6

Browse files
committed
chore: codefmt
1 parent c6c7373 commit 804fcd6

File tree

3 files changed

+51
-103
lines changed

3 files changed

+51
-103
lines changed

src/meta/app/src/principal/task.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ impl TaskDependentKey {
197197
}
198198
}
199199

200-
#[derive(Debug, Clone, PartialEq)]
200+
#[derive(Debug, Clone, PartialEq, Default)]
201201
pub struct TaskDependentValue(pub BTreeSet<String>);
202202

203203
mod kvapi_key_impl {

src/query/management/src/task/errors.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
use databend_common_exception::ErrorCode;
16+
use databend_common_meta_types::InvalidArgument;
1617
use databend_common_meta_types::MetaError;
1718
use databend_common_proto_conv::Incompatible;
1819

@@ -89,6 +90,9 @@ pub enum TaskApiError {
8990

9091
#[error("There are simultaneous update to task: {task_name} afters: {after}")]
9192
SimultaneousUpdateTaskAfter { task_name: String, after: String },
93+
94+
#[error("InvalidArgument error: {inner}")]
95+
InvalidArgument { inner: InvalidArgument },
9296
}
9397

9498
impl From<MetaError> for TaskApiError {
@@ -100,6 +104,12 @@ impl From<MetaError> for TaskApiError {
100104
}
101105
}
102106

107+
impl From<InvalidArgument> for TaskApiError {
108+
fn from(err: InvalidArgument) -> Self {
109+
TaskApiError::InvalidArgument { inner: err }
110+
}
111+
}
112+
103113
impl From<Incompatible> for TaskApiError {
104114
fn from(value: Incompatible) -> Self {
105115
TaskApiError::Incompatible { inner: value }
@@ -117,6 +127,7 @@ impl From<TaskApiError> for ErrorCode {
117127
TaskApiError::SimultaneousUpdateTaskAfter { .. } => {
118128
ErrorCode::from_string(value.to_string())
119129
}
130+
TaskApiError::InvalidArgument { inner } => ErrorCode::from_std_error(inner),
120131
}
121132
}
122133
}

src/query/management/src/task/task_mgr.rs

Lines changed: 39 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
use std::collections::BTreeSet;
1615
use std::str::FromStr;
1716
use std::sync::Arc;
1817

@@ -23,6 +22,7 @@ use databend_common_ast::ast::AlterTaskOptions;
2322
use databend_common_ast::ast::ScheduleOptions;
2423
use databend_common_meta_api::kv_pb_api::KVPbApi;
2524
use databend_common_meta_api::kv_pb_api::UpsertPB;
25+
use databend_common_meta_api::util::txn_put_pb;
2626
use databend_common_meta_api::SchemaApi;
2727
use databend_common_meta_app::principal::task;
2828
use databend_common_meta_app::principal::task::TaskMessage;
@@ -35,7 +35,6 @@ use databend_common_meta_app::principal::ScheduleType;
3535
use databend_common_meta_app::principal::Status;
3636
use databend_common_meta_app::principal::Task;
3737
use databend_common_meta_app::principal::TaskDependentKey;
38-
use databend_common_meta_app::principal::TaskDependentValue;
3938
use databend_common_meta_app::principal::TaskIdent;
4039
use databend_common_meta_app::schema::CreateOption;
4140
use databend_common_meta_app::tenant::Tenant;
@@ -51,6 +50,7 @@ use databend_common_meta_types::With;
5150
use databend_common_proto_conv::FromToProto;
5251
use futures::TryStreamExt;
5352
use prost::Message;
53+
use seq_marked::SeqValue;
5454

5555
use crate::task::errors::TaskApiError;
5656
use crate::task::errors::TaskError;
@@ -275,55 +275,25 @@ impl TaskMgr {
275275
TaskDependentIdent::new_generic(&self.tenant, after_dependent.clone());
276276
let after_key = after_dependent_ident.to_string_key();
277277

278-
let seq = match self.kv_api.get_pb(&after_dependent_ident).await? {
279-
None => {
280-
update_ops.push(TxnOp::put(
281-
after_key.clone(),
282-
TaskDependentValue(BTreeSet::from_iter(new_afters.iter().cloned()))
283-
.to_pb()?
284-
.encode_to_vec(),
285-
));
286-
0
287-
}
288-
Some(mut old_dependent) => {
289-
old_dependent.0.extend(new_afters.iter().cloned());
290-
291-
update_ops.push(TxnOp::put(
292-
after_key.clone(),
293-
old_dependent.to_pb()?.encode_to_vec(),
294-
));
295-
old_dependent.seq
296-
}
297-
};
298-
check_ops.push(TxnCondition::eq_seq(after_key, seq));
278+
let after_seq_deps = self.kv_api.get_pb(&after_dependent_ident).await?;
279+
check_ops.push(TxnCondition::eq_seq(after_key, after_seq_deps.seq()));
280+
281+
let mut after_deps = after_seq_deps.unwrap_or_default();
282+
after_deps.0.extend(new_afters.iter().cloned());
283+
update_ops.push(txn_put_pb(&after_dependent_ident, &after_deps)?);
299284

300285
for after in new_afters {
301286
let before_dependent = TaskDependentKey::new(DependentType::Before, after.clone());
302287
let before_dependent_ident =
303288
TaskDependentIdent::new_generic(&self.tenant, before_dependent);
304289
let before_key = before_dependent_ident.to_string_key();
305290

306-
let seq = match self.kv_api.get_pb(&before_dependent_ident).await? {
307-
None => {
308-
update_ops.push(TxnOp::put(
309-
before_key.clone(),
310-
TaskDependentValue(BTreeSet::from_iter([task_name.to_string()]))
311-
.to_pb()?
312-
.encode_to_vec(),
313-
));
314-
0
315-
}
316-
Some(mut old_dependent) => {
317-
old_dependent.0.insert(task_name.to_string());
291+
let before_seq_deps = self.kv_api.get_pb(&before_dependent_ident).await?;
292+
check_ops.push(TxnCondition::eq_seq(before_key, before_seq_deps.seq()));
318293

319-
update_ops.push(TxnOp::put(
320-
before_key.clone(),
321-
old_dependent.to_pb()?.encode_to_vec(),
322-
));
323-
old_dependent.seq
324-
}
325-
};
326-
check_ops.push(TxnCondition::eq_seq(before_key, seq));
294+
let mut deps = before_seq_deps.unwrap_or_default();
295+
deps.0.insert(task_name.to_string());
296+
update_ops.push(txn_put_pb(&before_dependent_ident, &deps)?);
327297
}
328298
let request = TxnRequest::new(check_ops, update_ops);
329299
let reply = self.kv_api.transaction(request).await?;
@@ -353,41 +323,29 @@ impl TaskMgr {
353323
TaskDependentIdent::new_generic(&self.tenant, after_dependent.clone());
354324
let after_key = after_dependent_ident.to_string_key();
355325

356-
let seq = match self.kv_api.get_pb(&after_dependent_ident).await? {
357-
None => 0,
358-
Some(mut old_dependent) => {
359-
for remove_after in remove_afters {
360-
old_dependent.0.remove(remove_after);
361-
}
362-
update_ops.push(TxnOp::put(
363-
after_key.clone(),
364-
old_dependent.to_pb()?.encode_to_vec(),
365-
));
326+
let after_seq_deps = self.kv_api.get_pb(&after_dependent_ident).await?;
327+
check_ops.push(TxnCondition::eq_seq(after_key, after_seq_deps.seq()));
366328

367-
old_dependent.seq
329+
if let Some(mut deps) = after_seq_deps {
330+
for remove_after in remove_afters {
331+
deps.0.remove(remove_after);
368332
}
369-
};
370-
check_ops.push(TxnCondition::eq_seq(after_key, seq));
333+
update_ops.push(txn_put_pb(&after_dependent_ident, &deps)?);
334+
}
371335

372336
for after in remove_afters {
373337
let before_dependent = TaskDependentKey::new(DependentType::Before, after.clone());
374338
let before_dependent_ident =
375339
TaskDependentIdent::new_generic(&self.tenant, before_dependent);
376340
let before_key = before_dependent_ident.to_string_key();
377341

378-
let seq = match self.kv_api.get_pb(&before_dependent_ident).await? {
379-
None => 0,
380-
Some(mut old_dependent) => {
381-
old_dependent.0.remove(task_name);
342+
let before_seq_deps = self.kv_api.get_pb(&before_dependent_ident).await?;
343+
check_ops.push(TxnCondition::eq_seq(before_key, before_seq_deps.seq()));
382344

383-
update_ops.push(TxnOp::put(
384-
before_key.clone(),
385-
old_dependent.to_pb()?.encode_to_vec(),
386-
));
387-
old_dependent.seq
388-
}
389-
};
390-
check_ops.push(TxnCondition::eq_seq(before_key, seq));
345+
if let Some(mut deps) = before_seq_deps {
346+
deps.0.remove(task_name);
347+
update_ops.push(txn_put_pb(&before_dependent_ident, &deps)?);
348+
}
391349
}
392350
let request = TxnRequest::new(check_ops, update_ops);
393351
let reply = self.kv_api.transaction(request).await?;
@@ -452,12 +410,10 @@ impl TaskMgr {
452410
TaskDependentKey::new(DependentType::Before, task_name.to_string()),
453411
);
454412
let task_state_key = TaskStateIdent::new(&self.tenant, task_name);
455-
let succeeded_value = TaskState { is_succeeded: true }.to_pb()?.encode_to_vec();
413+
let succeeded_value = TaskState { is_succeeded: true };
456414
let not_succeeded_value = TaskState {
457415
is_succeeded: false,
458-
}
459-
.to_pb()?
460-
.encode_to_vec();
416+
};
461417

462418
let Some(task_before_dependent) = self.kv_api.get_pb(&task_before_ident).await? else {
463419
return Ok(Ok(Vec::new()));
@@ -482,18 +438,13 @@ impl TaskMgr {
482438
if target_after_task != task_name {
483439
conditions.push(TxnCondition::eq_value(
484440
task_ident.to_string_key(),
485-
succeeded_value.clone(),
441+
succeeded_value.to_pb()?.encode_to_vec(),
486442
));
487443
}
488-
if_ops.push(TxnOp::put(
489-
task_ident.to_string_key(),
490-
not_succeeded_value.clone(),
491-
));
444+
if_ops.push(txn_put_pb(&task_ident, &not_succeeded_value)?);
492445
}
493-
let request = TxnRequest::new(conditions, if_ops).with_else(vec![TxnOp::put(
494-
task_state_key.to_string_key(),
495-
succeeded_value.clone(),
496-
)]);
446+
let request = TxnRequest::new(conditions, if_ops)
447+
.with_else(vec![txn_put_pb(&task_state_key, &succeeded_value)?]);
497448
let reply = self.kv_api.transaction(request).await?;
498449

499450
if reply.success {
@@ -595,27 +546,13 @@ impl TaskMgr {
595546
TaskDependentIdent::new_generic(&self.tenant, target_key.clone());
596547
let target_key = target_ident.to_string_key();
597548

598-
let seq = match self.kv_api.get_pb(&target_ident).await? {
599-
None => {
600-
update_ops.push(TxnOp::put(
601-
target_key.clone(),
602-
TaskDependentValue(BTreeSet::from_iter([task_name.to_string()]))
603-
.to_pb()?
604-
.encode_to_vec(),
605-
));
606-
0
607-
}
608-
Some(mut old_dependent) => {
609-
old_dependent.0.remove(task_name);
610-
611-
update_ops.push(TxnOp::put(
612-
target_key.clone(),
613-
old_dependent.to_pb()?.encode_to_vec(),
614-
));
615-
old_dependent.seq
616-
}
617-
};
618-
check_ops.push(TxnCondition::eq_seq(target_key, seq));
549+
let seq_dep = self.kv_api.get_pb(&target_ident).await?;
550+
check_ops.push(TxnCondition::eq_seq(target_key, seq_dep.seq()));
551+
552+
if let Some(mut deps) = seq_dep {
553+
deps.0.remove(task_name);
554+
update_ops.push(txn_put_pb(&target_ident, &deps)?);
555+
}
619556
}
620557
}
621558
Ok(())

0 commit comments

Comments
 (0)