mirror of
https://git.asonix.dog/asonix/pict-rs.git
synced 2024-11-28 20:41:00 +00:00
68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
|
# pict-rs 0.4.2
|
||
|
|
||
|
## Overview
|
||
|
|
||
|
I'm happy to announc pict-rs 0.4.2 today. This is a smaller release but includes some important
|
||
|
changes. A few users had been seeing issues around pict-rs' HTTP client when talking to object
|
||
|
storage or downloading media, this release should fix these issues.
|
||
|
|
||
|
### Features
|
||
|
|
||
|
- [Process Timeout](#process-timeout)
|
||
|
|
||
|
|
||
|
### Bugfix
|
||
|
|
||
|
- [Dangling Backgrounded Uploads](#dangling-backgrounded-uploads)
|
||
|
|
||
|
|
||
|
### Changes
|
||
|
|
||
|
- [Reqwest](#reqwest)
|
||
|
|
||
|
|
||
|
## Upgrade Notes
|
||
|
|
||
|
There's no significant changes from 0.4.1, so upgrading should be as simple as pulling a new version
|
||
|
of pict-rs.
|
||
|
|
||
|
|
||
|
## Descriptions
|
||
|
|
||
|
### Process Timeout
|
||
|
|
||
|
pict-rs spawns processes to handle identifying and processing images. These processes have not had
|
||
|
many bounds in place so far, and are left to run more or less unattended for as long as they care to
|
||
|
take. This can cause problems when a large file is uploaded and causes clients to time out while
|
||
|
waiting. While the proper solution for these cases is to use the backgrounded endpoint to avoid
|
||
|
timing out http requests when processing large files, It may be worth limiting the duration these
|
||
|
processes are allowed to run for.
|
||
|
|
||
|
0.4.2 introduces a new config option: `PICTRS__MEDIA__PROCESS_TIMEOUT`, which governs how long any
|
||
|
given process that pict-rs spawns is allowed to run. The default value here is 30 seconds, but on
|
||
|
systems with slower CPUs or if larger files need to be handled, this value can be increased.
|
||
|
Alternatively, if only small or simple files need to be hosted, then this value can be lowered,
|
||
|
ensuring any file that is too complex will not be succesfully processed.
|
||
|
|
||
|
When an operation times out, this is considered a client error, since the client initiated a request
|
||
|
with a file too complex to process in a reasonable amount of time.
|
||
|
|
||
|
|
||
|
### Dangling Backgrounded Uploads
|
||
|
|
||
|
In some cases, a backgrounded upload could fail and leave the original unprocessed media in the
|
||
|
store, but inaccessible from any client. This is now solved by ensuring that even when processing a
|
||
|
backgrounded upload fails, the source files are cleaned before the job completes.
|
||
|
|
||
|
|
||
|
### Reqwest
|
||
|
|
||
|
This release swaps the `awc` HTTP client library for `reqwest`. Due to a number of HTTP-related
|
||
|
issues, and awc's status as a less-supported member of the actix-web ecosystem, pict-rs has moved to
|
||
|
`reqwest` for making HTTP requests. This should result in slightly better performance, fewer
|
||
|
dangling connections, and fewer connection errors.
|
||
|
|
||
|
The `PICTRS__SERVER__CLIENT_POOL_SIZE` variable is now less useful. Since reqwest doesn't give
|
||
|
control of its pool size directly, this value now limits simultaneous idle connections to a given
|
||
|
host.
|