Skip to content

[Feature Request] Grain max-lifetime (TTL) forced deactivation #116

Description

@thnak

Cross-system reference: dapr/dapr#3658 "Dapr actor TTL in general"

Summary

Confirmed by direct inspection: Quark has no max-lifetime/TTL concept for a grain activation — only idle-based deactivation via GrainCollectionAge. A grain under constant load (never idle) currently lives forever, with no way to force periodic re-activation regardless of activity.

Why it matters

Distinct use case from idle collection: forcing periodic re-activation is useful for grains whose in-memory state should be refreshed from source-of-truth on a schedule, or for bounding worst-case memory growth in long-lived caches, even under continuous traffic.

For future discussion

  • New MaxActivationLifetime alongside GrainCollectionAge in SiloRuntimeOptions, checked by GrainIdleCollector (or a sibling collector) regardless of recent activity.
  • Interaction with in-flight calls at TTL expiry — drain-then-deactivate vs. hard cutoff.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: runtimeGrainActivation, LocalGrainCallInvoker, GrainActivationTable, schedulerenhancementNew feature or requeststatus: plannedDesigned, not yet started — has a spec or issue design

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions