Skip to content
Tracon

TraconTenantQuotaExceededException

Namespace Tracon · Assembly Tracon.Abstractions.dll

Thrown when a tenant’s quota period is spent and a run tree that is already running is refused new work: a workflow function node or an agent step that has not started.

public sealed class TraconTenantQuotaExceededException : TraconException, ISerializable
Inheritance
object ← Exception ← TraconException ← TraconTenantQuotaExceededException
Implements
ISerializable
Inherited Members
TraconException.ErrorType, Exception.GetBaseException(), Exception.ToString(), Exception.GetType(), Exception.TargetSite, Exception.Message, Exception.Data, Exception.InnerException, Exception.HelpLink, Exception.Source, Exception.HResult, Exception.StackTrace, object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

The quota is read where the work begins, not only where the request comes in (429). A workflow that runs for hours would otherwise pass a quota that was spent in its first minutes. Only a start is refused: a node or a model call already in progress is never cut off, so a tenant can pass its limit by as much as the work that was running when the limit was reached.

This is a different fault from TraconRunBudgetExceededException, and the remedy differs. A run tree’s budget is a setting of the installation (Tracon:AgentGraph); a tenant’s quota resets when its period ends. Both end the run RunStatus.Failed in the class RunErrorClass.QuotaExceeded, and neither is retried by a workflow node’s retry policy.

The exception is not thrown to an agent that called a sub-agent: there the refusal comes back to the model as a tool result, as a spent run tree budget does.

Creates a new error.

public TraconTenantQuotaExceededException()

TraconTenantQuotaExceededException(string)

Section titled “ TraconTenantQuotaExceededException(string)”

Creates a new error.

public TraconTenantQuotaExceededException(string message)

message string

The error message.

TraconTenantQuotaExceededException(string, Exception)

Section titled “ TraconTenantQuotaExceededException(string, Exception)”

Creates a new error.

public TraconTenantQuotaExceededException(string message, Exception innerException)

message string

The error message.

innerException Exception

The underlying error.

The stable value written to TraconException.ErrorType.

public const string TenantQuotaExceededErrorType = "tenant_quota_exceeded"

string

Gets the stable error type name written to the run record.

public override string ErrorType { get; }

string

Defaults to the full name of the exception type, so today’s behaviour does not change. A derived type overrides this member when the record has to be machine readable — for example TraconContentFilteredException writes content_filtered. Reports and alert rules can rely on this stable name instead of an assembly name.

The value is written to RunError.Type and carries no secret.

Gets the limit that was reached, or null when the quota could not be verified.

public decimal? Limit { get; init; }

decimal?

Gets the metric whose limit was reached, or null when the quota could not be verified.

public QuotaMetric? Metric { get; init; }

QuotaMetric?

Gets the period whose limit was reached, or null when the quota could not be verified.

public QuotaPeriod? Period { get; init; }

QuotaPeriod?