-
Key: OTS-35
-
Legacy Issue Number: 3991
-
Status: closed
-
Source: Hewlett-Packard ( Peter Furniss)
-
Summary:
This is a re-summarising of the interworking problem that came out in the
discussion of 3916. It is definitely NOT intended to destabilise the 3425
result, but to clarify a corner condition. I've tried to be precise rather
than brief, though I've undoubtedly misused some terms somewhere.—
To identify some text that needs changing: the first sentence of the
following paragraph (middle of page 10-72 of 00-09-04) is not consistent
with the rest of the text:OTS 1.1 clients may not interoperate with OTS 1.2 servers unless they
unconditionally
propagate the transaction context. (TF) The OTS 1.2 server determines the
proper
OTSPolicy from the TAG_OTS_POLICY component in the IOR.—
And the situation in general, for 1.1 client, 1.2 server, for a target
object that is transaction-naive, with client in an active transactionFirst, if both sides were 1.1, target would not inherit from TO
On most 1.1 implementations, client invocation-path would
drop/suspend the context.
Some implementations ("promiscuous") would send context.1.1 server - some implementations would drop/not apply/suspend a
received context; some would just apply the received context (or an
interposed context derived from it) to the thread - this was assumed not to
matter for 1.1 [the 3425 discussion said this was a bug or close to a bug];
some would fault a received context with an exception. (configuration
options could switch between these in some implmentations (ours, at least))With 1.2 server as we are now (00-09-04)
target's POA will have OTSPolicy of FORBIDS (often by default)1.1 non-promiscuous will not send context as before - no problem
1.1 promiscuous will send context1.2 server is required to fault the receipt of a propagation context
on the FORBIDS POA - it MUST throw an exception (INVALID_TRANSACTION).This would mean a client ap within an active transaction on a promiscuous
1.1-ots platform cannot invoke a non-transactional object on a 1.2-ots.There is no problem with transaction-using objects, provided the IDL
continues to inherit from TO, even on the 1.2 server. Promiscuous 1.1
clients will send anyway; non-promiscuous will narrow to TO and send the
context.So - the TransactionalObject inheritance mechanism works for non-promiscous
1.1 clients, but not for promiscuous.
One possible solution would be to allow a setting on the server side
equivalent in effect to the NonTxTargetPolicy PREVENT/PERMIT - if set to
"lenient", it would silently remove the received context. Under no
circumstances would the context remain associated with the thread. (Note
this would be a quite different policy from the existing NonTxTargetPolicy
which affects only client-side behaviour and is for the benefit of client
application writers - this would be server-side only, mostly for the benefit
of interworking). This server-side setting could be a private configuration
switch, but that would be effectively have values "conformant" and
"useful" - which I think it is agreed is really, really bad. Making it yet
another policy would seem better.Another "solution" would be to confirm that promiscuous 1.1 won't interwork
with 1.2.—
In any case, the paragraph in 10-72 needs changing.If we choose to reject the interworking, just change "unless" in the first
sentence of the paragraph to "if" (i.e. reverse the sense)If we add a server-side policy, the 10-72 the paragraph might become
something like:OTS 1.1 clients can interoperate with OTS 1.2 servers in the following
circumstances:a) if the client propagates the context only if the target derives
from TO, then interoperation for both t and non-t target objects will be
possible, provided the target object's idl inherit from TO;b) if the client always propagates the context (if in a T),
interoperation will be possible for t objects regardless of inheritance;c) if the client always propagates the context, interoperation for
non-t objects will only be possible if the the server setting
UnwantedCtxPolicy is MAKERIGHT. Interworking in this case is not possible if
the UnwantedCtxPolicy is REJECT.(deliberately choosing a slightly derogatory name for the moment !)
Of course, if UnwantedCtxPolicy is set to MAKERIGHT, it becomes possible
(i.e. it would work) to have the OTSPolicy checking at the client be
optional. But that would mean that contexts were also being sent to
OTS-unaware ORBs, which has been held to be undesirable, though for reasons
that are obscure. -
Reported: OTS 1.0b1 — Mon, 23 Oct 2000 04:00 GMT
-
Disposition: Resolved — OTS 1.0
-
Disposition Summary:
see above
-
Updated: Fri, 6 Mar 2015 20:57 GMT
OTS — ots 1.1 client to 1.2 server interworking
- Key: OTS-35
- OMG Task Force: Additional Structures for OTS FTF