Zum Hauptinhalt springen

AdapterPoolQueueEntryDto

Namespace: Meshmakers.Octo.Communication.Contracts.DataTransferObjects

One entry of an adapter pool's queue, as every surface reads it β€” GET {tenantId}/v1/adapterPool/{adapterPoolRtId}/queue (AB#4924, increments 7 and 8).

public class AdapterPoolQueueEntryDto

Inheritance Object β†’ AdapterPoolQueueEntryDto

Remarks:

πŸ”΄ There is no global rank field, and adding one would be a lie. The pool serves borrowing tenants round-robin, so the only truthful answer is the pair AdapterPoolQueueEntryDto.PositionInTenant + AdapterPoolQueueEntryDto.TenantsAheadInRotation: where this item sits inside its own tenant's queue, and how many other tenants take a turn first. A single number would contradict the order work actually runs in (concept Β§5 "Fairness", implementation plan Β§9.2).

πŸ”΄ Mirrors the controller's own Models/AdapterPoolQueueEntryDto one-to-one. It is a separate declaration rather than a shared one because the controller does not take this package for its own response models; keep the two in step when either changes.

A GraphQL query cannot serve this shape: the two position numbers are the scheduler's rotation cursor β€” process state, not entity state β€” and the entries span tenant databases, the pool belonging to the lender and every execution to a borrower.

Properties​

ExecutionId​

The borrower's execution id.

public string ExecutionId { get; set; }

Property Value​

String

BorrowerTenantId​

The tenant whose work this is.

public string BorrowerTenantId { get; set; }

Property Value​

String

PipelineRtId​

RtId of the pipeline to run, when the association resolves.

public string PipelineRtId { get; set; }

Property Value​

String

PipelineName​

Display name of that pipeline.

public string PipelineName { get; set; }

Property Value​

String

ExecutionClass​

0 Interactive, 1 Batch. Interactive is served first within this tenant's turn and has no effect at all across tenants. An int and not an enum for the same reason as NodeDescriptorDto.ExecutionClass: a value the reading side does not know must deserialize rather than throw.

public int ExecutionClass { get; set; }

Property Value​

Int32

QueuedAtUtc​

When the work item entered the queue.

public DateTime QueuedAtUtc { get; set; }

Property Value​

DateTime

PositionInTenant​

1-based position inside this tenant's own queue; 0 once the item is leased.

public int PositionInTenant { get; set; }

Property Value​

Int32

TenantsAheadInRotation​

How many other borrowing tenants with queued work are served before this tenant's next turn; 0 once the item is leased.

public int TenantsAheadInRotation { get; set; }

Property Value​

Int32

LeasedOnMemberId​

The pool member holding this item, or null while it waits. Nothing enforces referential integrity on this value β€” it may name a process that no longer exists (implementation plan Β§12.1) β€” so render it, never resolve it.

public string LeasedOnMemberId { get; set; }

Property Value​

String

LeaseExpiresAtUtc​

When the holding lease expires; null while the item waits.

public Nullable<DateTime> LeaseExpiresAtUtc { get; set; }

Property Value​

Nullable<DateTime>

IsLeased​

Whether this entry is already running on a pool member. A leased entry cannot be cancelled through the queue verb β€” that would be interrupting a running pipeline, a different operation (concept Β§5 "Cancellation").

public bool IsLeased { get; }

Property Value​

Boolean

Remarks:

Derived, and kept off the wire: the controller serialises this same type, and a computed member would add a field to the response that says nothing the caller cannot read from AdapterPoolQueueEntryDto.LeasedOnMemberId.

Constructors​

AdapterPoolQueueEntryDto()​

public AdapterPoolQueueEntryDto()