• v0.4.6 3d06fad29c

    pict-rs 0.4.6 Stable

    asonix released this 2023-12-09 02:20:03 +00:00 | 485 commits to main since this release

    pict-rs 0.4.6

    Overview

    pict-rs 0.4.6 introduces a new internal endpoint to prepare servers for the 0.5.0 upgrade. This is
    to enable the upgrade preparations to be completed on an 0.4 server without taking it offline, thus
    improving the speed at which the upgrade will occur.

    Features

    Changes

    Upgrade Notes

    There's no significant changes from 0.4.5, so upgrading should be as simple as pulling a new version
    of pict-rs.

    Descriptions

    Upgrade Preparation Endpoint

    In pict-rs 0.3 and 0.4, file metadata was automatically extracted from uploads when they were
    created, but earlier versions did not do this. In some scenarios, uploads may be present in pict-rs
    without associated metadata. pict-rs 0.5 introduces a requirement on the presence of this metadata,
    and the upgrade process automatically extracts this information, but the upgrade happens before
    pict-rs 0.5 launches its web server, meaning that it will remain inaccessible while it takes the
    time to extract the necessary metadata.

    A new internal endpoint has been introduced at /internal/prepare_upgrade. This endpoint will queue
    a job to ensure all uploads pict-rs has handled have associated file metadata. This will improve the
    speed at which the 0.5 upgrade will occur.

    The endpoint is available via a POST request, and accepts an optional query parameter force
    which can be set to true in order to force pict-rs to queue the metadata job, even if it has
    already been queued. Generally, force should not be required.

    After the endpoint is hit once, any further request to the endpoint without the force parameter
    will return the current status of the upgrade preparation job.

    Example:

    curl \
        -XPOST \
        -H'X-Api-Token: api-key' \
        'http://localhost:8080/internal/prepare_upgrade'
    

    pict-rs will respond with the following json:

    {
        "complete": false,
        "progress": 123,
        "total": 456
    }
    

    This example indicates that the upgrade preparation has processed 123 uploads out of the total 456,
    and it is not complete. One thing to note is that when the job does complete, the progress value may
    still be less than the total value, although it should be close.

    Improved Upload Performance

    At the cost of memory, pict-rs will now accept file uploads and read their bytes before a permit for
    external processing becomes available. This improves the speed with which uploads complete, and
    allows clients to fully send their requests without being blocked on other uploads. This also fixes
    a bug where it is possible for malicious clients to hold upload requests open and prevent pict-rs
    from being able to process media.

    Downloads