diff --git a/Cargo.lock b/Cargo.lock index 49b7059..8af8abe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1819,7 +1819,7 @@ dependencies = [ [[package]] name = "pict-rs" -version = "0.5.11" +version = "0.5.12" dependencies = [ "actix-form-data", "actix-web", diff --git a/Cargo.toml b/Cargo.toml index e0d0f4d..d52c770 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "pict-rs" description = "A simple image hosting service" -version = "0.5.11" +version = "0.5.12" authors = ["asonix "] license = "AGPL-3.0" readme = "README.md" diff --git a/pict-rs.nix b/pict-rs.nix index ab35302..191ce78 100644 --- a/pict-rs.nix +++ b/pict-rs.nix @@ -11,7 +11,7 @@ rustPlatform.buildRustPackage { pname = "pict-rs"; - version = "0.5.11"; + version = "0.5.12"; src = ./.; cargoLock = { diff --git a/releases/0.5.12.md b/releases/0.5.12.md new file mode 100644 index 0000000..8dcda52 --- /dev/null +++ b/releases/0.5.12.md @@ -0,0 +1,46 @@ +# pict-rs 0.5.12 + +pict-rs is a simple image hosting microservice, designed to handle storing and retrieving images, +animations, and videos, as well as providing basic image processing functionality. + +## Overview + +pict-rs 0.5.12 is a bugfix release to remove two issues that, when compounded, would cause pict-rs +to fail to process media. + +### Fixes + +- [Panic Handling in Background Jobs](#panic-handling-in-background-jobs) +- [BytesStream Divide-by-Zero](#bytes-stream-divide-by-zero) + + +## Upgrade Notes + +There are no significant differences from 0.5.11. Upgrading should be as simple as pulling a new +version of pict-rs. + + +## Descriptions + +### Panic Handling in Background Jobs + +pict-rs makes an effort to never use explicitly panicking code, but since there's no static way to +guarantee that a given function wont panic, pict-rs needs to be able to deal with that. pict-rs +0.5.12 now wraps invocations of jobs in spawned tasks, which can catch and report panics that happen +in background jobs. + +Previously, a panic in a background job would bring down that thread's job processor, which resulted +in future jobs never being processed. Now job processing should properly continue after panics +occur. + + +### BytesStream Divide-by-Zero + +Part of my rework of BytesStream recently included adding debug logs around how many bytes chunks +were in a given stream, and their average length. Unfortunately, if there were no bytes in the +stream, this would cause the "average chunk length" calculation to divide by 0. In previous versions +of pict-rs, this would generally result in a failed request for processed media, but in pict-rs +0.5.11 this would end up killing the background jobs processor. + +This specific panic has been fixed by ensuring we divide by the number of chunks or 1, whichever is +greater.