RE: LCUP and PSearch on Sync-And-Persist

"Timothy Hahn" <[email protected]>
Newsgroups gmane.ietf.ldup
Message-ID <[email protected]>

Jeff and Rich,

Thanks for your consideration on this topic.

I went back and reviewed the draft to brush up on the general aspects of
the protocol definition.

I still have some questions regarding how the original intentions can be
satisfied.

I see two issues:

1) How are "intermediate updates" to be handled by implementations?  I
suspect that this may be wound up in a server's implementation of the
"state" represented by the "cookie" value and the draft may leave this as
an "excercise for the implementer". If so, I think it would be to
everyone's advantage that the draft indicate "beware - invention required
here" on this topic.  For example: if the "cookie" value changes relatively
often (so that client's presumably don't have to re-start from scratch all
the time), and an update to an entry is received on one thread while a LCUP
session is "in process" on another, it is problematic for the server
implementation to merely send the "updated entry" in the middle of the
"synchronize" data stream for the client.  If this occurs, and the "cookie"
is updated ... depending on the "cookie format", lots of data could be
missed on a re-driven synchronization request.

2) How is a client supposed to know when they're "close"?  I believe the
algorithm you've listed below, using the final "cookie" from the
"synchronizeOnly" session as the "starting point" for the
"synchronizeAndPersist" session, can work (assuming the server understands
this, of course, and the client is careful to re-use the last "cookie"
value from the first LCUP session).  Again, the dangers in "intermediate
updates" should be considered - for example, should server implementations
send "intermediate updates" if "synchronizeOnly" is specified?

Since "cookies" are to be used "across" LCUP sessions, it seems to strongly
suggest that they be related to some form of timestamp.  (I know it's not
required, but establishing "what has changed since I sent this client this
'cookie'" seems to lead one to see that there has to be some time component
to the "cookie" - if only there is a table in the server implementation
which relates the cookie value to some time and space point.  But this gets
into trouble depending on which cookie values are "remembered" by the
client especially if "intermediate updates" flow in the middle of the LCUP
session.

One more point - since the protocol indicates that the response to the
client is in the form of a searchResultEntry, this implies that for entries
with attributes that have a large number of values, small changes to those
attributes will require large data transfers over LCUP sessions.  It would
be good to note this in the LCUP draft as a consideration for
implementors/users of the protocol.

Regards,
Tim Hahn

Internet: [email protected]
Internal: Timothy Hahn/Endicott/IBM@IBMUS or IBMUSM00(HAHNT)
phone: 607.752.6388     tie-line: 8/852.6388
fax: 607.752.3681



                                                                                                                                           
                      "Jeff Parham"                                                                                                        
                      <[email protected]        To:       "Kurt D. Zeilenga" <[email protected]>, "Rich Megginson" <[email protected]> 
                      rosoft.com>                  cc:       "Mark C Smith" <[email protected]>, Timothy Hahn/Endicott/IBM@IBMUS,           
                                                    <[email protected]>                                                                    
                      04/05/2002 11:39 AM          Subject:  RE: LCUP and PSearch on Sync-And-Persist                                      
                                                                                                                                           
                                                                                                                                           
                                                                                                                                           



What is the scenario in which a client needs to do something special on
receipt of the "in sync" notification?

The only one I can see is on an "initial sync," where some clients might
want to know they have a reasonably complete set of search results as
they existed in the recent past (excepting loose consistency due to
replication latency between DSAs, etc.).  In such a case the client
could initially use a synchronizeOnly LCUP exchange with the DSA, then
switch to synchronizeAndPersist for future LCUP interactions.

The example scenario cited by Mircea -- ensuring the client has a
consistent view across many objects -- is not one that can or should be
solved through LCUP.  The solution to this problem is the use of
application versioning of objects.  Many strategies for this exist --
e.g., those detailed at
http://msdn.microsoft.com/library/en-us/netdir/ad/detecting_and_avoiding
_replication_latency.asp.

In short, I am not yet convinced that the currently specified behavior
of LCUP in this area is deficient.

-J

-----Original Message-----
From: Kurt D. Zeilenga [mailto:[email protected]]
Sent: Thursday, April 04, 2002 10:12 AM
To: Rich Megginson
Cc: Mark C Smith; Timothy Hahn; [email protected]
Subject: Re: LCUP and PSearch on Sync-And-Persist


At 09:07 AM 2002-04-04, Rich Megginson wrote:
>"Kurt D. Zeilenga" wrote:
>
>> There are many clients which need to know they are 'in sync'.
>> I note that this is not just after the initial 'sync up' phase,
>> but subsequently.  Also, there are cases where the server
>> needs to update the cookie without sending an update (in the
>> 'persist' phase.
>>
>> I suggest that we add a 'in sync' notification to LCUP.  Basically,
>> just a (intermediate) response PDU which says "you're in sync"
>> and, OPTIONALLY, provides a new cookie.
>>
>> The server should send one when it has sent all changes necessary
>> to 'sync' the client.  The server may send them subsequently to
>> again notify the client it is 'in sync'.
>
>But what exactly does 'sync' mean?

It means that the server has sent all the messages necessary for
the client to have a complete and accurate copy of the requested
(and provided) information.

>Does this mean 'all changes between the time I last connected and the
time I connected for this
>session'?

It means all the changes necessary to have a complete and accurate
copy of the requested (and provided) information.

>Because changes may come in to the server during the sync phase.

The server may send them or queue them or possible use other
approaches.

>What should happen to these changes?  Or should those
>entries be included?  What if the server is under a heavy update load
and never gets to the end of the sync phase?

If it never reaches the 'in sync' condition, it never should sent
the 'in sync' message.

I think we should get away from this 'sync'/'persist' phase
business and look at this simply as a sequence up messages which
'updates' entries of interest.  When the sequence of updates
sent is known to reflect the server's current state (for all
entries of interest), the server sends an 'in sync' message
notifying the client of this.

The initial 'in sync' message should be sent as soon as the
all the changes necessary to be 'in sync' have be sent.
Subsequent 'in sync' messages can be sent whenever the
server desires to send them.

Kurt
Kurt
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.