diff --git a/components/spider-core/src/types/id.rs b/components/spider-core/src/types/id.rs index 21821e7e5..4735f798c 100644 --- a/components/spider-core/src/types/id.rs +++ b/components/spider-core/src/types/id.rs @@ -4,6 +4,8 @@ use serde::{Deserialize, Serialize}; use sqlx::{Database, encode::IsNull}; use uuid::Uuid; +use crate::task::TaskIndex; + /// A generic identifier type that wraps a UUID and a type marker. /// /// # Type Parameters: @@ -96,9 +98,18 @@ pub type UuidBytes = uuid::Bytes; pub enum ResourceGroupIdMarker {} pub type ResourceGroupId = Id; -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub enum TaskIdMarker {} -pub type TaskId = Id; +/// Identifier of a task inside a job. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] +pub enum TaskId { + /// The index of the task in the job's task graph. + Index(TaskIndex), + + /// The commit task. + Commit, + + /// The cleanup task. + Cleanup, +} #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum JobIdMarker {} @@ -169,33 +180,3 @@ where } pub type SignedJobId = SignedId; - -pub type SignedTaskId = SignedId; - -#[cfg(test)] -mod tests { - use std::any::TypeId; - - use super::*; - - #[test] - fn test_id_basic() { - let id = TaskId::new(); - let underlying_uuid = id.as_uuid_ref().to_owned(); - assert_eq!(id, TaskId::from(underlying_uuid)); - - assert_ne!(TypeId::of::(), TypeId::of::()); - } - - #[test] - fn task_id_json_roundtrip() { - let id = TaskId::new(); - let deserialized_id: TaskId = serde_json::from_str( - serde_json::to_string(&id) - .expect("JSON serialization failure") - .as_str(), - ) - .expect("JSON deserialization failure"); - assert_eq!(id, deserialized_id); - } -} diff --git a/components/spider-storage/src/cache.rs b/components/spider-storage/src/cache.rs index d520f519e..89a5e13d6 100644 --- a/components/spider-storage/src/cache.rs +++ b/components/spider-storage/src/cache.rs @@ -1,21 +1,6 @@ -use spider_core::task::TaskIndex; - pub mod error; pub mod io; pub mod job; pub mod job_submission; mod sync; pub mod task; - -/// Identifier of a task inside a job. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub enum TaskId { - /// The index of the task in the job's task graph. - Index(TaskIndex), - - /// The commit task. - Commit, - - /// The cleanup task. - Cleanup, -} diff --git a/components/spider-storage/src/cache/job.rs b/components/spider-storage/src/cache/job.rs index 5c575e8ee..c5a06ccba 100644 --- a/components/spider-storage/src/cache/job.rs +++ b/components/spider-storage/src/cache/job.rs @@ -10,7 +10,7 @@ use spider_core::{ job::JobState, task::{TaskIndex, TaskState}, types::{ - id::{ExecutionManagerId, JobId, ResourceGroupId, TaskInstanceId}, + id::{ExecutionManagerId, JobId, ResourceGroupId, TaskId, TaskInstanceId}, io::{ExecutionContext, TaskOutput}, }, }; @@ -18,7 +18,6 @@ use tokio::sync::{RwLockReadGuard, RwLockWriteGuard}; use crate::{ cache::{ - TaskId, error::{CacheError, InternalError, InternalError::UnexpectedJobState, StaleStateError}, job_submission::ValidatedJobSubmission, task::TaskGraph, diff --git a/components/spider-storage/src/task_instance_pool.rs b/components/spider-storage/src/task_instance_pool.rs index ace45ce60..bba0cf773 100644 --- a/components/spider-storage/src/task_instance_pool.rs +++ b/components/spider-storage/src/task_instance_pool.rs @@ -23,12 +23,11 @@ use std::{ }; use async_trait::async_trait; -use spider_core::types::id::{ExecutionManagerId, JobId, ResourceGroupId, TaskInstanceId}; +use spider_core::types::id::{ExecutionManagerId, JobId, ResourceGroupId, TaskId, TaskInstanceId}; use tokio::sync::mpsc; use crate::{ cache::{ - TaskId, error::InternalError, task::{SharedTaskControlBlock, SharedTerminationTaskControlBlock}, }, diff --git a/components/spider-storage/tests/scheduling_infra.rs b/components/spider-storage/tests/scheduling_infra.rs index d3e5eb981..046a35eb9 100644 --- a/components/spider-storage/tests/scheduling_infra.rs +++ b/components/spider-storage/tests/scheduling_infra.rs @@ -87,13 +87,12 @@ use spider_core::{ job::JobState, task::TaskIndex, types::{ - id::{ExecutionManagerId, JobId, ResourceGroupId, TaskInstanceId}, + id::{ExecutionManagerId, JobId, ResourceGroupId, TaskId, TaskInstanceId}, io::{ExecutionContext, TaskOutput}, }, }; use spider_storage::{ cache::{ - TaskId, error::{CacheError, InternalError}, job::SharedJobControlBlock, job_submission::ValidatedJobSubmission, diff --git a/components/spider-tdl/src/task.rs b/components/spider-tdl/src/task.rs index 99ca904d4..d4015e0c6 100644 --- a/components/spider-tdl/src/task.rs +++ b/components/spider-tdl/src/task.rs @@ -254,7 +254,7 @@ mod tests { fn make_encoded_ctx() -> Vec { let ctx = TaskContext { job_id: JobId::new(), - task_id: TaskId::new(), + task_id: TaskId::Index(0), task_instance_id: 1, resource_group_id: ResourceGroupId::new(), }; diff --git a/components/spider-tdl/src/task_context.rs b/components/spider-tdl/src/task_context.rs index 603483153..d412bdb46 100644 --- a/components/spider-tdl/src/task_context.rs +++ b/components/spider-tdl/src/task_context.rs @@ -31,7 +31,7 @@ mod tests { fn round_trip_msgpack() -> anyhow::Result<()> { let ctx = TaskContext { job_id: JobId::new(), - task_id: TaskId::new(), + task_id: TaskId::Index(0), task_instance_id: 13, resource_group_id: ResourceGroupId::new(), }; diff --git a/components/spider-tdl/tests/test_task_macro.rs b/components/spider-tdl/tests/test_task_macro.rs index e2a070feb..9a891f190 100644 --- a/components/spider-tdl/tests/test_task_macro.rs +++ b/components/spider-tdl/tests/test_task_macro.rs @@ -81,7 +81,7 @@ fn translate(_ctx: TaskContext, p: Point, dx: int32, dy: int32) -> Result<(Point fn make_encoded_ctx() -> Vec { let ctx = TaskContext { job_id: JobId::new(), - task_id: TaskId::new(), + task_id: TaskId::Index(0), task_instance_id: 1, resource_group_id: ResourceGroupId::new(), }; @@ -303,7 +303,7 @@ fn direct_execute_call_round_trips() -> anyhow::Result<()> { let ctx = TaskContext { job_id: JobId::new(), - task_id: TaskId::new(), + task_id: TaskId::Index(0), task_instance_id: 1, resource_group_id: ResourceGroupId::new(), }; diff --git a/tests/huntsman/task-executor/tests/test_process_pool.rs b/tests/huntsman/task-executor/tests/test_process_pool.rs index 7983285b3..e646352f8 100644 --- a/tests/huntsman/task-executor/tests/test_process_pool.rs +++ b/tests/huntsman/task-executor/tests/test_process_pool.rs @@ -78,7 +78,7 @@ fn build_pool() -> ProcessPool { fn make_request(task_func: &str, inputs: Vec) -> ExecuteRequest { ExecuteRequest { job_id: JobId::new(), - task_id: TaskId::new(), + task_id: TaskId::Index(0), resource_group_id: ResourceGroupId::new(), ctx: ExecutionContext { task_instance_id: 1, diff --git a/tests/huntsman/tdl-integration/tests/complex.rs b/tests/huntsman/tdl-integration/tests/complex.rs index 513e7d75e..0e2bc7d51 100644 --- a/tests/huntsman/tdl-integration/tests/complex.rs +++ b/tests/huntsman/tdl-integration/tests/complex.rs @@ -33,7 +33,7 @@ fn lib_path() -> std::path::PathBuf { fn encode_ctx() -> Vec { let ctx = TaskContext { job_id: JobId::new(), - task_id: TaskId::new(), + task_id: TaskId::Index(0), task_instance_id: 1, resource_group_id: ResourceGroupId::new(), }; diff --git a/tests/huntsman/test-utils/src/executor.rs b/tests/huntsman/test-utils/src/executor.rs index 43ae646fb..24f8db5f3 100644 --- a/tests/huntsman/test-utils/src/executor.rs +++ b/tests/huntsman/test-utils/src/executor.rs @@ -192,7 +192,7 @@ pub fn tdl_package_dir() -> PathBuf { pub fn build_ctx() -> Vec { let ctx = TaskContext { job_id: JobId::new(), - task_id: TaskId::new(), + task_id: TaskId::Index(0), task_instance_id: 1, resource_group_id: ResourceGroupId::new(), };