-
Notifications
You must be signed in to change notification settings - Fork 100
Further simplify public errors #78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Sushisource
merged 11 commits into
temporalio:master
from
Sushisource:finish-error-simplification
Mar 30, 2021
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
30eab4b
Fix ugly token attachment
Sushisource bdabdb8
Change errors to be per-api for better granularity and clarity
Sushisource 7050d85
Lint fix
Sushisource c25e076
Turn on documentation lints in CI
Sushisource 2e66f50
Fix all doc problems
Sushisource 35b1409
Set rust doc flags properly
Sushisource 65ca396
Break down functions in lib a bit for more readability
Sushisource f37e6a4
Lint fix
Sushisource 3d1fa11
Merge branch 'master' into finish-error-simplification
Sushisource b6de4c2
Upgrade docstrings for more clarity
Sushisource 9396476
Fix broken doc link
Sushisource File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,145 @@ | ||
| use crate::{ | ||
| protos::coresdk::activity_result::ActivityResult, | ||
| protos::coresdk::workflow_completion::WfActivationCompletion, | ||
| protos::temporal::api::workflowservice::v1::PollWorkflowTaskQueueResponse, | ||
| workflow::WorkflowError, | ||
| }; | ||
| use tonic::codegen::http::uri::InvalidUri; | ||
|
|
||
| pub(crate) struct ShutdownErr; | ||
| pub(crate) struct WorkflowUpdateError { | ||
| /// Underlying workflow error | ||
| pub source: WorkflowError, | ||
| /// The run id of the erring workflow | ||
| pub run_id: String, | ||
| } | ||
|
|
||
| /// Errors thrown during initialization of [crate::Core] | ||
| #[derive(thiserror::Error, Debug)] | ||
| pub enum CoreInitError { | ||
| /// Invalid URI. Configuration error, fatal. | ||
| #[error("Invalid URI: {0:?}")] | ||
| InvalidUri(#[from] InvalidUri), | ||
| /// Server connection error. Crashing and restarting the worker is likely best. | ||
| #[error("Server connection error: {0:?}")] | ||
| TonicTransportError(#[from] tonic::transport::Error), | ||
| } | ||
|
|
||
| /// Errors thrown by [crate::Core::poll_workflow_task] | ||
| #[derive(thiserror::Error, Debug)] | ||
| pub enum PollWfError { | ||
| /// There was an error specific to a workflow instance. The cached workflow should be deleted | ||
| /// from lang side. | ||
| #[error("There was an error with the workflow instance with run id ({run_id}): {source:?}")] | ||
| WorkflowUpdateError { | ||
Sushisource marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| /// Underlying workflow error | ||
| source: WorkflowError, | ||
| /// The run id of the erring workflow | ||
| run_id: String, | ||
| }, | ||
| /// The server returned a malformed polling response. Either we aren't handling a valid form, | ||
| /// or the server is bugging out. Likely fatal. | ||
| #[error("Poll workflow response from server was malformed: {0:?}")] | ||
| BadPollResponseFromServer(PollWorkflowTaskQueueResponse), | ||
Sushisource marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| /// [crate::Core::shutdown] was called, and there are no more replay tasks to be handled. Lang | ||
| /// must call [crate::Core::complete_workflow_task] for any remaining tasks, and then may | ||
| /// exit. | ||
| #[error("Core is shut down and there are no more workflow replay tasks")] | ||
| ShutDown, | ||
| /// Unhandled error when calling the temporal server. Core will attempt to retry any non-fatal | ||
| /// errors, so lang should consider this fatal. | ||
| #[error("Unhandled error when calling the temporal server: {0:?}")] | ||
| TonicError(#[from] tonic::Status), | ||
Sushisource marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| } | ||
|
|
||
| impl From<WorkflowUpdateError> for PollWfError { | ||
| fn from(e: WorkflowUpdateError) -> Self { | ||
| Self::WorkflowUpdateError { | ||
| source: e.source, | ||
| run_id: e.run_id, | ||
| } | ||
| } | ||
| } | ||
|
|
||
| impl From<ShutdownErr> for PollWfError { | ||
| fn from(_: ShutdownErr) -> Self { | ||
| Self::ShutDown | ||
| } | ||
| } | ||
|
|
||
| /// Errors thrown by [crate::Core::poll_activity_task] | ||
| #[derive(thiserror::Error, Debug)] | ||
| pub enum PollActivityError { | ||
| /// [crate::Core::shutdown] was called, we will no longer fetch new activity tasks. Lang must | ||
| /// ensure it is finished with any workflow replay, see [PollWfError::ShutDown] | ||
| #[error("Core is shut down")] | ||
| ShutDown, | ||
| /// Unhandled error when calling the temporal server. Core will attempt to retry any non-fatal | ||
| /// errors, so lang should consider this fatal. | ||
| #[error("Unhandled error when calling the temporal server: {0:?}")] | ||
| TonicError(#[from] tonic::Status), | ||
Sushisource marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| } | ||
|
|
||
| impl From<ShutdownErr> for PollActivityError { | ||
| fn from(_: ShutdownErr) -> Self { | ||
| Self::ShutDown | ||
| } | ||
| } | ||
|
|
||
| /// Errors thrown by [crate::Core::complete_workflow_task] | ||
| #[derive(thiserror::Error, Debug)] | ||
| #[allow(clippy::large_enum_variant)] | ||
| pub enum CompleteWfError { | ||
| /// Lang SDK sent us a malformed workflow completion. This likely means a bug in the lang sdk. | ||
| #[error("Lang SDK sent us a malformed workflow completion ({reason}): {completion:?}")] | ||
| MalformedWorkflowCompletion { | ||
| /// Reason the completion was malformed | ||
| reason: String, | ||
| /// The completion, which may not be included to avoid unnecessary copies. | ||
| completion: Option<WfActivationCompletion>, | ||
| }, | ||
| /// There was an error specific to a workflow instance. The cached workflow should be deleted | ||
| /// from lang side. | ||
| #[error("There was an error with the workflow instance with run id ({run_id}): {source:?}")] | ||
| WorkflowUpdateError { | ||
| /// Underlying workflow error | ||
| source: WorkflowError, | ||
| /// The run id of the erring workflow | ||
| run_id: String, | ||
| }, | ||
| /// There exists a pending command in this workflow's history which has not yet been handled. | ||
| /// When thrown from [crate::Core::complete_workflow_task], it means you should poll for a new | ||
| /// task, receive a new task token, and complete that new task. | ||
| #[error("Unhandled command when completing workflow activation")] | ||
| UnhandledCommandWhenCompleting, | ||
Sushisource marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| /// Unhandled error when calling the temporal server. Core will attempt to retry any non-fatal | ||
| /// errors, so lang should consider this fatal. | ||
| #[error("Unhandled error when calling the temporal server: {0:?}")] | ||
| TonicError(#[from] tonic::Status), | ||
| } | ||
|
|
||
| impl From<WorkflowUpdateError> for CompleteWfError { | ||
| fn from(e: WorkflowUpdateError) -> Self { | ||
| Self::WorkflowUpdateError { | ||
| source: e.source, | ||
| run_id: e.run_id, | ||
| } | ||
| } | ||
| } | ||
|
|
||
| /// Errors thrown by [crate::Core::complete_activity_task] | ||
Sushisource marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| #[derive(thiserror::Error, Debug)] | ||
| pub enum CompleteActivityError { | ||
| /// Lang SDK sent us a malformed activity completion. This likely means a bug in the lang sdk. | ||
| #[error("Lang SDK sent us a malformed activity completion ({reason}): {completion:?}")] | ||
| MalformedActivityCompletion { | ||
| /// Reason the completion was malformed | ||
| reason: String, | ||
| /// The completion, which may not be included to avoid unnecessary copies. | ||
| completion: Option<ActivityResult>, | ||
| }, | ||
| /// Unhandled error when calling the temporal server. Core will attempt to retry any non-fatal | ||
| /// errors, so lang should consider this fatal. | ||
| #[error("Unhandled error when calling the temporal server: {0:?}")] | ||
| TonicError(#[from] tonic::Status), | ||
| } | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.