Skip to content

[Proposal] Support cleanup of reminders for retired grain types #9963

@Cluster7ck

Description

@Cluster7ck

When a grain type is removed from a system, existing reminders targeting that grain begin producing repeated errors such as:

Orleans.Runtime.OrleansException: No active nodes are compatible with grain <GrainTypeName> and interface Orleans.IRemindable version 0. Known nodes with grain type: none. All known nodes compatible with interface version: ...

These errors originate from reminders that still exist for the deleted grain type. Since the grain no longer exists, the reminders can never be delivered.

Currently, the only workaround is to temporarily reintroduce the grain type with IRemindable implemented, wait for the reminder to trigger, and deregister it. This is functional but contrived and requires keeping obsolete grain types around indefinitely.

Requested feature:

Provide a mechanism to declare certain grain types as retired. For these grain types, the reminder service should automatically delete or clean up reminders when they fail to fire because the grain type is no longer present.

This avoids unnecessary error logs and eliminates the need to keep old grain types in the codebase while still maintaining safety for heterogeneous clusters, since the cleanup would apply only to grain types that are intentionally marked as retired.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions