[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CAP 10: 10.1. CAP Commands (CMD) (ABORT/CONTINUE)
Doug replied on 02/04/2003 05:25:05 PM:
> CMD: ABORT
>
> Purpose: The "ABORT" command is sent to request
that the named or
> only in process command be aborted. Latency MUST
not be supplied
> with the "ABORT" command.
>
> Use ABORT as it has no restriction that it can only be sent after
> a timeout.
Hmmm. From Section 10.1.1 Bounded
Latency:
If the command is unable to be completed in the specified
amount of time (as specified by the "LATENCY" parameter value),
then a "TIMEOUT" command MUST BE sent on the same channel to
which there MUST BE a an "ABORT" or a "CONTINUE" command
reply. If the CUA initiated the original command, then the CS would issue
the "TIMEOUT" command and the CUA would then have to issue an
"ABORT" or "CONTINUE" command. [Snip]
Upon receiving an "ABORT" command, the command
must then be terminated.
The first bit implys (correctly or not)
that the ABORT command is sent in response to the TIMEOUT command.
Also since the ABORT command only applys
to the channel it is sent on, and the CS is already busy with an unbounded
command, I dont see that the ABORT will effect the unbounded command that
the CS is processing. I dont find any requirement that the CS process
pipelined commands out of order or concurrently. That is, if the
SEARCH is unbounded and then the sends an ABORT on the same channel, I
see no text/requirement that the ABORT command get acted on until the SEARCH
is done. Catch-22, the ABORT command wont be seen (since no TIMEOUT
command was sent by the CS and then waited for) until after the unbounded
command is done thus negating the need for ABORT..
I see that in Section 10.1.2 it says:
Purpose: The "ABORT" command is sent to
request that the named or only in process command be aborted.
so Im wondering if "only in process
command" is meant to refer to the current command on that channel
or to a command that has no ID (or both?)?...
Also, it talks of "the named...command"
so checking ABNF shows:
abortparam = *(
; the following are optional,
; but MUST NOT occur more than once
id-param
/ localize-param
; the following is optional,
; and MAY occur more than once
/ other-params
)
However, the definition
of id-param is:
id-param
= ";" "ID" "=" unique-id
; The text value
supplied is a unique value
; shared between
the CUA and CS to uniquely
; identify the
instance of command in the
; the current
CUA session. The value has
; no meaning to
other CUAs or other sessions.
Its intended use is to
sync up replys to commands (mainly in the event of multiple commands at
the same time but not even for single command cases too). In the
ABORT case it is NOT identifying the ABORT command but rather the other
command that the sender is trying to abort.
Some prose to this effect
should be added to the ABORT command so that its clear that CMD;ID="FizBin1":ABORT
is trying to indicate "Terminate the command named FizBin1 on this
channel" rather than identifying the ABORT command so that a response
can be matched up to it. This though is overloading id-param and
prevents the sender from being able to match up the proper XXX-reply to
the command..
After all, its possible
that the unbounded command FizBin1 completes before the ABORT command is
received. So then the ABORT sender has to decipher the responses:
BEGIN:VCALENDAR
TARGET:relcalid
CMD;ID=FizBin1:REPLY
VERSION:2.0
PRODID:-//someone's prodid
BEGIN:VREPLY
BEGIN:VEVENT
REQUEST-STATUS:4.1;Im sorry Dave\, I cant do that...
END:VEVENT
END:VREPLY
END:VCALENDAR
from
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//someone's prodid
TARGET:relcalid
CMD;ID=FizBin1:REPLY
BEGIN:VREPLY
REQUEST-STATUS:2.0.3;I did as you requested.
X-IBM-WIDGET:Command was
processed by CS1 within 10 seconds.
END:VREPLY
END:VCALENDAR
as belonging to the ABORT
command or the command that was asked to be aborted or to the command itself.
Can you match them up quickly and correctly?
> Minimum latency - no. 20 years ago 56K direct
internet was screaming fast.
> In 10 years 5 seconds may be too long. The CS can always send an
> error back when it can not handle the command.
Larrys case is not an issue with the
CS not being able to handle the command; its a desire to avoid having clients
just keep pecking at it with tiny CONTINUE values resulting in the CS spending
more time doing more TIMEOUT/ABORT/CONTINUE handling than actual CREATE/SEARCH/etc
command handling.
As the CS has to scale up to handle
thousands of users concurrently (ie: Enterprise sites) then having CUAs
all do CAP commands with tiny expected response times becomes a burden
to the CS. There is only so far that relying on very very beefy MP
boxes to efficiently handle lots of threads can take us.
I was merely asking Larry if he thought
that the needed to be some way for the CS have some say in the process
instead of letting the CUA be the sole source of control when deciding
acceptable latency values. I could see this as a useful GET-CAPABILITY
response.
For example, under light loads the CS
would send back "I should be able to process commands with a latency
value of 2 seconds just fine." but under peak loads it would send
back"I should be able to process commands with a latency value of
40 seconds just fine." That way the requesting CUA can at least
indicate to the CU that operations may take longer or even better, adjust
their "Continue for 10 seconds", "Continue for 30 seconds",
"Continue for 60 seconds" algorithms that Larry mentioned to
accomoate the CS's load.
All this is not unreasonable to consider,
especially if we plan to implement this on larger scale systems... I
am merely asking Larry if he thinks its something CAP needs.
> > Or perhaps you are thinking that bounded
> > latency is too much to do and that it should be optional entirely
(ie:
> > All CAP commands follow the existing POP3/IMAP/LDAP/etc model
of 'Its
> > done when its done and if you dont want to wait then leave.")??
>
> Adding latency is optional.
Yes it is and if the CS is busy processing
the unbounded command then its not going to be able to process the ABORT
command (see above). Thats why the peer protocols cited have no ABORT
analogs, they simply drop the link and reestablish it.
FMI: Can ABORT be used to cancel commands
that have no id-param? For example, if the CREATE command in Section
10.1.4 has no LATENCY or ID property parameters:
BEGIN:VCALENDAR
PRODID:-//someone's prodid
VERSION:2.0
CMD:CREATE
TARGET:cal.example.com
BEGIN:VAGENDA
CALID:relcalz1
NAME;LANGUAGE=en_US:Bill's Soccer Team
OWNER:bill
CALMASTER:mailto:bill@xxxxxxxxxxx
TZID:US/Pacific
END:VAGENDA
BEGIN:VAGENDA
CALID:relcalz2
NAME;LANGUAGE=EN-us:Mary's personal calendar
OWNER:mary
CALMASTER:mailto:mary@xxxxxxxxxxx
TZID:US/Pacific
END:VAGENDA
END:VCALENDAR
Just how would my CUA ABORT it? CMD:ABORT
on the same channel? Without requireing some form of command concurrent
processing or pipelining in the CS, this isnt doable. The only simple
solution is the one used in peer protocols (Disconnect/reconnect/reauthenticate)...
Bruce
PS: In
answer to my examples: The former response is the CS's response to the
unbounded command and then latter response is the response to the ABORT
command; both were taken from draft 10 12Jan2003 examples with just minor
tweaks...
==========================================================================
Bruce Kahn
INet: Bruce_Kahn@xxxxxxxxxxxxxxxx
Messaging & Collaboration
Phone: 978.399.6496
IBM Software Group
FAX: and nothing but the FAX...
Standard disclaimers apply, even where prohibited by law...