diff options
Diffstat (limited to 'CHANGELOG.md')
| -rw-r--r-- | CHANGELOG.md | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index b87da2acd..e40840f65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,66 @@ ## -- Bugfix: Fix for c4core dependency with xmake repo configuration +- Feature: Project store "getchunks" rpc call `/prj/{project}/oplog/{log}/rpc` extended to accept both CAS (RawHash) and Id (Oid) identifiers as well as partial ranges + - Legacy call still has and `chunks` array in the request body with IoHash entries providing CAS data for whole chunks only + - New call has a top level `Request` object in request body with the following elements: + - `SkipData`: bool, optional, default `false` + - If `SkipData` is set to true we will not include the payload of the chunk, just the information requested for the chunk + - `Chunks`: array of objects for the requests + - `RawHash`: IoHash + - Indicates we want a Cid chunk which is stored in CAS and identified by the RawHash of the chunk. + - Mutually exclusive with `Oid`. + - The value of the field will be used as the `Id` field in the chunk response. + - `Oid`: IoChunkId + - Indicates we want a data chunk via its Id. May be stored in CAS or be a reference to a loose file on disk. + - Mutually exclusive with `RawHash`. + - The value of the field will be used as the `Id` field in the chunk response. + - `Offset`: uint64, optional + - Partial request offset into the requested chunk. Default is from start of chunk (0). + - `Size`: uint64, optional + - Partial request size of the requested chunk. Default is to end of chunk (-1). + - `ModTag`: uint64, optional + - A tag indicating the modification version of the chunk. + - If `SkipData` is set to false and the `ModTag` matches the current modification version in zenserver the chunk response will only contain an `Id` field. + - If `SkipData` is set to false and the `ModTag` does not match the current modification version in zenserver the response will contains an `Id` field, current `ModTag` and the chunk payload. + - If `SkipData` is set to true and the `ModTag` matches the current modification version in zenserver the chunk response will only contain an `Id` field. + - If `SkipData` is set to true and the `ModTag` does not match the current modification version in zenserver the response will contains an `Id` field and the current `ModTag`. + - New call responds with a zen Http CbPackage (with the header magic `0xaa77aacc`) with the following elements in the included package object: + - `Chunks`: array of objects for the response + - `Id`: IoHash or IoChunkId + - This is the identifier used for the chunk - if the requested chunk can not be found by zenserver the chunk will be omitted from the reponse `Chunks` array. + - `Error`: string + - If the chunk was found but there was an error processing the chunk to fulfill the request the reason will be added as a descriptive string. + - Mutually exclusive with `ModTag`, `Hash`, `RawHash` and `FragmentHash`. + - `ModTag`: uint64 + - This field is set if the `ModTag` for the chunk was not present in the request or the current `ModTag` for the chunk does not match the `ModTag` in the request. + - Mutually exclusive with `Error`. + - `Hash`: IoHash + - If the response payload was found and `SkipData` is false and `ModTag` in the request does not match the current `ModTag` this is the identifier for the attachment data. + - A `Hash` field indicates that the response for the chunk is attached as uncompressed data. + - If a range is given for the chunk the attached data is limited to the requested range. + - Mutually exclusive with `RawHash`, `FragmentHash` amd `Error`. + - `RawHash`: IoHash + - If the response payload was found and `SkipData` is false and `ModTag` in the request does not match the current `ModTag` this is the identifier for the attachment data. + - A `RawHash` field indicates that the response for the chunk is attached as compressed data. + - If a range is given for the chunk the this field will be replaced with a `FragmentHash` field. + - Mutually exclusive with `Hash`, `FragmentHash` and `Error`. + - `FragmentHash`: IoHash + - If the response payload was found and `SkipData` is false and `ModTag` in the request does not match the current `ModTag` this is the identifier for the attachment data. + - A `FragmentHash` field indicates that the response for the chunk is a partial chunk as compressed data. Compressed data ranges will always be sent as full compressed blocks covering the requested range. + - If `FragmentHash` is present, a `FragmentOffset` field will also be present. + - Mutually exclusive with `Hash`, `RawHash` and `Error`. + - `FragmentOffset`: uint64 + - Indicates at which offset the partial chunk of compressed data starts. Compressed data is compressed into blocks and ranges for compressed data will always send full compressed blocks. + - `FragmentOffset` will be less or equal to the requested `Offset`. + - `FragmentOffset` plus the decompressed attachment size will always be more or equal to the requested `Offset` + `Size`. + - Only present if `FragmentHash` is present. + - `Size`: uint64 + - If the uncompressed chunk response is not the full chunk the `Size` field will contain the chunks full size + - Mutually exclusive with `RawHash` and `Error`. + - `RawSize`: uint64 + - If the compressed chunk response is not the full chunk the `RawSize` field will contain the chunk full decompressed size + - Mutually exclusive with `RawHash`, `Hash` and `Error`. +- Improvement: Build release binaries with LTO on Windows/Mac +- Improvement: Release binaries now build with "faster" instead of "smaller" optimization flags ## 5.5.15 - Bugfix: Fix returned content type when requesting a project store chunk with non-compressed accept type |