Subject: [ldapext] Content Synchronization Operation + Transactions

From: Petr Spacek <[email-masked]>
Date: Wed, 03 Jun 2015 09:35:35 +0200

Hello,

it seems to me that LDAP Transactions (RFC 5805) are not perfectly integrated
into Content Synchronization Operation (RFC 4533).

Mainly the client has no idea what changes were part of single transaction. As
a result, client cannot replicate transactions reliably, especially when
connection drops in the middle of persist phase of Content Synchronization
Operation.

Also some clients could use the information where LDAP transaction
started/ended for application-level transactions (if the application uses the
data in real-time) or possibly some optimizations (if some application-level
work needs to be done after each group of updates).

I'm going to sketch -00 draft which will attempt to address this, probably by
adding new messages to indicate where transaction started and ended.
Naturally, this makes sense only for persist phase.

I would welcome early feedback about this idea even before the -00 is published.

Thank you very much for your time!

-- 
Petr Spacek  @  Red Hat

---

From: Petr Spacek <[email-masked]>
Date: Mon, 29 Jun 2015 14:07:53 +0200

> Naturally, this makes sense only for persist phase.

The 00 version of the draft is now available. I would really appreciate any
feedback!

Particularly, I'm not very sure that "transaction identifier" in "End
Transaction Notification Message" is the best idea.

The latest working version of the document is also available from Github:
https://github.com/pspacek/ietf-ldap-syncrepl-transactions

Pull requests are also more than welcome :-)

Petr^2 Spacek

-------- Forwarded Message --------
Subject: New Version Notification for
draft-spacek-ldapext-syncrepl-transaction-00.txt
Date: Mon, 29 Jun 2015 04:57:56 -0700
From: [email-masked]
To: Petr Spacek <[email-masked]>, Petr Spacek <[email-masked]>

A new version of I-D, draft-spacek-ldapext-syncrepl-transaction-00.txt
has been successfully submitted by Petr Spacek and posted to the
IETF repository.

Name:		draft-spacek-ldapext-syncrepl-transaction
Revision:	00
Title:		The Lightweight Directory Access Protocol (LDAP) Content
Synchronization Operation with Transactions
Document date:	2015-06-29
Group:		Individual Submission
Pages:		5
URL:
https://www.ietf.org/internet-drafts/draft-spacek-ldapext-syncrepl-transaction-00.txt
Status:
https://datatracker.ietf.org/doc/draft-spacek-ldapext-syncrepl-transaction/
Htmlized:
https://tools.ietf.org/html/draft-spacek-ldapext-syncrepl-transaction-00

Abstract:
   This document specifies LDAP Control which extends the persist stage
   of the Content Synchronization Operation with information about LDAP
   transaction boundaries.  This information can be used to support
   application-level transactions or for application-level
   optimizations.

---

From: Howard Chu <[email-masked]>
Date: Mon, 29 Jun 2015 13:23:30 +0100

> Transaction Notification Message" is the best idea.

Assuming a unique transaction identifier per transaction, I see no reason you 
couldn't allow interleaved transactions during persist stage. (Well, you would 
need to send the txnID along with every message, so that may be excessive 
overhead.) In OpenLDAP transactions would not be interleaved at execution time 
anyway so perhaps it's a non-issue.

On a slightly related note, I intend to submit an extension to RFC5805 adding 
a Prepare Transaction request. This would enable 2 phase commit, allowing us 
to support transactions spanning multiple DSAs. With OpenLDAP's back-ldap, 
back-meta, back-relay, and glue, the capability is sorely needed.

-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/