Table of Contents

Class TriggerFiredUpdate

Namespace
Quartz.Impl.AdoJobStore
Assembly
Quartz.dll

Every row change one trigger fire makes, gathered into one value so that ApplyTriggerFired(ConnectionAndTransactionHolder, TriggerFiredUpdate, CancellationToken) can issue them in as few round trips as the provider allows.

public sealed record TriggerFiredUpdate : IEquatable<TriggerFiredUpdate>
Inheritance
TriggerFiredUpdate
Implements
Inherited Members

Remarks

The store decides all of this before a single statement goes out: it has read the trigger's stored state and type, read the job, and applied the trigger's own Triggered transition in memory. What is left is a set of writes with no read between them, which is exactly what a DbBatch is for.

Properties

BlockJobTriggers

Whether the job's other triggers have to be moved into their blocked states, which they do for a job that disallows concurrent execution.

public required bool BlockJobTriggers { get; init; }

Property Value

bool

ClearMisfireOriginalFireTime

Whether the trigger's recorded original fire time has to be cleared, which it does when this fire is the recovery of a misfire and the recorded time has now been reported to the job.

public required bool ClearMisfireOriginalFireTime { get; init; }

Property Value

bool

JobDetail

The job the trigger fires. Its concurrency and recovery flags are copied onto the fired-trigger row, and it is what the trigger's persistence delegate is handed.

public required IJobDetail JobDetail { get; init; }

Property Value

IJobDetail

NewState

The state to store on the trigger's own row.

public required StoredTriggerState NewState { get; init; }

Property Value

StoredTriggerState

ScheduledFireTimeUtc

The time the fire was scheduled for, which is the trigger's next fire time as it stood before the fire advanced it.

public required DateTimeOffset? ScheduledFireTimeUtc { get; init; }

Property Value

DateTimeOffset?

Remarks

Carried explicitly rather than read off Trigger, because by the time this update is applied the trigger has already moved on to its following fire time. That used to be expressed as an ordering constraint — the fired-trigger row had to be written before Triggered ran — which is precisely the kind of constraint a batch cannot honour.

StoredTriggerType

The type discriminator the trigger's row holds, read before the fire.

public required string StoredTriggerType { get; init; }

Property Value

string

Remarks

Passed rather than read again: knowing it is the only reason the write path used to issue a SELECT TRIGGER_TYPE of its own. It is compared with the discriminator of the delegate that handles the trigger now, and a mismatch — which the fire path cannot produce, but a subclass firing a rebuilt trigger could — falls back to moving the row between type tables.

Trigger

The trigger that fired, already advanced past the fire by Triggered(ICalendar?).

public required IOperableTrigger Trigger { get; init; }

Property Value

IOperableTrigger