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β
AdapterPoolRtIdβ
RtId of the AdapterPool in PoolMemberRegistrationDto.AdapterPoolTenantId. Bare 24-character hex.
public string AdapterPoolRtId { get; set; }
Property Valueβ
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β
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β
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β
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()