Skip to content

Commit 48dc40e

Browse files
committed
uses eyre now for errors
1 parent fb10ef7 commit 48dc40e

File tree

12 files changed

+70
-170
lines changed

12 files changed

+70
-170
lines changed

.github/workflows/build_dev_container.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ on:
33
push:
44
branches: ["master"]
55
paths:
6-
- 'src/**'
7-
- 'Cargo.lock'
8-
- 'Cargo.toml'
9-
- 'Dockerfile'
10-
- 'compose.yml'
6+
- "src/**"
7+
- "Cargo.lock"
8+
- "Cargo.toml"
9+
- "Dockerfile"
10+
- "compose.yml"
1111

1212
jobs:
1313
build-and-push:

Cargo.lock

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

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ urlencoding = "2.1.3"
3333
uuid = { version = "1.8.0", features = ["v4"] }
3434
rand = "0.8.5"
3535

36-
# logging
36+
# logging & errors
3737
env_logger = "0.11.3"
3838
log = "0.4.21"
39+
eyre = "0.6.12"
3940

4041
# encryption (ecies) & signatures (ecdsa) & hashing & bloom-filters
4142
ecies = { version = "0.2", default-features = false, features = ["pure"] }
@@ -69,6 +70,7 @@ libp2p-identity = { version = "0.2.9", features = ["secp256k1"] }
6970
tracing = { version = "0.1.40" }
7071
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
7172

73+
7274
[dependencies.openssl]
7375
version = "*"
7476
features = ["vendored"]

src/config/models.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::utils::split_comma_separated;
2+
use eyre::{eyre, Result};
23
use ollama_workflows::{Model, ModelProvider};
34
use rand::seq::IteratorRandom; // provides Vec<_>.choose
45

@@ -58,27 +59,27 @@ impl ModelConfig {
5859
/// If this is a provider, the first matching model in the node config is returned.
5960
///
6061
/// If there are no matching models with this logic, an error is returned.
61-
pub fn get_matching_model(
62-
&self,
63-
model_or_provider: String,
64-
) -> Result<(ModelProvider, Model), String> {
62+
pub fn get_matching_model(&self, model_or_provider: String) -> Result<(ModelProvider, Model)> {
6563
if let Ok(provider) = ModelProvider::try_from(model_or_provider.clone()) {
6664
// this is a valid provider, return the first matching model in the config
6765
self.models
6866
.iter()
6967
.find(|(p, _)| *p == provider)
70-
.ok_or_else(|| format!("Provider {} is not supported by this node.", provider))
68+
.ok_or(eyre!(
69+
"Provider {} is not supported by this node.",
70+
provider
71+
))
7172
.cloned()
7273
} else if let Ok(model) = Model::try_from(model_or_provider.clone()) {
7374
// this is a valid model, return it if it is supported by the node
7475
self.models
7576
.iter()
7677
.find(|(_, m)| *m == model)
77-
.ok_or_else(|| format!("Model {} is not supported by this node.", model))
78+
.ok_or(eyre!("Model {} is not supported by this node.", model))
7879
.cloned()
7980
} else {
8081
// this is neither a valid provider or model for this node
81-
Err(format!(
82+
Err(eyre!(
8283
"Given string '{}' is neither a model nor provider.",
8384
model_or_provider
8485
))
@@ -89,7 +90,7 @@ impl ModelConfig {
8990
pub fn get_any_matching_model(
9091
&self,
9192
list_model_or_provider: Vec<String>,
92-
) -> Result<(ModelProvider, Model), String> {
93+
) -> Result<(ModelProvider, Model)> {
9394
// filter models w.r.t supported ones
9495
let matching_models = list_model_or_provider
9596
.into_iter()
@@ -109,7 +110,7 @@ impl ModelConfig {
109110
matching_models
110111
.into_iter()
111112
.choose(&mut rand::thread_rng())
112-
.ok_or_else(|| "No matching models found.".to_string())
113+
.ok_or(eyre!("No matching models found."))
113114
}
114115

115116
/// Returns the list of unique providers in the config.

src/errors/mod.rs

Lines changed: 0 additions & 115 deletions
This file was deleted.

src/handlers/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ pub use pingpong::PingpongHandler;
77
mod workflow;
88
pub use workflow::WorkflowHandler;
99

10-
use crate::{errors::NodeResult, p2p::P2PMessage, DriaComputeNode};
10+
use crate::{p2p::P2PMessage, DriaComputeNode};
1111

1212
#[async_trait]
1313
pub trait ComputeHandler {
1414
async fn handle_compute(
1515
node: &mut DriaComputeNode,
1616
message: P2PMessage,
1717
result_topic: &str,
18-
) -> NodeResult<MessageAcceptance>;
18+
) -> eyre::Result<MessageAcceptance>;
1919
}

src/handlers/pingpong.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
use crate::{
2-
errors::NodeResult, node::DriaComputeNode, p2p::P2PMessage, utils::get_current_time_nanos,
3-
};
1+
use crate::{node::DriaComputeNode, p2p::P2PMessage, utils::get_current_time_nanos};
42
use async_trait::async_trait;
3+
use eyre::Result;
54
use libp2p::gossipsub::MessageAcceptance;
65
use ollama_workflows::{Model, ModelProvider};
76
use serde::{Deserialize, Serialize};
@@ -29,7 +28,7 @@ impl ComputeHandler for PingpongHandler {
2928
node: &mut DriaComputeNode,
3029
message: P2PMessage,
3130
result_topic: &str,
32-
) -> NodeResult<MessageAcceptance> {
31+
) -> Result<MessageAcceptance> {
3332
let pingpong = message.parse_payload::<PingpongPayload>(true)?;
3433

3534
// check deadline

src/handlers/workflow.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use async_trait::async_trait;
2+
use eyre::{eyre, Result};
23
use libp2p::gossipsub::MessageAcceptance;
34
use ollama_workflows::{Entry, Executor, ModelProvider, ProgramMemory, Workflow};
45
use serde::Deserialize;
56

6-
use crate::errors::NodeResult;
77
use crate::node::DriaComputeNode;
88
use crate::p2p::P2PMessage;
99
use crate::utils::get_current_time_nanos;
@@ -32,7 +32,7 @@ impl ComputeHandler for WorkflowHandler {
3232
node: &mut DriaComputeNode,
3333
message: P2PMessage,
3434
result_topic: &str,
35-
) -> NodeResult<MessageAcceptance> {
35+
) -> Result<MessageAcceptance> {
3636
let task = message.parse_payload::<TaskRequestPayload<WorkflowPayload>>(true)?;
3737

3838
// check if deadline is past or not
@@ -102,10 +102,10 @@ impl ComputeHandler for WorkflowHandler {
102102
exec_result = executor.execute(entry.as_ref(), task.input.workflow, &mut memory) => {
103103
match exec_result {
104104
Ok(exec_result) => {
105-
result = exec_result;
105+
result = exec_result;
106106
}
107107
Err(e) => {
108-
return Err(format!("Workflow failed with error {}", e).into());
108+
return Err(eyre!("Workflow failed with error {}", e));
109109
}
110110
}
111111
}

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// TODO: this line breaks docker, find a way to ignore during compose?
33

44
pub(crate) mod config;
5-
pub(crate) mod errors;
65
pub(crate) mod handlers;
76
pub(crate) mod node;
87
pub(crate) mod p2p;

0 commit comments

Comments
 (0)