[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [ws-rx] i119: EPR comparisons overly restrictive
Couple of points: 1) What about the second case of EPR comparison (the MakeConnection stuff)? Don't know the status of that, but if you want the full control over new sequences etc outlined in the IBM proposal, then you have an identification issue, and in an area which is (very) sensitive to false negatives. But, the function of the id I am suggesting is actually the same in both cases: identify who you are talking to. Might generate less engineering. 2) Not sure about your comments on char-for-char. In the URI case that the RFCs discuss, there is a concept of "string". But the ref params are completely opaque. Can you do anything safe other than literally compare bit for bit? Alastair Jonathan Marsh wrote: That sounds workable to me. My preference, having been involved in enough over-engineered standards work that was subsequently punished by the industry, remains for the minimum necessary to declare victory. A new mechanism that optionally facilitates the use of an optional optimization still seems like overkill to me. And FWIW, I consider bit-for-bit (more precisely, char-for-char) as a respectable choice for a comparison algorithm. It will generate a fair amount of false negatives but is dead simple to implement.-----Original Message----- From: Alastair Green [mailto:alastair.green@choreology.com] Sent: Tuesday, May 23, 2006 10:00 PM To: Jonathan Marsh Cc: Anish Karmarkar; ws-rx@lists.oasis-open.org Subject: Re: [ws-rx] i119: EPR comparisons overly restrictive Jonathan, Looking over the wall from my usual habitat in TX, I've been followingallof this for a while, because of related issues dealt with in TX. Aquickthought follows. Apologies in advance if it duplicates ormisunderstands.Perhaps you could walk right round this by defining an RX WS-Aextensionelement, which is of a clearly comparable type, and globallyunambiguous,e.g. absolute URI. "Interlocutor identity", "endpoint equivalencemarker"or some such. If EPR A and EPR B (or EPR A') have such an element, both with valueof"foo" then you can send ack to EPR A on a message to EPR B. You couldre-use this same id for the client identification issue forMakeConnectiontoo: reply EPR = anon/polling + interlocutor id. I think you're right, that in this particular context where false negatives are just deoptimizations of the attempted optimization, "guessing the EPR equivalence" will work, and will, by evolution,chuckout the bad guessers ( in reality, push most implementations to the conservative case of EPR comparison, e.g. bit-for-bit for [address]and[ref params], or indeed to abandon the optimization). In the client id case for GetMessage/MakeConnection I think you havetheproblem that false negatives are dangerous. If you misidentify arequestto respond as coming from e.g. an unknown client then the two sideswillfreeze up. Overall, there seems to be a latent concept of "party to aconversation",which might usefully be surfaced. Alastair Jonathan Marsh wrote: I think you and I are pretty close on this. We seem to agreethatit is desirable to allow a range of options from no optimization, to a simple bit-for-bit comparison (though there may even be flavors ofthis),through a canonicalized approach, through to what I'll callsemanticequivalence. An implementation should be free to choose thelevelit wishes to invest in, with the understanding that the more you invest, the more optimization dividends you receive. We don't seem to agree on the value of providing a non-normative snapshot of a comparison algorithm in this spec. IMO, such an algorithm is likely to miss the sweet spot, provide an illusion of interoperability when in fact it's just documentation of an implementation detail, and consume a lot of TC time to work out details, consume a lot of reader time to, and increase the burden ofongoingmaintenance of the spec. I don't have a problem addressing the specific issue raisedduringinterop that reference parameters should be considered when determining EPR equivalence. I think the simplest way to address this issueisby adding a simple warning to implementers along the lines of:"Notethat reference parameters should be considered when determining EPR equivalence." In this case the "very least" is perfectly sufficient. -----Original Message----- From: Anish Karmarkar[mailto:Anish.Karmarkar@oracle.com]Sent: Monday, May 22, 2006 7:25 PM To: Jonathan Marsh Cc: ws-rx@lists.oasis-open.org Subject: Re: [ws-rx] i119: EPR comparisons overlyrestrictiveThese are all very good point. But from them I don't necessarily conclude that weshould notdefine an EPR comparison algorithm. 1) WRT to false negatives: I don't think false negativesarethemselves a problem -- they result in one not being able toutilize theoptimization. I would hope that if we define acomparisonalgorithm, it would be stated in a way that would *not* prevent anyonefromdefining additional mechanisms to figure out equivalence. For example, if 2 EPRs are bit for bit the same thenthey arethe same. If they are not (in absence of an equivalencealgorithm), thenone cannot make any statement about the equivalence (theymay beequivalent or not, one just doesn't know). There may be additional metadata that tells me that they are (or not). For example, I may knowthathttp://www.w3.org and http://www.w3c.org are the same.Oneshould be able to add additional criterion (than the one that wedefinein WSRX, if we do at all) to figure out equivalence. 2) WRT to 3a and 3b: if we define a comparisonalgorithm, animplementation is not (or should not be) forced to usethem.It may choose to ignore it (and only use, say, bit-for-bit comparison) at the cost of extra messages and a saving on processing. OR ifit iswilling to put additional resources to prevent extra messages,it mayuse additional criterion on top of what we define. One of the feedbacks that I got from the interop wasthat someimplementations ignore refps when figuring outequivalence --this is quite bad for interop. If we don't define an equivalence algorithm, at the very lease we should include a warning about EPR comparisons and pitfalls. -Anish -- Jonathan Marsh wrote: I don't have any religious objection to definingEPRcomparison mechanisms in specific circumstances (asWS-Addressingallows), but in this case I fail to see why defining such amechanism isa good thing. In fact it seems harmful. 1) Piggybacking is an optimization, although an important one. Failure to correctly determine that two EPRs areequivalent forthe purposes of piggybacking eliminates the possibility tobenefit fromthe optimization. The nature of the optimization isinreducing the number of messages sent on the wire. 2) EPR comparison is tricky: a) URI comparison is notoriously difficult,unless theURI is simply an identifier (e.g. namespace URI) and notprimarilyintended to be dereferenced, in which case simple stringcomparisonsuffices. I don't believe this will suffice for [address] propertyvalues.The current reference to 2396 is confusing and inadequate to describe how URIs are to be compared. Seehttp://www.ietf.org/rfc/rfc3987.txtsection 5 for a more thoughtful (and applicable) explanation ofwhythere isn't a single right mechanism. b) Comparing canonicalized representations of reference parameters is also difficult. There might be a broad set ofallowablemanipulations to reference parameters that result in falsepositives,e.g. annotating a ref param with an extension attribute (evenWS-A doesthat). 3) Despite the choices made above, bothcomponents ofthe proposed EPR comparison can result in false negatives.Trading offcomplexity of the comparison algorithm versus the amount ofoptimizationis a choice that should be left to implementations. a) Canonicalization and full IRI normalizationarefairly expensive. Some implementations may prefer a simplermechanism,with correspondingly higher false negative rates. b) Network messaging is fairly expensive. An implementation wishing to expend extra computational resources tominimize thenetwork traffic should be free to implement as comprehensive a comparison mechanism as they like. A standardized EPR comparison mechanism writesinto thestandard optimization choices that should be left to implementers, and would force some implementations to become needlessly(fromtheir perspective) complex, and others to dumb-down and missopportunitiesfor better optimizations. Some seem to fear incorrectly piggybacking messages not destined to the message recipient, which isagain animplementation issue (a bug) which the market will easily sortout. |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]