Skip to content

Commit e4286dd

Browse files
authored
Merge pull request #628 from obeli-sk/advance-flags
refactor(db)!: Rename execution error to execution failure
2 parents 9692ff7 + e7ef62d commit e4286dd

27 files changed

Lines changed: 154 additions & 110 deletions

assets/schemas/db.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -511,12 +511,12 @@
511511
{
512512
"type": "object",
513513
"properties": {
514-
"execution_error": {
515-
"$ref": "#/$defs/FinishedExecutionError"
514+
"execution_failure": {
515+
"$ref": "#/$defs/FinishedExecutionFailure"
516516
}
517517
},
518518
"required": [
519-
"execution_error"
519+
"execution_failure"
520520
],
521521
"additionalProperties": false
522522
}
@@ -892,7 +892,7 @@
892892
}
893893
]
894894
},
895-
"FinishedExecutionError": {
895+
"FinishedExecutionFailure": {
896896
"type": "object",
897897
"properties": {
898898
"kind": {

assets/schemas/openapi.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2541,14 +2541,14 @@
25412541
},
25422542
{
25432543
"type": "object",
2544-
"description": "Execution failed with an error",
2544+
"description": "Execution failed",
25452545
"required": [
2546-
"execution_error"
2546+
"execution_failure"
25472547
],
25482548
"properties": {
2549-
"execution_error": {
2549+
"execution_failure": {
25502550
"type": "object",
2551-
"description": "Execution failed with an error"
2551+
"description": "Execution failed"
25522552
}
25532553
}
25542554
}

crates/concepts/src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,14 @@ pub const SUFFIX_PKG_STUB: &str = "-obelisk-stub";
4848
thiserror::Error, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema,
4949
)]
5050
#[error("{kind}")]
51-
pub struct FinishedExecutionError {
51+
pub struct FinishedExecutionFailure {
5252
pub kind: ExecutionFailureKind,
5353
#[serde(skip_serializing_if = "Option::is_none")]
5454
pub reason: Option<String>,
5555
#[serde(skip_serializing_if = "Option::is_none")]
5656
pub detail: Option<String>,
5757
}
58-
impl FinishedExecutionError {
58+
impl FinishedExecutionFailure {
5959
#[must_use]
6060
pub fn as_pending_state_finished_error(&self) -> PendingStateFinishedError {
6161
PendingStateFinishedError::ExecutionFailure(self.kind)
@@ -663,7 +663,7 @@ impl From<TypeWrapperTopLevel> for TypeWrapper {
663663
pub enum SupportedFunctionReturnValue {
664664
Ok(Option<WastValWithType>),
665665
Err(Option<WastValWithType>),
666-
ExecutionError(FinishedExecutionError),
666+
ExecutionFailure(FinishedExecutionFailure),
667667
}
668668
impl Display for SupportedFunctionReturnValue {
669669
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
@@ -845,7 +845,7 @@ impl SupportedFunctionReturnValue {
845845
SupportedFunctionReturnValue::Ok(Some(v)) => Ok(Some(Box::new(v.value))),
846846
SupportedFunctionReturnValue::Err(None) => Err(None),
847847
SupportedFunctionReturnValue::Err(Some(v)) => Err(Some(Box::new(v.value))),
848-
SupportedFunctionReturnValue::ExecutionError(_) => {
848+
SupportedFunctionReturnValue::ExecutionFailure(_) => {
849849
Err(Self::execution_error_to_wast_val_err(&get_return_type()))
850850
}
851851
}
@@ -886,7 +886,7 @@ impl SupportedFunctionReturnValue {
886886
SupportedFunctionReturnValue::Err(_) => {
887887
PendingStateFinishedResultKind::Err(PendingStateFinishedError::Error)
888888
}
889-
SupportedFunctionReturnValue::ExecutionError(err) => {
889+
SupportedFunctionReturnValue::ExecutionFailure(err) => {
890890
PendingStateFinishedResultKind::Err(err.as_pending_state_finished_error())
891891
}
892892
}

crates/concepts/src/storage.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::ComponentType;
44
use crate::ExecutionFailureKind;
55
use crate::ExecutionId;
66
use crate::ExecutionMetadata;
7-
use crate::FinishedExecutionError;
7+
use crate::FinishedExecutionFailure;
88
use crate::FunctionExtension;
99
use crate::FunctionFqn;
1010
use crate::FunctionMetadata;
@@ -1169,7 +1169,7 @@ pub trait DbExecutor: Send + Sync {
11691169
.map_err(DbErrorWrite::from)?;
11701170
if let ExecutionRequest::Finished {
11711171
retval:
1172-
SupportedFunctionReturnValue::ExecutionError(FinishedExecutionError {
1172+
SupportedFunctionReturnValue::ExecutionFailure(FinishedExecutionFailure {
11731173
kind: ExecutionFailureKind::Cancelled,
11741174
..
11751175
}),
@@ -1182,11 +1182,12 @@ pub trait DbExecutor: Send + Sync {
11821182
return Ok(CancelOutcome::AlreadyFinished);
11831183
}
11841184
let finished_version = last_event.version.increment();
1185-
let child_result = SupportedFunctionReturnValue::ExecutionError(FinishedExecutionError {
1186-
reason: None,
1187-
kind: ExecutionFailureKind::Cancelled,
1188-
detail: None,
1189-
});
1185+
let child_result =
1186+
SupportedFunctionReturnValue::ExecutionFailure(FinishedExecutionFailure {
1187+
reason: None,
1188+
kind: ExecutionFailureKind::Cancelled,
1189+
detail: None,
1190+
});
11901191
let cancel_request = AppendRequest {
11911192
created_at: cancelled_at,
11921193
event: ExecutionRequest::Finished {

crates/executor/src/executor.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use concepts::{
1616
use concepts::{ExecutionFailureKind, JoinSetId};
1717
use concepts::{ExecutionId, FunctionFqn, prefixed_ulid::ExecutorId};
1818
use concepts::{
19-
FinishedExecutionError,
19+
FinishedExecutionFailure,
2020
storage::{ExecutionRequest, Version},
2121
};
2222
use std::{
@@ -649,8 +649,8 @@ impl ExecTask {
649649
)
650650
} else {
651651
info!("Execution timed out");
652-
let result = SupportedFunctionReturnValue::ExecutionError(
653-
FinishedExecutionError {
652+
let result = SupportedFunctionReturnValue::ExecutionFailure(
653+
FinishedExecutionFailure {
654654
kind: ExecutionFailureKind::TimedOut,
655655
reason: None,
656656
detail: None,
@@ -703,8 +703,8 @@ impl ExecTask {
703703
info!(
704704
"Activity with `{trap_kind}` marked as permanent failure - {reason_generic}"
705705
);
706-
let result = SupportedFunctionReturnValue::ExecutionError(
707-
FinishedExecutionError {
706+
let result = SupportedFunctionReturnValue::ExecutionFailure(
707+
FinishedExecutionFailure {
708708
reason: Some(reason_generic),
709709
kind: ExecutionFailureKind::Uncategorized,
710710
detail,
@@ -754,8 +754,8 @@ impl ExecTask {
754754
}
755755
WorkerError::FatalError(fatal_error, version) => {
756756
warn!("Fatal worker error - {fatal_error:?}");
757-
let result = SupportedFunctionReturnValue::ExecutionError(
758-
FinishedExecutionError::from(fatal_error),
757+
let result = SupportedFunctionReturnValue::ExecutionFailure(
758+
FinishedExecutionFailure::from(fatal_error),
759759
);
760760
let child_finished =
761761
parent.map(|(parent_execution_id, parent_join_set)| {
@@ -1404,7 +1404,7 @@ mod tests {
14041404
&execution_log.events.get(2).unwrap(),
14051405
ExecutionEvent {
14061406
event: ExecutionRequest::Finished{
1407-
retval: SupportedFunctionReturnValue::ExecutionError(FinishedExecutionError{reason, kind, detail}),
1407+
retval: SupportedFunctionReturnValue::ExecutionFailure(FinishedExecutionFailure{reason, kind, detail}),
14081408
http_client_traces: None
14091409
},
14101410
created_at: at,
@@ -1434,7 +1434,7 @@ mod tests {
14341434
version: Version::new(2),
14351435
http_client_traces: None,
14361436
};
1437-
let expected_child_err = FinishedExecutionError {
1437+
let expected_child_err = FinishedExecutionFailure {
14381438
kind: ExecutionFailureKind::Uncategorized,
14391439
reason: Some("activity trap: error reason".to_string()),
14401440
detail: Some("detail".to_string()),
@@ -1453,7 +1453,7 @@ mod tests {
14531453
#[values(LockingStrategy::ByFfqns, LockingStrategy::ByComponentDigest)]
14541454
locking_strategy: LockingStrategy,
14551455
) {
1456-
let expected_child_err = FinishedExecutionError {
1456+
let expected_child_err = FinishedExecutionFailure {
14571457
kind: ExecutionFailureKind::TimedOut,
14581458
reason: None,
14591459
detail: None,
@@ -1468,7 +1468,7 @@ mod tests {
14681468

14691469
async fn child_execution_permanently_failed_should_notify_parent(
14701470
worker_result: WorkerResult,
1471-
expected_child_err: FinishedExecutionError,
1471+
expected_child_err: FinishedExecutionFailure,
14721472
locking_strategy: LockingStrategy,
14731473
) {
14741474
use concepts::storage::JoinSetResponseEventOuter;
@@ -1636,7 +1636,7 @@ mod tests {
16361636
);
16371637
assert_eq!(
16381638
ExecutionRequest::Finished {
1639-
retval: SupportedFunctionReturnValue::ExecutionError(expected_child_err),
1639+
retval: SupportedFunctionReturnValue::ExecutionFailure(expected_child_err),
16401640
http_client_traces: None
16411641
},
16421642
child_log.last_event().event
@@ -1677,7 +1677,7 @@ mod tests {
16771677
assert_eq!(child_log.next_version, *child_finished_version);
16781678
assert_matches!(
16791679
found_result,
1680-
SupportedFunctionReturnValue::ExecutionError(_)
1680+
SupportedFunctionReturnValue::ExecutionFailure(_)
16811681
);
16821682

16831683
db_close.close().await;

crates/executor/src/expired_timers_watcher.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use concepts::storage::ExecutionLog;
1414
use concepts::storage::ExpiredDelay;
1515
use concepts::time::ClockFn;
1616
use concepts::{
17-
FinishedExecutionError,
17+
FinishedExecutionFailure,
1818
storage::{ExecutionRequest, ExpiredTimer},
1919
};
2020
use std::{sync::Arc, time::Duration};
@@ -145,7 +145,7 @@ pub(crate) async fn tick(
145145
created_at = %executed_at,
146146
"Marking execution with expired lock as permanently timed out - {expired:?}");
147147
let finished_exec_result =
148-
SupportedFunctionReturnValue::ExecutionError(FinishedExecutionError {
148+
SupportedFunctionReturnValue::ExecutionFailure(FinishedExecutionFailure {
149149
kind: ExecutionFailureKind::TimedOut,
150150
reason: None,
151151
detail: None,

crates/executor/src/worker.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use concepts::storage::Locked;
1010
use concepts::storage::ResponseWithCursor;
1111
use concepts::storage::Version;
1212
use concepts::storage::http_client_trace::HttpClientTrace;
13-
use concepts::{FinishedExecutionError, StrVariant};
13+
use concepts::{FinishedExecutionFailure, StrVariant};
1414
use concepts::{FunctionFqn, ParamsParsingError, ResultParsingError};
1515
use concepts::{Params, SupportedFunctionReturnValue};
1616
use tracing::Span;
@@ -130,44 +130,44 @@ pub enum FatalError {
130130
Cancelled,
131131
}
132132

133-
impl From<FatalError> for FinishedExecutionError {
133+
impl From<FatalError> for FinishedExecutionFailure {
134134
fn from(err: FatalError) -> Self {
135135
let reason_generic = err.to_string(); // Override with err's reason if no information is lost.
136136
match err {
137-
FatalError::NondeterminismDetected { detail } => FinishedExecutionError {
137+
FatalError::NondeterminismDetected { detail } => FinishedExecutionFailure {
138138
reason: None,
139139
kind: ExecutionFailureKind::NondeterminismDetected,
140140
detail: Some(detail),
141141
},
142-
FatalError::OutOfFuel { reason } => FinishedExecutionError {
142+
FatalError::OutOfFuel { reason } => FinishedExecutionFailure {
143143
reason: Some(reason),
144144
kind: ExecutionFailureKind::OutOfFuel,
145145
detail: None,
146146
},
147-
FatalError::ParamsParsingError(err) => FinishedExecutionError {
147+
FatalError::ParamsParsingError(err) => FinishedExecutionFailure {
148148
reason: Some(reason_generic),
149149
kind: ExecutionFailureKind::Uncategorized,
150150
detail: err.detail(),
151151
},
152-
FatalError::CannotInstantiate { reason, detail } => FinishedExecutionError {
152+
FatalError::CannotInstantiate { reason, detail } => FinishedExecutionFailure {
153153
reason: Some(reason),
154154
kind: ExecutionFailureKind::Uncategorized,
155155
detail,
156156
},
157157
FatalError::ResultParsingError(_) | FatalError::ConstraintViolation { reason: _ } => {
158-
FinishedExecutionError {
158+
FinishedExecutionFailure {
159159
reason: Some(reason_generic),
160160
kind: ExecutionFailureKind::Uncategorized,
161161
detail: None,
162162
}
163163
}
164164
FatalError::ImportedFunctionCallError { detail, .. }
165-
| FatalError::WorkflowTrap { detail, .. } => FinishedExecutionError {
165+
| FatalError::WorkflowTrap { detail, .. } => FinishedExecutionFailure {
166166
reason: Some(reason_generic),
167167
kind: ExecutionFailureKind::Uncategorized,
168168
detail,
169169
},
170-
FatalError::Cancelled => FinishedExecutionError {
170+
FatalError::Cancelled => FinishedExecutionFailure {
171171
kind: ExecutionFailureKind::Cancelled,
172172
reason: None,
173173
detail: None,
@@ -176,44 +176,44 @@ impl From<FatalError> for FinishedExecutionError {
176176
}
177177
}
178178

179-
impl From<&FatalError> for FinishedExecutionError {
179+
impl From<&FatalError> for FinishedExecutionFailure {
180180
fn from(err: &FatalError) -> Self {
181181
let reason_generic = err.to_string(); // Override with err's reason if no information is lost.
182182
match err {
183-
FatalError::NondeterminismDetected { detail } => FinishedExecutionError {
183+
FatalError::NondeterminismDetected { detail } => FinishedExecutionFailure {
184184
reason: None,
185185
kind: ExecutionFailureKind::NondeterminismDetected,
186186
detail: Some(detail.clone()),
187187
},
188-
FatalError::OutOfFuel { reason } => FinishedExecutionError {
188+
FatalError::OutOfFuel { reason } => FinishedExecutionFailure {
189189
reason: Some(reason.clone()),
190190
kind: ExecutionFailureKind::OutOfFuel,
191191
detail: None,
192192
},
193-
FatalError::ParamsParsingError(err) => FinishedExecutionError {
193+
FatalError::ParamsParsingError(err) => FinishedExecutionFailure {
194194
reason: Some(reason_generic),
195195
kind: ExecutionFailureKind::Uncategorized,
196196
detail: err.detail(),
197197
},
198-
FatalError::CannotInstantiate { reason, detail } => FinishedExecutionError {
198+
FatalError::CannotInstantiate { reason, detail } => FinishedExecutionFailure {
199199
reason: Some(reason.clone()),
200200
kind: ExecutionFailureKind::Uncategorized,
201201
detail: detail.clone(),
202202
},
203203
FatalError::ResultParsingError(_) | FatalError::ConstraintViolation { reason: _ } => {
204-
FinishedExecutionError {
204+
FinishedExecutionFailure {
205205
reason: Some(reason_generic),
206206
kind: ExecutionFailureKind::Uncategorized,
207207
detail: None,
208208
}
209209
}
210210
FatalError::ImportedFunctionCallError { detail, .. }
211-
| FatalError::WorkflowTrap { detail, .. } => FinishedExecutionError {
211+
| FatalError::WorkflowTrap { detail, .. } => FinishedExecutionFailure {
212212
reason: Some(reason_generic),
213213
kind: ExecutionFailureKind::Uncategorized,
214214
detail: detail.clone(),
215215
},
216-
FatalError::Cancelled => FinishedExecutionError {
216+
FatalError::Cancelled => FinishedExecutionFailure {
217217
kind: ExecutionFailureKind::Cancelled,
218218
reason: None,
219219
detail: None,

crates/grpc/src/grpc_mapping.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::grpc_gen::{self, execution_event::history_event, result_kind};
22
use chrono::DateTime;
33
use concepts::{
44
ComponentId, ComponentRetryConfig, ComponentType, ExecutionFailureKind, ExecutionId,
5-
ExecutionMetadata, FinishedExecutionError, FunctionFqn, StrVariant,
5+
ExecutionMetadata, FinishedExecutionFailure, FunctionFqn, StrVariant,
66
SupportedFunctionReturnValue,
77
component_id::{ComponentDigest, Digest},
88
prefixed_ulid::{DelayId, DeploymentId, ExecutorId, RunId},
@@ -661,7 +661,7 @@ impl From<SupportedFunctionReturnValue> for grpc_gen::SupportedFunctionResult {
661661
wit_type_inline,
662662
)
663663
}
664-
SupportedFunctionReturnValue::ExecutionError(FinishedExecutionError {
664+
SupportedFunctionReturnValue::ExecutionFailure(FinishedExecutionFailure {
665665
kind,
666666
reason,
667667
detail,
@@ -854,8 +854,8 @@ impl TryFrom<grpc_gen::SupportedFunctionResult> for SupportedFunctionReturnValue
854854
tonic::Status::invalid_argument("invalid execution failure kind")
855855
})
856856
})?;
857-
Ok(SupportedFunctionReturnValue::ExecutionError(
858-
FinishedExecutionError {
857+
Ok(SupportedFunctionReturnValue::ExecutionFailure(
858+
FinishedExecutionFailure {
859859
kind,
860860
reason,
861861
detail,

crates/testing/test-utils/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use concepts::storage::{
44
PendingState, Version,
55
};
66
use concepts::{
7-
ExecutionFailureKind, ExecutionId, FinishedExecutionError, SupportedFunctionReturnValue,
7+
ExecutionFailureKind, ExecutionId, FinishedExecutionFailure, SupportedFunctionReturnValue,
88
};
99
use rand::rngs::StdRng;
1010
use rand::{Rng as _, SeedableRng as _};
@@ -152,7 +152,7 @@ impl From<ExecutionLog> for ExecutionLogSanitized {
152152
}
153153
ExecutionRequest::Finished {
154154
retval:
155-
SupportedFunctionReturnValue::ExecutionError(FinishedExecutionError {
155+
SupportedFunctionReturnValue::ExecutionFailure(FinishedExecutionFailure {
156156
kind: ExecutionFailureKind::Uncategorized,
157157
reason: _,
158158
detail,

0 commit comments

Comments
 (0)