Zum Hauptinhalt springen

PoolMemberRegistrationDto

Namespace: Meshmakers.Octo.Communication.Contracts.DataTransferObjects

A pool member introducing itself on /adapterPoolHub (AB#4924, concept Β§4).

public record PoolMemberRegistrationDto : IEquatable<PoolMemberRegistrationDto>

Inheritance Object β†’ PoolMemberRegistrationDto
Implements IEquatable<PoolMemberRegistrationDto>

Remarks:

πŸ”΄ This connection is not tenant-addressed, and that is the whole point. A pool member belongs to no tenant; it is handed one per lease. The declared PoolMemberRegistrationDto.AdapterPoolTenantId is the lending tenant β€” the owner of the pool β€” which is what the connection is authorized against (concept Β§8, Q4). Authority over a borrower comes from the lease, never from this connection.

PoolMemberRegistrationDto.MemberId is proposed by the member rather than assigned by the controller because it has to survive a reconnect: it is what a borrower's execution records as LeasedOnMemberId, and a value that changed on every network blip would make the per-member queue view (concept Β§5) unreadable. A pod name is the natural value.

πŸ”΄ replaced an earlier NodeNames string list. A bare name cannot answer any of the questions the borrower's deploy path asks: the execution class of a trigger, whether a trigger is process-bound, which node version is present, or what the configuration schema of a node looks like. The member already builds full descriptors for the dedicated registration path, so sending them here is reuse, not a second source. The old field was never populated by any member and never read by any controller, so nothing on the wire carried it in either direction.

Properties​

AdapterPoolTenantId​

The tenant that owns the AdapterPool this member belongs to β€” the lender. The hub refuses a registration whose declared tenant is not the one the connection's token was issued for.

public string AdapterPoolTenantId { get; set; }

Property Value​

String

AdapterPoolRtId​

RtId of the AdapterPool in PoolMemberRegistrationDto.AdapterPoolTenantId. Bare 24-character hex.

public string AdapterPoolRtId { get; set; }

Property Value​

String

MemberId​

Stable identity of this member process across reconnects. Recorded on every execution the member serves as LeasedOnMemberId.

public string MemberId { get; set; }

Property Value​

String

NodeDescriptors​

The pipeline nodes this member can execute, in exactly the shape a dedicated adapter reports on RegisterAdapterWithSchemaAsync.

public IReadOnlyList<NodeDescriptorDto> NodeDescriptors { get; set; }

Property Value​

IReadOnlyList<NodeDescriptorDto>

Remarks:

The controller stores them per pool so a borrowing tenant's deploy path can resolve an execution class and classify process-bound triggers against the process that will actually run the pipeline. A member that reports none degrades to the controller's name-based fallback β€” the same degradation a dedicated adapter that never connected produces β€” and stays leasable.

PipelineSchemaJson​

The composite pipeline JSON Schema this member validates against, or null when it cannot produce one. Same value a dedicated adapter sends on registration; the controller validates a leased pipeline definition against it at deploy time, because validating against no schema at all is worse than validating against the pool's.

public string PipelineSchemaJson { get; set; }

Property Value​

String

ActiveLease​

The lease this member is still running, or null while it is idle (AB#5826). Only read by IAdapterPoolHub.ResumePoolMemberAsync; RegisterPoolMemberAsync ignores it.

public PoolMemberActiveLeaseDto ActiveLease { get; set; }

Property Value​

PoolMemberActiveLeaseDto

Remarks:

πŸ”΄ It is deliberately not honoured by RegisterPoolMemberAsync: a controller built before AB#5826 ignores unknown members, so a member that announced its lease there would be registered as idle and handed the next lease at once β€” which it must refuse, failing that borrower's execution. The separate method makes an older controller answer "unknown method" instead, and the member falls back to deferring its registration as before.

Constructors​

PoolMemberRegistrationDto()​

public PoolMemberRegistrationDto()