Compare commits

...

15 Commits
v0.6.0 ... main

Author SHA1 Message Date
ce2479f6ca chore(deps): update rust crate anyhow to v1.0.95 (#23)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-23 02:52:27 +01:00
82d4699bca fix(deps): update rust crate thiserror to v2.0.9 (#22)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-22 06:35:32 +01:00
5ab7cae1fe fix(deps): update rust crate thiserror to v2.0.8 (#21)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-18 06:34:52 +01:00
f049750e4c fix(deps): update rust crate thiserror to v2.0.7 (#20)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-14 02:38:13 +01:00
0b5f19fc77 fix(deps): update rust crate thiserror to v2.0.6 (#19)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-09 06:48:37 +01:00
14eabdbe82 fix(deps): update rust crate thiserror to v2.0.5 (#18)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-08 06:39:15 +01:00
ea568449fe fix(deps): update rust crate tokio-util to v0.7.13 (#17)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-05 02:46:34 +01:00
6ec3a6031e chore(deps): update all dependencies (#16)
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-04 03:07:17 +01:00
0f8fd2343e chore(deps): update rust crate tracing-subscriber to v0.3.19 (#15)
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-30 03:27:23 +01:00
12c00941b5 chore(deps): update rust crate tracing to v0.1.41 (#13)
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-28 02:56:53 +01:00
72755f9cf1 chore(release): v0.7.1 (#12)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.7.1

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: #12
2024-11-24 11:28:02 +01:00
ae0b8b703e
fix: make sure to close on final
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-11-24 11:24:13 +01:00
3c3f638004 chore(release): v0.7.0 (#11)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.7.0

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: #11
2024-11-24 10:49:56 +01:00
ea5287152c
feat: actually bubble up errors
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-11-24 10:47:56 +01:00
14371cdfd7 fix(deps): update rust crate thiserror to v2 (#9)
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-24 02:52:50 +01:00
5 changed files with 48 additions and 28 deletions

View File

@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.7.1] - 2024-11-24
### Fixed
- make sure to close on final
## [0.7.0] - 2024-11-24
### Added
- actually bubble up errors
### Fixed
- *(deps)* update rust crate thiserror to v2 (#9)
## [0.6.0] - 2024-11-23 ## [0.6.0] - 2024-11-23
### Added ### Added

38
Cargo.lock generated
View File

@ -28,9 +28,9 @@ dependencies = [
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.93" version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
[[package]] [[package]]
name = "async-trait" name = "async-trait"
@ -266,7 +266,7 @@ dependencies = [
[[package]] [[package]]
name = "notmad" name = "notmad"
version = "0.5.0" version = "0.7.1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@ -525,18 +525,18 @@ dependencies = [
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.69" version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl",
] ]
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "1.0.69" version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -555,9 +555,9 @@ dependencies = [
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.41.1" version = "1.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"bytes", "bytes",
@ -584,9 +584,9 @@ dependencies = [
[[package]] [[package]]
name = "tokio-util" name = "tokio-util"
version = "0.7.12" version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078"
dependencies = [ dependencies = [
"bytes", "bytes",
"futures-core", "futures-core",
@ -597,9 +597,9 @@ dependencies = [
[[package]] [[package]]
name = "tracing" name = "tracing"
version = "0.1.40" version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [ dependencies = [
"log", "log",
"pin-project-lite", "pin-project-lite",
@ -609,9 +609,9 @@ dependencies = [
[[package]] [[package]]
name = "tracing-attributes" name = "tracing-attributes"
version = "0.1.27" version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -620,9 +620,9 @@ dependencies = [
[[package]] [[package]]
name = "tracing-core" name = "tracing-core"
version = "0.1.32" version = "0.1.33"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"valuable", "valuable",
@ -641,9 +641,9 @@ dependencies = [
[[package]] [[package]]
name = "tracing-subscriber" name = "tracing-subscriber"
version = "0.3.18" version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
dependencies = [ dependencies = [
"matchers", "matchers",
"nu-ansi-term", "nu-ansi-term",

View File

@ -3,7 +3,7 @@ members = ["crates/*"]
resolver = "2" resolver = "2"
[workspace.package] [workspace.package]
version = "0.6.0" version = "0.7.1"
[workspace.dependencies] [workspace.dependencies]
mad = { path = "crates/mad" } mad = { path = "crates/mad" }

View File

@ -13,7 +13,7 @@ async-trait = "0.1.81"
futures = "0.3.30" futures = "0.3.30"
futures-util = "0.3.30" futures-util = "0.3.30"
rand = "0.8.5" rand = "0.8.5"
thiserror = "1.0.63" thiserror = "2.0.0"
tokio.workspace = true tokio.workspace = true
tokio-util = "0.7.11" tokio-util = "0.7.11"
tracing.workspace = true tracing.workspace = true

View File

@ -160,18 +160,20 @@ impl Mad {
} }
tokio::spawn({ tokio::spawn({
let cancellation_token = cancellation_token.child_token(); let cancellation_token = cancellation_token;
let job_done = job_done.child_token(); let job_done = job_done.child_token();
let wait_cancel = self.should_cancel; let wait_cancel = self.should_cancel;
async move { async move {
let should_cancel = let should_cancel =
|cancel: CancellationToken, wait: Option<std::time::Duration>| async move { |cancel: CancellationToken,
global_cancel: CancellationToken,
wait: Option<std::time::Duration>| async move {
if let Some(cancel_wait) = wait { if let Some(cancel_wait) = wait {
tokio::time::sleep(cancel_wait).await;
cancel.cancel(); cancel.cancel();
tokio::time::sleep(cancel_wait).await;
global_cancel.cancel();
} }
}; };
@ -180,13 +182,13 @@ impl Mad {
job_cancellation.cancel(); job_cancellation.cancel();
} }
_ = job_done.cancelled() => { _ = job_done.cancelled() => {
should_cancel(job_cancellation, wait_cancel).await; should_cancel(job_cancellation, cancellation_token, wait_cancel).await;
} }
_ = tokio::signal::ctrl_c() => { _ = tokio::signal::ctrl_c() => {
should_cancel(job_cancellation, wait_cancel).await; should_cancel(job_cancellation, cancellation_token,wait_cancel).await;
} }
_ = signal_unix_terminate() => { _ = signal_unix_terminate() => {
should_cancel(job_cancellation, wait_cancel).await; should_cancel(job_cancellation, cancellation_token, wait_cancel).await;
} }
} }
} }
@ -197,6 +199,7 @@ impl Mad {
futures.push(channel.recv()); futures.push(channel.recv());
} }
let mut errors = Vec::new();
while let Some(Some(msg)) = futures.next().await { while let Some(Some(msg)) = futures.next().await {
match msg.res { match msg.res {
Err(e) => { Err(e) => {
@ -205,6 +208,7 @@ impl Mad {
component = msg.name, component = msg.name,
"component ran to completion with error" "component ran to completion with error"
); );
errors.push(e);
} }
Ok(_) => { Ok(_) => {
tracing::debug!(component = msg.name, "component ran to completion"); tracing::debug!(component = msg.name, "component ran to completion");
@ -215,6 +219,9 @@ impl Mad {
} }
tracing::debug!("ran components"); tracing::debug!("ran components");
if !errors.is_empty() {
return Err(MadError::AggregateError(AggregateError { errors }));
}
Ok(()) Ok(())
} }