Skip to main content

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.PoolTenantId 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โ€‹

PoolTenantIdโ€‹

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 PoolTenantId { get; set; }

Property Valueโ€‹

String

PoolRtIdโ€‹

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

public string PoolRtId { 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

Constructorsโ€‹

PoolMemberRegistrationDto()โ€‹

public PoolMemberRegistrationDto()