Skip to main content

Manager

This class owns the cache service's core behavior, including reading/writing cached outputs, maintaining cache metadata timestamps, and coordinating serialized cache population with reservations. It defines the policy for cache population, allowing the service layer to remain thin and repository implementations to focus solely on persistence.

Methods


Get()

@classmethod
def Get(
ctx: context.Context,
request: *cacheservicepb.GetCacheRequest
) - > *CacheEntry, error

Fetches a cache entry based on the provided request. This method retrieves cached outputs and their associated metadata.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for the request, used for cancellation and deadlines.
request*cacheservicepb.GetCacheRequestThe request containing the necessary information to identify and retrieve the cache entry.

Returns

TypeDescription
*CacheEntry, errorThe retrieved cache entry and an error if the operation fails.

Put()

@classmethod
def Put(
ctx: context.Context,
request: *cacheservicepb.PutCacheRequest
) - > error

Stores a cache entry with the provided data. This method persists new or updated cached outputs.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for the request, used for cancellation and deadlines.
request*cacheservicepb.PutCacheRequestThe request containing the cache entry data to be stored.

Returns

TypeDescription
errorAn error if the operation fails.

Delete()

@classmethod
def Delete(
ctx: context.Context,
request: *cacheservicepb.DeleteCacheRequest
) - > error

Removes a cache entry based on the provided request. This method deletes cached outputs and their metadata.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for the request, used for cancellation and deadlines.
request*cacheservicepb.DeleteCacheRequestThe request containing the necessary information to identify and delete the cache entry.

Returns

TypeDescription
errorAn error if the operation fails.

GetOrExtendReservation()

@classmethod
def GetOrExtendReservation(
ctx: context.Context,
request: *cacheservicepb.GetOrExtendReservationRequest,
now: time.Time
) - > *cacheservicepb.Reservation, error

Retrieves an existing reservation or creates a new one, extending its heartbeat if it already exists. This method coordinates serialized cache population by managing reservations.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for the request, used for cancellation and deadlines.
request*cacheservicepb.GetOrExtendReservationRequestThe request containing details for getting or extending a reservation.
nowtime.TimeThe current time, used for calculating reservation expiration and heartbeat.

Returns

TypeDescription
*cacheservicepb.Reservation, errorThe reservation object and an error if the operation fails.

ReleaseReservation()

@classmethod
def ReleaseReservation(
ctx: context.Context,
request: *cacheservicepb.ReleaseReservationRequest
) - > error

Releases a previously held reservation. This method allows other processes to acquire a reservation for cache population.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for the request, used for cancellation and deadlines.
request*cacheservicepb.ReleaseReservationRequestThe request containing the reservation details to be released.

Returns

TypeDescription
errorAn error if the operation fails.

resolvedHeartbeat()

@classmethod
def resolvedHeartbeat(
requested: *durationpb.Duration
) - > time.Duration

Calculates the effective heartbeat duration for a reservation, considering a requested duration and system-defined maximums. This method ensures reservation heartbeats are within acceptable bounds.

Parameters

NameTypeDescription
requested*durationpb.DurationThe requested heartbeat duration for the reservation.

Returns

TypeDescription
time.DurationThe resolved heartbeat duration.