Table of Contents

Class DashboardHistoryEntry

Namespace
Quartz.Dashboard.Services
Assembly
Quartz.Dashboard.dll
public sealed record DashboardHistoryEntry : IEquatable<DashboardHistoryEntry>
Inheritance
DashboardHistoryEntry
Implements
Inherited Members

Remarks

Duration is a TimeSpan, as every other duration the dashboard shows is; it used to be a count of whole milliseconds, which lost every execution shorter than one.

Constructors

DashboardHistoryEntry(string, string, string, string, string, string, DateTimeOffset, TimeSpan, bool, string?)

public DashboardHistoryEntry(string SchedulerName, string SchedulerInstanceId, string JobGroup, string JobName, string TriggerGroup, string TriggerName, DateTimeOffset FiredAtUtc, TimeSpan Duration, bool Succeeded, string? ExceptionMessage)

Parameters

SchedulerName string

The scheduler the execution belongs to.

SchedulerInstanceId string

The node that ran it. Every node of a cluster keeps its own history of its own executions, so without this a row cannot say which machine it came from — and a store shared across the cluster cannot say it either.

JobGroup string

The group of the job that ran.

JobName string

The name of the job that ran.

TriggerGroup string

The group of the trigger that fired it.

TriggerName string

The name of the trigger that fired it.

FiredAtUtc DateTimeOffset

When the execution fired.

Duration TimeSpan

How long the job took.

Succeeded bool

Whether the run counts as a success: its result is Succeeded or Skipped. On a row written before 4.4, whether the job completed without throwing.

ExceptionMessage string

What it threw, or null when it did not throw.

Remarks

Duration is a TimeSpan, as every other duration the dashboard shows is; it used to be a count of whole milliseconds, which lost every execution shorter than one.

Properties

Duration

How long the job took.

public TimeSpan Duration { get; init; }

Property Value

TimeSpan

EffectiveResult

Result, or on a row written before 4.4 what Succeeded implies: Succeeded or Failed.

public JobRunResult EffectiveResult { get; }

Property Value

JobRunResult

Remarks

What every result filter, retention tier and status is decided by.

EntryId

What names this row, which the execution-detail page reads it back by; null on a row nothing named, which the history page then shows without a link.

public string? EntryId { get; init; }

Property Value

string

Remarks

EntryId, carried over — a non-positional init property, as Log is.

ExceptionMessage

What it threw, or null when it did not throw.

public string? ExceptionMessage { get; init; }

Property Value

string

FireInstanceId

The firing's FireInstanceId, which links the row to the firing's span and log scope; or null on a row written before 4.4.

public string? FireInstanceId { get; init; }

Property Value

string

Remarks

Not a key: a fire instance id is unique among the firings in flight, and may repeat after a restart.

FiredAtUtc

When the execution fired.

public DateTimeOffset FiredAtUtc { get; init; }

Property Value

DateTimeOffset

Input

The input the run was given, or null when none was recorded. Read by GetExecution(string, string, CancellationToken); a listing may leave it out, as it may Log.

public string? Input { get; init; }

Property Value

string

Remarks

Input, carried over, and what the history page's Run again passes back to TriggerJob(string, JobKeyDto, JobDataMap?, CancellationToken). A non-positional init property, added in 4.4.

InputTooLarge

Whether the run had an input over MaxInputBytes, which was then not recorded at all.

public bool InputTooLarge { get; init; }

Property Value

bool

Remarks

Nothing rather than a cut input, because a cut payload is a different input: run again with it, a job would do something it was never asked to.

JobGroup

The group of the job that ran.

public string JobGroup { get; init; }

Property Value

string

JobName

The name of the job that ran.

public string JobName { get; init; }

Property Value

string

Log

The lines the job logged, or null when nothing was captured. Read by GetExecution(string, string, CancellationToken); a listing may leave it out.

public string? Log { get; init; }

Property Value

string

Manual

Whether the run was asked for with TriggerJob(JobKey, JobDataMap?, CancellationToken) rather than fired by a schedule.

public bool Manual { get; init; }

Property Value

bool

Remarks

Read from ManualTrigger on the firing trigger's JobDataMap. false on a row written before 4.4.

MetricsJson

What the run measured, from Metrics, as one JSON object; or null when the job reported none, or more than MaxMetricsLength characters of it.

public string? MetricsJson { get; init; }

Property Value

string

Result

What the run achieved, or null on a row written before 4.4.

public JobRunResult? Result { get; init; }

Property Value

JobRunResult?

Remarks

Read EffectiveResult, which answers for the older rows too.

RetryAttempt

Which attempt at the occurrence this execution was: 0 on the regular fire, n on the n-th retry under its retry policy: the trigger's, the job type's or the scheduler's default.

public int RetryAttempt { get; init; }

Property Value

int

Remarks

Non-positional init properties, so the record's constructor is unchanged and a store an application wrote against 4.0 or 4.1 still compiles. Both are 0 and false for an execution with no retry policy behind it, which is the default.

RetryScheduled

Whether the trigger answered this failure with another attempt, so the occurrence was not finished when this row was written.

public bool RetryScheduled { get; init; }

Property Value

bool

Remarks

Non-positional init properties, so the record's constructor is unchanged and a store an application wrote against 4.0 or 4.1 still compiles. Both are 0 and false for an execution with no retry policy behind it, which is the default.

A row that did not succeed and has this false is a final failure, which is what the history page labels "Failed" rather than "Failed (retrying)" and what it offers to run again.

SchedulerInstanceId

The node that ran it. Every node of a cluster keeps its own history of its own executions, so without this a row cannot say which machine it came from — and a store shared across the cluster cannot say it either.

public string SchedulerInstanceId { get; init; }

Property Value

string

SchedulerName

The scheduler the execution belongs to.

public string SchedulerName { get; init; }

Property Value

string

Succeeded

Whether the run counts as a success: its result is Succeeded or Skipped. On a row written before 4.4, whether the job completed without throwing.

public bool Succeeded { get; init; }

Property Value

bool

Summary

The job's own one line about the run, from Summary, or null. At most MaxSummaryLength characters.

public string? Summary { get; init; }

Property Value

string

TriggerGroup

The group of the trigger that fired it.

public string TriggerGroup { get; init; }

Property Value

string

TriggerName

The name of the trigger that fired it.

public string TriggerName { get; init; }

Property Value

string