S3 based konserve backend.
S3 based konserve backend.
(common-client-config client
{:keys [region x-ray? access-key secret endpoint-override
path-style-access? expect-continue?]})(get-object-with-etag client bucket key)Get object and return map with :data and :etag, or nil if not found.
Get object and return map with :data and :etag, or nil if not found.
(list-stores s3-spec & {:keys [opts]})List all konserve stores in an S3 bucket by reading the central registry.
The registry uses optimistic concurrency control (ETags) to handle concurrent updates from multiple processes/machines.
Args: s3-spec - Map with :bucket, :region, :access-key, :secret, etc. opts - (optional) Runtime options map. Defaults to {:sync? true}
Returns: Set of UUIDs representing store IDs in the bucket
List all konserve stores in an S3 bucket by reading the central registry.
The registry uses optimistic concurrency control (ETags) to handle concurrent
updates from multiple processes/machines.
Args:
s3-spec - Map with :bucket, :region, :access-key, :secret, etc.
opts - (optional) Runtime options map. Defaults to {:sync? true}
Returns:
Set of UUIDs representing store IDs in the bucket(put-object-conditional client bucket key bytes if-match-etag)Put object with conditional ETag check. Returns true on success, false on conflict. S3 returns HTTP 412 (Precondition Failed) when ifMatch ETag doesn't match.
Put object with conditional ETag check. Returns true on success, false on conflict. S3 returns HTTP 412 (Precondition Failed) when ifMatch ETag doesn't match.
(release store env)Must be called after work on database has finished in order to close connection
Must be called after work on database has finished in order to close connection
The SDK forces Expect: 100-continue onto PutObject via an internal
interceptor regardless of HTTP-client configuration (aws/aws-sdk-java-v2
#6537). The handshake costs a full extra round trip per PUT — and stalls
against providers that never send the interim 100 response (Cloudflare R2).
It only pays off for uploads large enough that resending a rejected body
hurts, which konserve values are not. Override-config interceptors run
after the SDK's own, so removing the header here wins.
The SDK forces `Expect: 100-continue` onto PutObject via an internal interceptor regardless of HTTP-client configuration (aws/aws-sdk-java-v2 #6537). The handshake costs a full extra round trip per PUT — and stalls against providers that never send the interim 100 response (Cloudflare R2). It only pays off for uploads large enough that resending a rejected body hurts, which konserve values are not. Override-config interceptors run after the SDK's own, so removing the header here wins.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |