Details
-
Task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Currently the AbstractVirtualHost has a Map<remoteContainerId, LinkRegistry>.
The handling of the remoteContainerId should also be encapsulated in the LinkRegistry giving each VH only a single LinkRegistry.
The LinkRegistry is responsible for ensuring Link uniqueness and persistence (separate JIRA).
Furthermore, the following change to the LinkRegistry is proposed:
- LinkRegistry.getSendvingLink(String remoteContrainerId, String linkName) -> Link
- LinkRegistry.getReceivingLink(String remoteContrainerId, String linkName) -> Link
These should always return a non-null Link. The caller (session) is responsible for checking that the link has valid Source and Targets.
They also need to be thread-safe (e.g., two calls with the same arguments should return the same object).
The LinkRegistry should also provide facilities to the Link to remove itself from the Registry (for example on Link close, or error) and to update the Termini upon resuming a Link.
If possible this should not be part of the public API. possible API:
- LinkRegistry.removeSendingLink(String localContainerId, String remoteContrainerId, String linkName)
- LinkRegistry.removeReceivingLink(String localContainerId, String remoteContrainerId, String linkName)
- LinkRegistry.updateLinkTermini(Link link, Source source, Target target)
The implementation of which must be thread-safe because the LinkRegistry will be accessed on multiple threads concurrently.
Attachments
Issue Links
- is depended upon by
-
QPID-7659 [Java Broker, AMQP 1.0] Support Link stealing
- Closed
-
QPID-7660 [Java Broker] When recovering a AMQP 1.0 Link the Terminus should be recovered from the LinkRegistry
- Closed
- is related to
-
QPID-7540 [Java Broker] The broker cannot recover durable Consumers (AMQP 1.0) which leaves it in an ERRORed state
- Closed
-
QPID-7663 [Java Broker] Implement persistent storage of LinkRegistry
- Closed
- relates to
-
QPID-7657 [Java Broker] Move handling of DeliveryState to Termini
- Open