Member Junction
    Preparing search index...

    Purges expired MJ: Action Execution Logs rows, bounded per run.

    Retention is decided at write time, not here. StartActionLog stamps each row's RetentionPeriod from its action's, so this job reads only the row's own value — which is what makes an edit to Action.RetentionPeriod a going-forward change rather than a retroactive deletion of history written under the previous policy. A row with NULL retention is kept forever unless the job is explicitly configured with DefaultRetentionDays.

    Deletion goes through BaseEntity.Delete(), one row at a time. A DELETE statement would be faster and is a sanctioned use of raw DML in principle — but only for an entity that has opted in via AllowDirectSQLDelete, and this one has not. Honouring the platform's own gate matters more here than throughput, because the job is bounded anyway: the cap exists so a first run against a long-neglected table cannot become an unbounded transaction, and raising it is a configuration change rather than a code change.

    Opt-in like every other maintenance driver: shipping the job type activates nothing until someone creates a MJ: Scheduled Job of this type with a cron expression.

    Hierarchy (View Summary)

    Index

    Constructors

    Accessors

    • get IsHighFrequencyByDesign(): boolean

      Whether this driver is a BY-DESIGN high-frequency poller — a dispatcher that sweeps a work queue on a tight cron (e.g. every minute) and does bounded work per sweep. Overriding to true exempts jobs of this type from the engine's high-frequency cron warning banner. Leave false for ordinary jobs: the warning exists because a tight cron on a work job is usually a design smell.

      Returns boolean

    Methods

    • The retention lifetimes actually in use, read from the actions that stamped them.

      Read from MJ: Actions rather than by scanning the log for distinct values, because the log is the large table and the actions table is not — and the two agree by construction, since the stamp comes from here.

      Parameters

      Returns Promise<number[]>