[
https://issues.apache.org/jira/browse/DISPATCH-1765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17186548#comment-17186548
]
Ken Giusti commented on DISPATCH-1765:
--------------------------------------
Hi Robbie,
Yes, assuming the format of the version string will be a simple semantic
version was not one of my proudest moments.
Here's the use case: we added a new feature in this release that allows a
router to proactively create new outgoing links to a peer router as needed.
Routers running previous releases do not handle the creation of additional
links, so we needed some way of informing the sending router that its peer
does/does not support accepting new inter-router links.
This new functionality is not a hard requirement - if a router detects that its
peer does not have this new functionality it simply avoids opening extra links.
This was the reason we checked the peer router's software version.
That said we'd like the option of using this feature with non-router peers
should a use case arise. Yet an additional reason to avoid a version check.
Seemed like the offered/desired capability exchange in the Open performative
was a better approach.
So as you pointed out the correct way of implementing this would be to put the
capability in both the desired and offered fields in the Open frame. Previous
releases of the router code never checked these fields so there's no risk in
that approach.
Would you agree that having the router set these capabilities when connecting
to non-router endpoints should be safe as well, as a generic endpoint should
ignore offered/desired capabilities it does not recognize? I'm thinking of
setting the capability regardless of what kind of peer the router is connected
to in order to allow any endpoint the option of accepting additional links if
desired.
> Router version parsing is broken
> --------------------------------
>
> Key: DISPATCH-1765
> URL: https://issues.apache.org/jira/browse/DISPATCH-1765
> Project: Qpid Dispatch
> Issue Type: Bug
> Affects Versions: 1.13.0
> Reporter: Ken Giusti
> Assignee: Ken Giusti
> Priority: Major
> Fix For: 1.14.0
>
>
> The version string advertised by the router in the Open performative may be
> parsed incorrectly if a non-semantic format is used (e.g. a git commit sha).
> Currently the router uses the router version of its peer in order to
> determine if the peer supports certain features like streaming links.
> Two changes proposed to solve this:
> 1) do not attempt to parse the version string arriving in the Open
> performative. Treat it as opaque ascii data.
> 2) Add router-defined capabilities and advertise them in the
> offered-capabilities field of the Open performative.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]