mirror of
https://git.asonix.dog/asonix/pict-rs
synced 2024-12-21 19:01:25 +00:00
Pull over 0.4.1 release md
This commit is contained in:
parent
c4c920191f
commit
a70dbe5c57
1 changed files with 106 additions and 0 deletions
106
releases/0.4.1.md
Normal file
106
releases/0.4.1.md
Normal file
|
@ -0,0 +1,106 @@
|
|||
# pict-rs 0.4.1
|
||||
|
||||
## Overview
|
||||
|
||||
Today I am releasing pict-rs 0.4.1. This includes a couple bugfixes and a few requested features.
|
||||
Most notably is the object-storage migration now uploads files concurrently. It should be much
|
||||
faster than before.
|
||||
|
||||
### Features
|
||||
|
||||
- [Add Concurrency to Migration](#add-concurrency-to-migration)
|
||||
- [Improved Error Messages](#improved-error-messages)
|
||||
- [Configurable Object Storage Timeouts](#configurable-object-storage-timeouts)
|
||||
- [Set Content-Type in Object Storage](#set-content-type-in-object-storage)
|
||||
|
||||
|
||||
### Bugfix
|
||||
|
||||
- [Alias Cleanup](#alias-cleanup)
|
||||
- [ImageMagick Security Policy](#imagemagick-security-policy)
|
||||
- [Broken Pipe on Upload Error](#broken-pipe-on-upload-error)
|
||||
|
||||
|
||||
## Upgrade Notes
|
||||
|
||||
There's no significant changes from 0.4, so upgrading should be as simple as pulling a newer version
|
||||
of pict-rs.
|
||||
|
||||
|
||||
## Descriptions
|
||||
|
||||
### Add Concurrency to Migration
|
||||
|
||||
Adding concurrency means changing how pict-rs kept track of migration progress. Previously it was
|
||||
setting a single flag with the "newest" hash that it had migrated, so a resuming migration would
|
||||
iterate until it found that hash before continuing linearly. Now, pict-rs keeps track of each
|
||||
individual file. That way it does not matter the order in which files are migrated.
|
||||
|
||||
The migration is hardcoded to try moving 32 files at a time, so ideally this would mean a 32x
|
||||
speedup over the previous linear version. Whether it actually ends up being so fast is yet to be
|
||||
seen.
|
||||
|
||||
|
||||
### Improved Error Messages
|
||||
|
||||
Previously errors encountered when failing to run a process were pretty opaque. pict-rs relies on
|
||||
running the `ffmpeg`, `ffprobe`, `magick`, and `exiftool` commands, and if it could not run them it
|
||||
would print something vague like "File not found" or "Permission Denied", without much context for
|
||||
what wasn't found or what was denied.
|
||||
|
||||
Now, pict-rs properly informs the admin that "Required command magick not found" or "Cannot run
|
||||
command ffmpeg due to invalid permissions on binary".
|
||||
|
||||
Additionally, the error messages returned in the API were not very useful either. "Error in ffmpeg"
|
||||
or "Error in imagemagick" are not super useful. Now pict-rs will return the "root cause" of errors,
|
||||
which is generally more helpful. There's still more work to be done here, so this topic will be
|
||||
mentioned in future releases.
|
||||
|
||||
|
||||
### Configurable Object Storage Timeouts
|
||||
|
||||
pict-rs now provides the ability to increase the HTTP timeout and the Signature Expiration for
|
||||
requests to object storage. This may not be super helpful, but if your object storage is
|
||||
particularly slow you can now increase the values.
|
||||
|
||||
The relevant variables are `PICTRS__SToRE__SIGNATURE_EXPIRATION` and
|
||||
`PICTRS__STORE__CLIENT_TIMEOUT`.
|
||||
|
||||
In toml, that would be
|
||||
```toml
|
||||
[store]
|
||||
signature_expiration = 15
|
||||
client_timeout = 30
|
||||
```
|
||||
|
||||
|
||||
### Set Content-Type in Object Storage
|
||||
|
||||
This is not immediately useful, but it means that the object storage will begin knowing about the
|
||||
content-type of uploaded files, so in the future when pict-rs supports serving directly from
|
||||
object-storage it will provide a meaningful content-type header to browsers.
|
||||
|
||||
|
||||
### Alias Cleanup
|
||||
|
||||
There was a bug introduced in 0.4 that made using the "delete" endpoint not actually remove the file
|
||||
from storage. It would un-link the alias so it couldn't be accessed, but full deletion never
|
||||
happened. This was a result of me reordering a couple lines in the alias cleanup. 0.4.1 fixes this
|
||||
issue by un-reordering them.
|
||||
|
||||
|
||||
### ImageMagick Security Policy
|
||||
|
||||
The security policy used in the pict-rs docker container has been updated to allow for more file
|
||||
types. This makes the new JSON-based imagemagick and ffmpeg output parsers work, and might make one
|
||||
or two rejected files now no longer be rejected. I don't know the full extent to which this was a
|
||||
real problem in 0.4, but regardless it's better now.
|
||||
|
||||
|
||||
### Broken Pipe on Upload Error
|
||||
|
||||
Previously if a file was uploaded that was too large, it would be rejected immediately with a file
|
||||
size error. This sometimes resulted in clients receiving a Broken Pipe error on the connection
|
||||
instead of properly receiving an HTTP Response. This has been fixed in the `actix-form-data` library
|
||||
(that I also maintain) by ensuring that we read the entire upload (dropping the bytes immediately)
|
||||
before replying.
|
Loading…
Reference in a new issue