aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md63
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