Skip to content

Commit f5a004c

Browse files
authored
Merge pull request #22 from kindredgroup/feat/allow-attaching-additional-metrics-on-completed-task
feat: allow attaching additional metrics on completed task
2 parents 2e0f2c1 + 4f40466 commit f5a004c

File tree

22 files changed

+136
-56
lines changed

22 files changed

+136
-56
lines changed

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scylla_models/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "scylla_models"
3-
version = "0.1.33"
3+
version = "0.1.34-dev1"
44
edition = "2021"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

scylla_models/src/lib.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub struct AddTaskModel {
1212
pub queue: String,
1313
}
1414

15-
#[derive(Debug)]
15+
#[derive(Debug, Default)]
1616
pub struct UpdateTaskModel {
1717
pub rn: String,
1818
pub operation: UpdateOperation,
@@ -21,6 +21,7 @@ pub struct UpdateTaskModel {
2121
pub worker: Option<String>,
2222
pub progress: Option<f32>,
2323
pub task_timeout_in_secs: Option<i64>,
24+
pub metrics: Option<Value>,
2425
}
2526

2627
#[derive(Debug)]
@@ -41,11 +42,12 @@ impl Default for GetTaskModel {
4142
}
4243
}
4344

44-
#[derive(Debug, Serialize, Deserialize, Clone, Eq, PartialEq)]
45+
#[derive(Debug, Serialize, Deserialize, Clone, Eq, PartialEq, Default)]
4546
#[serde(rename_all = "camelCase")]
4647
pub enum UpdateOperation {
4748
Yield,
4849
HeartBeat,
50+
#[default]
4951
Status,
5052
Lease,
5153
Reset,
@@ -129,6 +131,7 @@ pub struct Task {
129131
pub owner: Option<String>,
130132
pub errors: Vec<TaskError>,
131133
pub history: Vec<TaskHistory>,
134+
pub metrics: Option<Value>,
132135
}
133136
impl Default for Task {
134137
fn default() -> Self {
@@ -145,6 +148,7 @@ impl Default for Task {
145148
owner: None,
146149
errors: Vec::default(),
147150
history: Vec::default(),
151+
metrics: None,
148152
}
149153
}
150154
}
@@ -177,10 +181,11 @@ mod tests {
177181
status: None,
178182
worker: None,
179183
task_timeout_in_secs: None,
184+
metrics: None,
180185
};
181186
assert_eq!(
182187
format!("{:?}", utm),
183-
"UpdateTaskModel { rn: \"1.2.3\", operation: HeartBeat, status: None, error: None, worker: None, progress: None, task_timeout_in_secs: None }"
188+
"UpdateTaskModel { rn: \"1.2.3\", operation: HeartBeat, status: None, error: None, worker: None, progress: None, task_timeout_in_secs: None, metrics: None }"
184189
);
185190
}
186191
#[test]
@@ -268,7 +273,7 @@ mod tests {
268273
..Task::default()
269274
};
270275
// debug trait
271-
assert_eq!(format!("{:?}", t), format!("Task {{ rn: \"\", spec: Null, status: Ready, queue: \"\", progress: 0.0, priority: 0, created: {0:?}, updated: {0:?}, deadline: None, owner: None, errors: [], history: [] }}", t_now));
276+
assert_eq!(format!("{:?}", t), format!("Task {{ rn: \"\", spec: Null, status: Ready, queue: \"\", progress: 0.0, priority: 0, created: {0:?}, updated: {0:?}, deadline: None, owner: None, errors: [], history: [], metrics: None }}", t_now));
272277
// default()
273278
let t = Task {
274279
created: t_now,
@@ -290,6 +295,7 @@ mod tests {
290295
owner: None,
291296
errors: Vec::default(),
292297
history: Vec::default(),
298+
metrics: None,
293299
}
294300
)
295301
}

scylla_operations/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "scylla_operations"
3-
version = "0.1.33"
3+
version = "0.1.34-dev1"
44
edition = "2021"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

scylla_operations/src/task/tests.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ fn update_task_calls_get_and_update() {
3131
operation: UpdateOperation::Lease,
3232
status: Some(TaskStatus::Running),
3333
worker: Some("worker1".to_string()),
34-
error: None,
35-
progress: None,
36-
task_timeout_in_secs: None,
34+
..UpdateTaskModel::default()
3735
};
3836
let task_to_update = Task {
3937
rn: "unique_id".to_string(),
@@ -58,10 +56,7 @@ fn update_task_returns_scylla_op_error() {
5856
rn: "unique_id".to_string(),
5957
operation: UpdateOperation::Status,
6058
status: Some(TaskStatus::Completed),
61-
worker: None,
62-
error: None,
63-
progress: None,
64-
task_timeout_in_secs: None,
59+
..UpdateTaskModel::default()
6560
};
6661

6762
assert_eq!(

scylla_operations/src/update_task.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ pub fn validate_status_operation(task: &Task, update_task_model: &UpdateTaskMode
3434
fn prepare_status_task(mut task: Task, update_task_model: &UpdateTaskModel) -> Task {
3535
task.status = update_task_model.status.clone().unwrap();
3636
task.updated = Utc::now();
37+
if let Some(metrics) = &update_task_model.metrics {
38+
task.metrics = Some(metrics.clone());
39+
}
3740
if let Some(error) = update_task_model.error.clone() {
3841
if task.status == TaskStatus::Aborted {
3942
task.errors.push(error);

0 commit comments

Comments
 (0)