andykimpe / rpms / 389-ds-base

Forked from rpms/389-ds-base 8 months ago
Clone

Blame 0383-Ticket-48636-Improve-replication-convergence.patch

dc8c34
From da3465fea52c2c9b2c7c17848e965ef873263a36 Mon Sep 17 00:00:00 2001
dc8c34
From: Mark Reynolds <mreynolds@redhat.com>
dc8c34
Date: Wed, 8 Jun 2016 13:06:46 -0400
dc8c34
Subject: [PATCH 383/386] Ticket 48636 - Improve replication convergence
dc8c34
dc8c34
Bug Description:  In a busy MMR environment where multiple masters are being
dc8c34
                  updated at the same time the replica sessions stay open for
dc8c34
                  a very long time.  This causes other masters to wait to send
dc8c34
                  their updates.  This causes lop-sided convergence.  Where
dc8c34
                  entries added to the MMR environment, but on different masters,
dc8c34
                  take a very different amount of time until they are each seen
dc8c34
                  on all the replicas.
dc8c34
dc8c34
Fix Description:  A new configuratoin setting was added (nsds5ReplicaReleaseTimeout)
dc8c34
                  to the replica configuration entry.  So when replica A tries
dc8c34
                  to acquire a replica B, replica B send a control back to the
dc8c34
                  master(master C) that is updating replica B to abort the session.
dc8c34
                  Master C will continue sending updates for the amount of time
dc8c34
                  specified in the the "release timeout", then it will "yield" its
dc8c34
                  current session so other replicas can acquire that replica.
dc8c34
dc8c34
https://fedorahosted.org/389/ticket/48636
dc8c34
dc8c34
Reviewed by: lkrispen & nhosoi(Thanks!!)
dc8c34
dc8c34
(cherry picked from commit a1545cdae48e4b4e1fc87a168e4d8f959626f112)
dc8c34
(cherry picked from commit f223b500264d00c5c2b97bf903bd501be1487afe)
dc8c34
(cherry picked from commit 2fc070e233c904ab0514527e73da28b2f0af10bb)
dc8c34
(cherry picked from commit 417c1504c872afac3f8727b8ba238fcebc6aa61d)
dc8c34
---
dc8c34
 ldap/schema/01core389.ldif                         | 156 ++++++++++++++++++++-
dc8c34
 ldap/servers/plugins/replication/repl5.h           |  16 ++-
dc8c34
 .../plugins/replication/repl5_inc_protocol.c       |  99 +++++++++----
dc8c34
 ldap/servers/plugins/replication/repl5_plugins.c   |   3 +-
dc8c34
 ldap/servers/plugins/replication/repl5_replica.c   | 143 +++++++++++++++----
dc8c34
 .../plugins/replication/repl5_replica_config.c     |  22 +++
dc8c34
 ldap/servers/plugins/replication/repl_globals.c    |   1 +
dc8c34
 7 files changed, 383 insertions(+), 57 deletions(-)
dc8c34
dc8c34
diff --git a/ldap/schema/01core389.ldif b/ldap/schema/01core389.ldif
dc8c34
index f8924fa..739750e 100644
dc8c34
--- a/ldap/schema/01core389.ldif
dc8c34
+++ b/ldap/schema/01core389.ldif
dc8c34
@@ -153,8 +153,162 @@ attributeTypes: ( 2.16.840.1.113730.3.1.2152 NAME 'nsds5ReplicaProtocolTimeout'
dc8c34
 attributeTypes: ( 2.16.840.1.113730.3.1.2154 NAME 'nsds5ReplicaBackoffMin' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
 attributeTypes: ( 2.16.840.1.113730.3.1.2155 NAME 'nsds5ReplicaBackoffMax' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
 attributeTypes: ( 2.16.840.1.113730.3.1.2156 NAME 'nsslapd-sasl-max-buffer-size' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+<<<<<<< HEAD
dc8c34
 attributeTypes: ( 2.16.840.1.113730.3.1.2310 NAME 'nsds5ReplicaFlowControlWindow' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' ) 
dc8c34
 attributeTypes: ( 2.16.840.1.113730.3.1.2311 NAME 'nsds5ReplicaFlowControlPause' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' ) 
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2332 NAME 'allowWeakDHParam' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+=======
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2165 NAME 'schemaUpdateObjectclassAccept' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2166 NAME 'schemaUpdateObjectclassReject' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2167 NAME 'schemaUpdateAttributeAccept' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2168 NAME 'schemaUpdateAttributeReject' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2169 NAME 'nsslapd-pagedsizelimit' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2170 NAME 'nsslapd-accesslog-level' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2171 NAME 'nsslapd-accesslog-maxlogsperdir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2172 NAME 'nsslapd-accesslog-maxlogsize' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2173 NAME 'nsslapd-errorlog-maxlogsize' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2174 NAME 'nsslapd-auditlog-maxlogsize' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2175 NAME 'nsslapd-accesslog-logrotationsync-enabled' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2176 NAME 'nsslapd-errorlog-logrotationsync-enabled' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2177 NAME 'nsslapd-auditlog-logrotationsync-enabled' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2178 NAME 'nsslapd-accesslog-logrotationsynchour' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2179 NAME 'nsslapd-errorlog-logrotationsynchour' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2180 NAME 'nsslapd-auditlog-logrotationsynchour' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2181 NAME 'nsslapd-accesslog-logrotationsyncmin' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2182 NAME 'nsslapd-errorlog-logrotationsyncmin' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2183 NAME 'nsslapd-audit-logrotationsyncmin' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2184 NAME 'nsslapd-accesslog-logrotationtime' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2185 NAME 'nsslapd-errorlog-logrotationtime' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2186 NAME 'nsslapd-auditlog-logrotationtime' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2187 NAME 'nsslapd-accesslog-logrotationtimeunit' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2188 NAME 'nsslapd-errorlog-logrotationtimeunit' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2189 NAME 'nsslapd-auditlog-logrotationtimeunit' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2190 NAME 'nsslapd-accesslog-logmaxdiskspace' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2191 NAME 'nsslapd-errorlog-logmaxdiskspace' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2192 NAME 'nsslapd-auditlog-logmaxdiskspace' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2193 NAME 'nsslapd-accesslog-logminfreediskspace' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2194 NAME 'nsslapd-errorlog-logminfreediskspace' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2195 NAME 'nsslapd-auditlog-logminfreediskspace' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2196 NAME 'nsslapd-accesslog-logexpirationtime' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2197 NAME 'nsslapd-errorlog-logexpirationtime' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2198 NAME 'nsslapd-auditlog-logexpirationtime' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2199 NAME 'nsslapd-accesslog-logexpirationtimeunit' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2200 NAME 'nsslapd-errorlog-logexpirationtimeunit' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2201 NAME 'nsslapd-auditlog-logexpirationtimeunit' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2202 NAME 'nsslapd-accesslog-logging-enabled' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2203 NAME 'nsslapd-errorlog-logging-enabled' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2204 NAME 'nsslapd-auditlog-logging-enabled' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2205 NAME 'nsslapd-auditlog-logging-hide-unhashed-pw' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2206 NAME 'nsslapd-unhashed-pw-switch' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2207 NAME 'nsslapd-rootdn' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2208 NAME 'nsslapd-rootdnpw' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2209 NAME 'nsslapd-rootpwstoragescheme' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2210 NAME 'nsslapd-auditlog' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2211 NAME 'nsslapd-dynamicconf' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2212 NAME 'nsslapd-useroc' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2213 NAME 'nsslapd-userat' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2214 NAME 'nsslapd-svrtab' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2215 NAME 'nsslapd-allow-unauthenticated-binds' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2216 NAME 'nsslapd-require-secure-binds' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2217 NAME 'nsslapd-allow-anonymous-access' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2218 NAME 'nsslapd-localssf' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2219 NAME 'nsslapd-minssf' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2220 NAME 'nsslapd-minssf-exclude-rootdse' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2221 NAME 'nsslapd-validate-cert' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2222 NAME 'nsslapd-localuser' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2223 NAME 'nsslapd-localhost' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2224 NAME 'nsslapd-port' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2225 NAME 'nsslapd-workingdir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2226 NAME 'nsslapd-listenhost' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2227 NAME 'nsslapd-snmp-index' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2228 NAME 'nsslapd-ldapifilepath' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2229 NAME 'nsslapd-ldapilisten' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2230 NAME 'nsslapd-ldapiautobind' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2231 NAME 'nsslapd-ldapimaprootdn' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2232 NAME 'nsslapd-ldapimaptoentries' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2233 NAME 'nsslapd-ldapiuidnumbertype' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2234 NAME 'nsslapd-ldapigidnumbertype' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2235 NAME 'nsslapd-ldapientrysearchbase' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2236 NAME 'nsslapd-anonlimitsdn' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2237 NAME 'nsslapd-counters' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2238 NAME 'nsslapd-security' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2239 NAME 'nsslapd-SSL3ciphers' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2240 NAME 'nsslapd-accesslog' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2241 NAME 'nsslapd-errorlog' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2242 NAME 'nsslapd-securePort' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2243 NAME 'nsslapd-securelistenhost' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2244 NAME 'nnslapd-threadnumber' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2245 NAME 'nsslapd-maxthreadsperconn' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2246 NAME 'nsslapd-maxdescriptors' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2247 NAME 'nsslapd-conntablesize' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2248 NAME 'nsslapd-reservedescriptors' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2249 NAME 'nsslapd-idletimeout' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2250 NAME 'nsslapd-ioblocktimeout' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2251 NAME 'nsslapd-accesscontrol' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2252 NAME 'nsslapd-groupevalnestlevel' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2253 NAME 'nsslapd-nagle' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2254 NAME 'nsslapd-pwpolicy-local' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2255 NAME 'passwordIsGlobalPolicy' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2256 NAME 'passwordLegacyPolicy' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2257 NAME 'nsslapd-accesslog-logbuffering' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2258 NAME 'nsslapd-csnlogging' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2259 NAME 'nsslapd-return-exact-case' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2260 NAME 'nsslapd-result-tweak' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2261 NAME 'nsslapd-attribute-name-exceptions' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2262 NAME 'nsslapd-maxbersize' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2263 NAME 'nsslapd-maxsasliosize' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2264 NAME 'nsslapd-max-filter-nest-level' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2265 NAME 'nsslapd-versionstring' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2266 NAME 'nsslapd-enquote-sup-oc' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2267 NAME 'nsslapd-certmap-basedn' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2268 NAME 'nsslapd-accesslog-list' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2269 NAME 'nsslapd-errorlog-list' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2270 NAME 'nsslapd-auditlog-list' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2271 NAME 'nsslapd-rewrite-rfc1274' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2272 NAME 'nsslapd-plugin-binddn-tracking' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2273 NAME 'nsslapd-config' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2274 NAME 'nsslapd-instancedir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2275 NAME 'nsslapd-schemadir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2276 NAME 'nsslapd-lockdir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2277 NAME 'nsslapd-tmpdir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2278 NAME 'nsslapd-certdir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2279 NAME 'nsslapd-ldifdir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2280 NAME 'nsslapd-bakdir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2281 NAME 'nsslapd-saslpath' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2282 NAME 'nsslapd-rundir' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2283 NAME 'nsslapd-SSLclientAuth' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2284 NAME 'nsslapd-ssl-check-hostname' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2285 NAME 'nsslapd-hash-filters' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2286 NAME 'nsslapd-outbound-ldap-io-timeout' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2287 NAME 'nsslapd-force-sasl-external' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2288 NAME 'nsslapd-defaultnamingcontext' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2289 NAME 'nsslapd-disk-monitoring' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2290 NAME 'nsslapd-disk-monitoring-threshold' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2291 NAME 'nsslapd-disk-monitoring-grace-period' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2292 NAME 'nsslapd-disk-monitoring-logging-critical' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2293 NAME 'nsslapd-ndn-cache-enabled' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2294 NAME 'nsslapd-ndn-cache-max-size' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2295 NAME 'nsslapd-allowed-sasl-mechanisms' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2296 NAME 'nsslapd-ignore-virtual-attrs' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2297 NAME 'nsslapd-search-return-original-type-switch' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2298 NAME 'nsslapd-enable-turbo-mode' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2299 NAME 'nsslapd-connection-buffer' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2300 NAME 'nsslapd-connection-nocanon' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2301 NAME 'nsslapd-plugin-logging' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2302 NAME 'nsslapd-listen-backlog-size' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2303 NAME 'nsslapd-ignore-time-skew' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2304 NAME 'nsslapd-dynamic-plugins' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2305 NAME 'nsslapd-moddn-aci' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2306 NAME 'nsslapd-return-default-opattr' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE directoryOperation X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2307 NAME 'nsslapd-allow-hashed-passwords' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2308 NAME 'nstombstonecsn' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2309 NAME 'nsds5ReplicaPreciseTombstonePurging' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2310 NAME 'nsds5ReplicaFlowControlWindow' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2311 NAME 'nsds5ReplicaFlowControlPause' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2313 NAME 'nsslapd-changelogtrim-interval' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2314 NAME 'nsslapd-changelogcompactdb-interval' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2315 NAME 'nsDS5ReplicaWaitForAsyncResults' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
+attributeTypes: ( 2.16.840.1.113730.3.1.2333 NAME 'nsds5ReplicaReleaseTimeout' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
dc8c34
 #
dc8c34
 # objectclasses
dc8c34
 #
dc8c34
@@ -164,7 +318,7 @@ objectClasses: ( 2.16.840.1.113730.3.2.44 NAME 'nsIndex' DESC 'Netscape defined
dc8c34
 objectClasses: ( 2.16.840.1.113730.3.2.109 NAME 'nsBackendInstance' DESC 'Netscape defined objectclass' SUP top  MUST ( CN ) X-ORIGIN 'Netscape Directory Server' )
dc8c34
 objectClasses: ( 2.16.840.1.113730.3.2.110 NAME 'nsMappingTree' DESC 'Netscape defined objectclass' SUP top  MUST ( CN ) X-ORIGIN 'Netscape Directory Server' )
dc8c34
 objectClasses: ( 2.16.840.1.113730.3.2.104 NAME 'nsContainer' DESC 'Netscape defined objectclass' SUP top  MUST ( CN ) X-ORIGIN 'Netscape Directory Server' )
dc8c34
-objectClasses: ( 2.16.840.1.113730.3.2.108 NAME 'nsDS5Replica' DESC 'Netscape defined objectclass' SUP top  MUST ( nsDS5ReplicaRoot $  nsDS5ReplicaId ) MAY (cn $ nsds5ReplicaCleanRUV $ nsds5ReplicaAbortCleanRUV $ nsDS5ReplicaType $ nsDS5ReplicaBindDN $ nsState $ nsDS5ReplicaName $ nsDS5Flags $ nsDS5Task $ nsDS5ReplicaReferral $ nsDS5ReplicaAutoReferral $ nsds5ReplicaPurgeDelay $ nsds5ReplicaTombstonePurgeInterval $ nsds5ReplicaChangeCount $ nsds5ReplicaLegacyConsumer) X-ORIGIN 'Netscape Directory Server' )
dc8c34
+objectClasses: ( 2.16.840.1.113730.3.2.108 NAME 'nsDS5Replica' DESC 'Netscape defined objectclass' SUP top  MUST ( nsDS5ReplicaRoot $  nsDS5ReplicaId ) MAY (cn $ nsds5ReplicaCleanRUV $ nsds5ReplicaAbortCleanRUV $ nsDS5ReplicaType $ nsDS5ReplicaBindDN $ nsState $ nsDS5ReplicaName $ nsDS5Flags $ nsDS5Task $ nsDS5ReplicaReferral $ nsDS5ReplicaAutoReferral $ nsds5ReplicaPurgeDelay $ nsds5ReplicaTombstonePurgeInterval $ nsds5ReplicaChangeCount $ nsds5ReplicaLegacyConsumer $ nsds5ReplicaReleaseTimeout) X-ORIGIN 'Netscape Directory Server' )
dc8c34
 objectClasses: ( 2.16.840.1.113730.3.2.113 NAME 'nsTombstone' DESC 'Netscape defined objectclass' SUP top MAY ( nsParentUniqueId $ nscpEntryDN ) X-ORIGIN 'Netscape Directory Server' )
dc8c34
 objectClasses: ( 2.16.840.1.113730.3.2.103 NAME 'nsDS5ReplicationAgreement' DESC 'Netscape defined objectclass' SUP top MUST ( cn ) MAY ( nsds5ReplicaCleanRUVNotified $ nsDS5ReplicaHost $ nsDS5ReplicaPort $ nsDS5ReplicaTransportInfo $ nsDS5ReplicaBindDN $ nsDS5ReplicaCredentials $ nsDS5ReplicaBindMethod $ nsDS5ReplicaRoot $ nsDS5ReplicatedAttributeList $ nsDS5ReplicatedAttributeListTotal $ nsDS5ReplicaUpdateSchedule $ nsds5BeginReplicaRefresh $ description $ nsds50ruv $ nsruvReplicaLastModified $ nsds5ReplicaTimeout $ nsds5replicaChangesSentSinceStartup $ nsds5replicaLastUpdateEnd $ nsds5replicaLastUpdateStart $ nsds5replicaLastUpdateStatus $ nsds5replicaUpdateInProgress $ nsds5replicaLastInitEnd $ nsds5ReplicaEnabled $ nsds5replicaLastInitStart $ nsds5replicaLastInitStatus $ nsds5debugreplicatimeout $ nsds5replicaBusyWaitTime $ nsds5ReplicaStripAttrs $ nsds5replicaSessionPauseTime  $ nsds5ReplicaFlowControlWindow $ nsds5ReplicaFlowControlPause ) X-ORIGIN 'Netscape Directory Server' )
dc8c34
 objectClasses: ( 2.16.840.1.113730.3.2.39 NAME 'nsslapdConfig' DESC 'Netscape defined objectclass' SUP top MAY ( cn ) X-ORIGIN 'Netscape Directory Server' )
dc8c34
diff --git a/ldap/servers/plugins/replication/repl5.h b/ldap/servers/plugins/replication/repl5.h
dc8c34
index ee161ef..a521389 100644
dc8c34
--- a/ldap/servers/plugins/replication/repl5.h
dc8c34
+++ b/ldap/servers/plugins/replication/repl5.h
dc8c34
@@ -100,6 +100,10 @@
dc8c34
 #define REPL_ABORT_CLEANRUV_OID "2.16.840.1.113730.3.6.6"
dc8c34
 #define REPL_CLEANRUV_GET_MAXCSN_OID "2.16.840.1.113730.3.6.7"
dc8c34
 #define REPL_CLEANRUV_CHECK_STATUS_OID "2.16.840.1.113730.3.6.8"
dc8c34
+#define REPL_ABORT_SESSION_OID "2.16.840.1.113730.3.6.9"
dc8c34
+#define SESSION_ACQUIRED 0
dc8c34
+#define ABORT_SESSION 1
dc8c34
+#define SESSION_ABORTED 2
dc8c34
 
dc8c34
 #define CLEANRUV_ACCEPTED "accepted"
dc8c34
 #define CLEANRUV_REJECTED "rejected"
dc8c34
@@ -170,7 +174,7 @@ extern const char *type_nsds5ReplicaStripAttrs;
dc8c34
 extern const char *type_nsds5ReplicaCleanRUVnotified;
dc8c34
 extern const char *type_nsds5ReplicaFlowControlWindow;
dc8c34
 extern const char *type_nsds5ReplicaFlowControlPause;
dc8c34
-
dc8c34
+extern const char *type_replicaReleaseTimeout;
dc8c34
 
dc8c34
 /* Attribute names for windows replication agreements */
dc8c34
 extern const char *type_nsds7WindowsReplicaArea;
dc8c34
@@ -523,9 +527,9 @@ Replica *replica_new_from_entry (Slapi_Entry *e, char *errortext, PRBool is_add_
dc8c34
 void replica_destroy(void **arg);
dc8c34
 int replica_subentry_update(Slapi_DN *repl_root, ReplicaId rid);
dc8c34
 int replica_subentry_check(Slapi_DN *repl_root, ReplicaId rid);
dc8c34
-PRBool replica_get_exclusive_access(Replica *r, PRBool *isInc, PRUint64 connid, int opid,
dc8c34
-									const char *locking_purl,
dc8c34
-									char **current_purl);
dc8c34
+PRBool replica_get_exclusive_access(Replica *r, PRBool *isInc, PRUint64 connid,
dc8c34
+                                    int opid, const char *locking_purl,
dc8c34
+                                    char **current_purl);
dc8c34
 void replica_relinquish_exclusive_access(Replica *r, PRUint64 connid, int opid);
dc8c34
 PRBool replica_get_tombstone_reap_active(const Replica *r);
dc8c34
 const Slapi_DN *replica_get_root(const Replica *r);
dc8c34
@@ -589,7 +593,11 @@ void replica_set_ruv_dirty (Replica *r);
dc8c34
 int replica_write_ruv (Replica *r);
dc8c34
 char *replica_get_dn(Replica *r);
dc8c34
 void replica_check_for_tasks(Replica*r, Slapi_Entry *e);
dc8c34
+PRUint64 replica_get_release_timeout(Replica *r);
dc8c34
+void replica_set_release_timeout(Replica *r, PRUint64 timeout);
dc8c34
+void replica_set_groupdn_checkinterval(Replica *r, int timeout);
dc8c34
 PRBool ignore_error_and_keep_going(int error);
dc8c34
+void replica_check_release_timeout(Replica *r, Slapi_PBlock *pb);
dc8c34
 
dc8c34
 /* The functions below handles the state flag */
dc8c34
 /* Current internal state flags */
dc8c34
diff --git a/ldap/servers/plugins/replication/repl5_inc_protocol.c b/ldap/servers/plugins/replication/repl5_inc_protocol.c
dc8c34
index 02b54b3..e6920e8 100644
dc8c34
--- a/ldap/servers/plugins/replication/repl5_inc_protocol.c
dc8c34
+++ b/ldap/servers/plugins/replication/repl5_inc_protocol.c
dc8c34
@@ -65,6 +65,11 @@ Perhaps these events should be properties of the main protocol.
dc8c34
 #include "repl5_prot_private.h"
dc8c34
 #include "cl5_api.h"
dc8c34
 
dc8c34
+#include "repl5.h"
dc8c34
+#include "repl5_prot_private.h"
dc8c34
+#include "cl5_api.h"
dc8c34
+#include "slapi-plugin.h"
dc8c34
+
dc8c34
 extern int slapi_log_urp;
dc8c34
 
dc8c34
 /*** from proto-slap.h ***/
dc8c34
@@ -110,6 +115,7 @@ typedef struct result_data
dc8c34
 	int last_message_id_received;
dc8c34
 	int flowcontrol_detection;
dc8c34
 	int result; /* The UPDATE_TRANSIENT_ERROR etc */
dc8c34
+	time_t abort_time;
dc8c34
 } result_data;
dc8c34
 
dc8c34
 /* Various states the incremental protocol can pass through */
dc8c34
@@ -149,6 +155,7 @@ typedef struct result_data
dc8c34
 #define EXAMINE_RUV_PARAM_ERROR 405
dc8c34
 
dc8c34
 #define MAX_CHANGES_PER_SESSION	10000
dc8c34
+
dc8c34
 /*
dc8c34
  * Maximum time to wait between replication sessions. If we
dc8c34
  * don't see any updates for a period equal to this interval,
dc8c34
@@ -268,19 +275,21 @@ static void repl5_inc_result_threadmain(void *param)
dc8c34
 	Repl_Connection *conn = rd->prp->conn;
dc8c34
 	int finished = 0;
dc8c34
 	int message_id = 0;
dc8c34
+	int yield_session = 0;
dc8c34
 
dc8c34
 	slapi_log_error(SLAPI_LOG_REPL, NULL, "repl5_inc_result_threadmain starting\n");
dc8c34
 	while (!finished) 
dc8c34
 	{
dc8c34
+		LDAPControl **returned_controls = NULL;
dc8c34
 		repl5_inc_operation *op = NULL;
dc8c34
-		int connection_error = 0;
dc8c34
+		ReplicaId replica_id = 0;
dc8c34
 		char *csn_str = NULL; 
dc8c34
 		char *uniqueid = NULL;
dc8c34
-		ReplicaId replica_id = 0;
dc8c34
-		int operation_code = 0;
dc8c34
 		char *ldap_error_string = NULL;
dc8c34
 		time_t time_now = 0;
dc8c34
 		time_t start_time = time( NULL );
dc8c34
+		int connection_error = 0;
dc8c34
+		int operation_code = 0;
dc8c34
 		int backoff_time = 1;
dc8c34
 
dc8c34
 		/* Read the next result */
dc8c34
@@ -292,7 +301,7 @@ static void repl5_inc_result_threadmain(void *param)
dc8c34
 
dc8c34
 		while (!finished)
dc8c34
 		{
dc8c34
-			conres = conn_read_result_ex(conn, NULL, NULL, NULL, LDAP_RES_ANY, &message_id, 0);
dc8c34
+			conres = conn_read_result_ex(conn, NULL, NULL, &returned_controls, LDAP_RES_ANY, &message_id, 0);
dc8c34
 			slapi_log_error(SLAPI_LOG_REPL, NULL, "repl5_inc_result_threadmain: read result for message_id %d\n", message_id);
dc8c34
 			/* Timeout here means that we didn't block, not a real timeout */
dc8c34
 			if (CONN_TIMEOUT == conres)
dc8c34
@@ -320,9 +329,19 @@ static void repl5_inc_result_threadmain(void *param)
dc8c34
 					finished = 1;
dc8c34
 				}
dc8c34
 				PR_Unlock(rd->lock);
dc8c34
-			} else
dc8c34
-			{
dc8c34
-				/* Something other than a timeout, so we exit the loop */
dc8c34
+			} else {
dc8c34
+				/*
dc8c34
+				 * Something other than a timeout, so we exit the loop.
dc8c34
+				 * First check if we were told to abort the session
dc8c34
+				 */;
dc8c34
+				Replica *r = (Replica*)object_get_data(rd->prp->replica_object);
dc8c34
+				if (replica_get_release_timeout(r) &&
dc8c34
+				    slapi_control_present(returned_controls,
dc8c34
+				                          REPL_ABORT_SESSION_OID,
dc8c34
+				                          NULL, NULL))
dc8c34
+				{
dc8c34
+					yield_session = 1;
dc8c34
+				}
dc8c34
 				break;
dc8c34
 			}
dc8c34
 		}
dc8c34
@@ -346,21 +365,29 @@ static void repl5_inc_result_threadmain(void *param)
dc8c34
 			}
dc8c34
 
dc8c34
 			conn_get_error_ex(conn, &operation_code, &connection_error, &ldap_error_string);
dc8c34
-			slapi_log_error(SLAPI_LOG_REPL, NULL, "repl5_inc_result_threadmain: result %d, %d, %d, %d, %s\n", operation_code,connection_error,conres,message_id,ldap_error_string);
dc8c34
-			return_value = repl5_inc_update_from_op_result(rd->prp, conres, connection_error, csn_str, uniqueid, replica_id, &should_finish, &(rd->num_changes_sent));
dc8c34
+			slapi_log_error(SLAPI_LOG_REPL, NULL,
dc8c34
+			                "repl5_inc_result_threadmain: result %d, %d, %d, %d, %s\n",
dc8c34
+			                operation_code,connection_error,conres,message_id,ldap_error_string);
dc8c34
+			return_value = repl5_inc_update_from_op_result(rd->prp, conres, connection_error,
dc8c34
+			                                               csn_str, uniqueid, replica_id, &should_finish,
dc8c34
+			                                               &(rd->num_changes_sent));
dc8c34
 			if (return_value || should_finish)
dc8c34
 			{
dc8c34
-				slapi_log_error(SLAPI_LOG_REPL, NULL, "repl5_inc_result_threadmain: got op result %d should finish %d\n", return_value, should_finish);
dc8c34
+				slapi_log_error(SLAPI_LOG_REPL, NULL,
dc8c34
+				                "repl5_inc_result_threadmain: got op result %d should finish %d\n",
dc8c34
+				                return_value, should_finish);
dc8c34
 				/* If so then we need to take steps to abort the update process */
dc8c34
 				PR_Lock(rd->lock);
dc8c34
 				rd->result = return_value;
dc8c34
-				rd->abort = 1;
dc8c34
+				rd->abort = ABORT_SESSION;
dc8c34
 				PR_Unlock(rd->lock);
dc8c34
-				/* We also need to log the error, including details stored from when the operation was sent */
dc8c34
-				/* we cannot finish yet - we still need to waitfor the pending results, then
dc8c34
-				   the main repl code will shut down this thread */
dc8c34
-				/* we can finish if we have disconnected - in that case, there will be nothing
dc8c34
-				   to read */
dc8c34
+				/*
dc8c34
+				 * We also need to log the error, including details stored from
dc8c34
+				 * when the operation was sent.  We cannot finish yet - we still
dc8c34
+				 * need to wait for the pending results, then the main repl code
dc8c34
+				 * will shut down this thread.  We can finish if we have
dc8c34
+				 * disconnected - in that case, there will be nothing to read
dc8c34
+				 */
dc8c34
 				if (return_value == UPDATE_CONNECTION_LOST) {
dc8c34
 					finished = 1;
dc8c34
 				}
dc8c34
@@ -369,8 +396,16 @@ static void repl5_inc_result_threadmain(void *param)
dc8c34
 				rd->result = return_value;
dc8c34
 			}
dc8c34
 		}
dc8c34
+
dc8c34
 		/* Should we stop ? */
dc8c34
 		PR_Lock(rd->lock);
dc8c34
+		if (!finished && yield_session && rd->abort != SESSION_ABORTED && rd->abort_time == 0) {
dc8c34
+			rd->abort_time = time( NULL );
dc8c34
+			rd->abort = SESSION_ABORTED;  /* only set the abort time once */
dc8c34
+			slapi_log_error(SLAPI_LOG_REPL, "repl5_inc_result_threadmain",
dc8c34
+			                "Abort control detected, setting abort time...(%s)\n",
dc8c34
+			                agmt_get_long_name(rd->prp->agmt));
dc8c34
+		}
dc8c34
 		if (rd->stop_result_thread) 
dc8c34
 		{
dc8c34
 			finished = 1;
dc8c34
@@ -497,8 +532,7 @@ repl5_inc_waitfor_async_results(result_data *rd)
dc8c34
 		{
dc8c34
 			/* If so then we're done */
dc8c34
 			done = 1;
dc8c34
-		}
dc8c34
-		if (rd->abort && (rd->result == UPDATE_CONNECTION_LOST))
dc8c34
+		} else if (rd->abort && (rd->result == UPDATE_CONNECTION_LOST))
dc8c34
 		{
dc8c34
 			done = 1; /* no connection == no more results */
dc8c34
 		}
dc8c34
@@ -877,7 +911,7 @@ repl5_inc_run(Private_Repl_Protocol *prp)
dc8c34
                   if (!busywaittime){
dc8c34
                       busywaittime = PROTOCOL_BUSY_BACKOFF_MINIMUM;
dc8c34
                   }
dc8c34
-                  prp_priv->backoff = backoff_new(BACKOFF_FIXED, busywaittime, busywaittime);
dc8c34
+                  prp_priv->backoff = backoff_new(BACKOFF_FIXED, busywaittime , busywaittime);
dc8c34
               } else {
dc8c34
                   prp_priv->backoff = backoff_new(BACKOFF_EXPONENTIAL, PROTOCOL_BACKOFF_MINIMUM,
dc8c34
 					                              PROTOCOL_BACKOFF_MAXIMUM);
dc8c34
@@ -1075,6 +1109,7 @@ repl5_inc_run(Private_Repl_Protocol *prp)
dc8c34
                       } else if (rc == UPDATE_YIELD){
dc8c34
                           dev_debug("repl5_inc_run(STATE_SENDING_UPDATES) -> send_updates = UPDATE_YIELD -> STATE_BACKOFF_START");
dc8c34
                           agmt_set_last_update_status(prp->agmt, 0, 0, "Incremental update succeeded and yielded");
dc8c34
+                          use_busy_backoff_timer = PR_TRUE;
dc8c34
                           next_state = STATE_BACKOFF_START;
dc8c34
                       } else if (rc == UPDATE_TRANSIENT_ERROR){
dc8c34
                           dev_debug("repl5_inc_run(STATE_SENDING_UPDATES) -> send_updates = UPDATE_TRANSIENT_ERROR -> STATE_BACKOFF_START");
dc8c34
@@ -1110,6 +1145,7 @@ repl5_inc_run(Private_Repl_Protocol *prp)
dc8c34
           agmt_set_last_update_end(prp->agmt, current_time());
dc8c34
           agmt_set_update_in_progress(prp->agmt, PR_FALSE);
dc8c34
           agmt_update_done(prp->agmt, 0);
dc8c34
+
dc8c34
           /* If timed out, close the connection after released the replica */
dc8c34
           release_replica(prp);
dc8c34
           if (rc == UPDATE_TIMEOUT) {
dc8c34
@@ -1697,12 +1733,14 @@ send_updates(Private_Repl_Protocol *prp, RUV *remote_update_vector, PRUint32 *nu
dc8c34
 	}
dc8c34
 	else
dc8c34
 	{
dc8c34
-		int finished = 0;
dc8c34
 		ConnResult replay_crc;
dc8c34
-		char csn_str[CSN_STRSIZE];
dc8c34
+		Replica *replica = (Replica*) object_get_data(prp->replica_object);
dc8c34
 		PRBool subentry_update_needed = PR_FALSE;
dc8c34
+		PRUint64 release_timeout = replica_get_release_timeout(replica);
dc8c34
+		char csn_str[CSN_STRSIZE];
dc8c34
 		int skipped_updates = 0;
dc8c34
 		int fractional_repl;
dc8c34
+		int finished = 0;
dc8c34
 #define FRACTIONAL_SKIPPED_THRESHOLD 100
dc8c34
 
dc8c34
 		/* Start the results reading thread */
dc8c34
@@ -1922,7 +1960,20 @@ send_updates(Private_Repl_Protocol *prp, RUV *remote_update_vector, PRUint32 *nu
dc8c34
 			}
dc8c34
 			PR_Lock(rd->lock);
dc8c34
 			/* See if the result thread has hit a problem */
dc8c34
-			if (!finished && rd->abort)
dc8c34
+
dc8c34
+			if(!finished && rd->abort_time){
dc8c34
+				time_t current_time = time ( NULL );
dc8c34
+				if ((current_time - rd->abort_time) >= release_timeout){
dc8c34
+					rd->result = UPDATE_YIELD;
dc8c34
+					return_value = UPDATE_YIELD;
dc8c34
+					finished = 1;
dc8c34
+					slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
+					                "Aborting send_updates...(%s)\n",
dc8c34
+					                agmt_get_long_name(rd->prp->agmt));
dc8c34
+				}
dc8c34
+			}
dc8c34
+
dc8c34
+			if (!finished && rd->abort == ABORT_SESSION)
dc8c34
 			{
dc8c34
 				return_value = rd->result;
dc8c34
 				finished = 1;
dc8c34
@@ -1932,9 +1983,9 @@ send_updates(Private_Repl_Protocol *prp, RUV *remote_update_vector, PRUint32 *nu
dc8c34
 
dc8c34
 		if (fractional_repl && subentry_update_needed)
dc8c34
 		{
dc8c34
-			Replica *replica;
dc8c34
 			ReplicaId rid = -1; /* Used to create the replica keep alive subentry */
dc8c34
 			replica = (Replica*) object_get_data(prp->replica_object);
dc8c34
+
dc8c34
 			if (replica)
dc8c34
 			{
dc8c34
 				rid = replica_get_rid(replica);
dc8c34
@@ -1953,7 +2004,7 @@ send_updates(Private_Repl_Protocol *prp, RUV *remote_update_vector, PRUint32 *nu
dc8c34
 				 * If we already have an error, there is no need to check the
dc8c34
 				 * async result thread anymore.
dc8c34
 				 */
dc8c34
-				if (return_value == UPDATE_NO_MORE_UPDATES)
dc8c34
+				if (return_value == UPDATE_NO_MORE_UPDATES || return_value == UPDATE_YIELD)
dc8c34
 				{
dc8c34
 					/*
dc8c34
 					 * We need to double check that an error hasn't popped up from
dc8c34
diff --git a/ldap/servers/plugins/replication/repl5_plugins.c b/ldap/servers/plugins/replication/repl5_plugins.c
dc8c34
index 7127395..2a7abb1 100644
dc8c34
--- a/ldap/servers/plugins/replication/repl5_plugins.c
dc8c34
+++ b/ldap/servers/plugins/replication/repl5_plugins.c
dc8c34
@@ -1017,6 +1017,8 @@ write_changelog_and_ruv (Slapi_PBlock *pb)
dc8c34
 	r = (Replica*)object_get_data (repl_obj);
dc8c34
 	PR_ASSERT (r);
dc8c34
 
dc8c34
+	replica_check_release_timeout(r, pb);
dc8c34
+
dc8c34
 	if (replica_is_flag_set (r, REPLICA_LOG_CHANGES) &&
dc8c34
 		(cl5GetState () == CL5_STATE_OPEN))
dc8c34
 	{
dc8c34
@@ -1292,7 +1294,6 @@ process_postop (Slapi_PBlock *pb)
dc8c34
 	return rc;
dc8c34
 }
dc8c34
 
dc8c34
-
dc8c34
 /*
dc8c34
  * Cancel an operation CSN. This removes it from any CSN pending lists.
dc8c34
  * This function is called when a previously-generated CSN will not
dc8c34
diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c
dc8c34
index ceeeaee..9f85928 100644
dc8c34
--- a/ldap/servers/plugins/replication/repl5_replica.c
dc8c34
+++ b/ldap/servers/plugins/replication/repl5_replica.c
dc8c34
@@ -53,8 +53,8 @@
dc8c34
 #define RUV_SAVE_INTERVAL (30 * 1000) /* 30 seconds */
dc8c34
 #define START_UPDATE_DELAY 2 /* 2 second */
dc8c34
 
dc8c34
-#define REPLICA_RDN				 "cn=replica"
dc8c34
-#define CHANGELOG_RDN            "cn=legacy changelog"
dc8c34
+#define REPLICA_RDN "cn=replica"
dc8c34
+#define CHANGELOG_RDN "cn=legacy changelog"
dc8c34
 
dc8c34
 /*
dc8c34
  * A replica is a locally-held copy of a portion of the DIT.
dc8c34
@@ -88,6 +88,8 @@ struct replica {
dc8c34
 	PRBool state_update_inprogress; /* replica state is being updated */
dc8c34
 	PRLock *agmt_lock;          /* protects agreement creation, start and stop */
dc8c34
 	char *locking_purl;			/* supplier who has exclusive access */
dc8c34
+	Slapi_Counter *release_timeout;		/* The amount of time to wait before releasing active replica */
dc8c34
+	PRUint64 abort_session;			/* Abort the current replica session */
dc8c34
 };
dc8c34
 
dc8c34
 
dc8c34
@@ -208,6 +210,8 @@ replica_new_from_entry (Slapi_Entry *e, char *errortext, PRBool is_add_operation
dc8c34
 		goto done;
dc8c34
 	}
dc8c34
 
dc8c34
+	r->release_timeout = slapi_counter_new();
dc8c34
+
dc8c34
     /* read parameters from the replica config entry */
dc8c34
     rc = _replica_init_from_config (r, e, errortext);
dc8c34
     if (rc != 0)
dc8c34
@@ -395,6 +399,7 @@ replica_destroy(void **arg)
dc8c34
 		csnplFree(&r->min_csn_pl);;
dc8c34
 	}
dc8c34
 
dc8c34
+	slapi_counter_destroy(&r->release_timeout);
dc8c34
 	slapi_ch_free((void **)arg);
dc8c34
 }
dc8c34
 
dc8c34
@@ -569,8 +574,7 @@ replica_subentry_update(Slapi_DN *repl_root, ReplicaId rid)
dc8c34
  */
dc8c34
 PRBool
dc8c34
 replica_get_exclusive_access(Replica *r, PRBool *isInc, PRUint64 connid, int opid,
dc8c34
-							 const char *locking_purl,
dc8c34
-							 char **current_purl)
dc8c34
+							 const char *locking_purl, char **current_purl)
dc8c34
 {
dc8c34
 	PRBool rval = PR_TRUE;
dc8c34
 
dc8c34
@@ -593,6 +597,15 @@ replica_get_exclusive_access(Replica *r, PRBool *isInc, PRUint64 connid, int opi
dc8c34
 		{
dc8c34
 			*current_purl = slapi_ch_strdup(r->locking_purl);
dc8c34
 		}
dc8c34
+		if (!(r->repl_state_flags & REPLICA_TOTAL_IN_PROGRESS) &&
dc8c34
+		    replica_get_release_timeout(r))
dc8c34
+		{
dc8c34
+			/*
dc8c34
+			 * We are not doing a total update, so abort the current session
dc8c34
+			 * so other replicas can acquire this server.
dc8c34
+			 */
dc8c34
+			r->abort_session = ABORT_SESSION;
dc8c34
+		}
dc8c34
 	}
dc8c34
 	else
dc8c34
 	{
dc8c34
@@ -601,14 +614,17 @@ replica_get_exclusive_access(Replica *r, PRBool *isInc, PRUint64 connid, int opi
dc8c34
 						connid, opid,
dc8c34
 						slapi_sdn_get_dn(r->repl_root));
dc8c34
 		r->repl_state_flags |= REPLICA_IN_USE;
dc8c34
+		r->abort_session = SESSION_ACQUIRED;
dc8c34
 		if (isInc && *isInc) 
dc8c34
 		{
dc8c34
 			r->repl_state_flags |= REPLICA_INCREMENTAL_IN_PROGRESS;
dc8c34
 		}
dc8c34
 		else
dc8c34
 		{ 
dc8c34
-			/* if connid or opid != 0, it's a total update */
dc8c34
-			/* Both set to 0 means we're disabling replication */
dc8c34
+			/*
dc8c34
+			 * If connid or opid != 0, it's a total update.
dc8c34
+			 * Both set to 0 means we're disabling replication
dc8c34
+			 */
dc8c34
 			if (connid || opid)
dc8c34
 			{
dc8c34
 				r->repl_state_flags |= REPLICA_TOTAL_IN_PROGRESS;
dc8c34
@@ -636,13 +652,13 @@ replica_relinquish_exclusive_access(Replica *r, PRUint64 connid, int opid)
dc8c34
 	/* check to see if the replica is in use and log a warning if not */
dc8c34
 	if (!(r->repl_state_flags & REPLICA_IN_USE))
dc8c34
 	{
dc8c34
-        slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name, 
dc8c34
+		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
 					"conn=%" NSPRIu64 " op=%d repl=\"%s\": "
dc8c34
 					"Replica not in use\n",
dc8c34
 					connid, opid,
dc8c34
 					slapi_sdn_get_dn(r->repl_root));
dc8c34
 	} else {
dc8c34
-		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name, 
dc8c34
+		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
 					"conn=%" NSPRIu64 " op=%d repl=\"%s\": "
dc8c34
 					"Released replica held by locking_purl=%s\n",
dc8c34
 					connid, opid,
dc8c34
@@ -944,6 +960,24 @@ replica_get_type (const Replica *r)
dc8c34
 	return r->repl_type;
dc8c34
 }
dc8c34
 
dc8c34
+PRUint64
dc8c34
+replica_get_release_timeout(Replica *r)
dc8c34
+{
dc8c34
+	if(r){
dc8c34
+		return slapi_counter_get_value(r->release_timeout);
dc8c34
+	} else {
dc8c34
+		return 0;
dc8c34
+	}
dc8c34
+}
dc8c34
+
dc8c34
+void
dc8c34
+replica_set_release_timeout(Replica *r, PRUint64 limit)
dc8c34
+{
dc8c34
+	if(r){
dc8c34
+		slapi_counter_set_value(r->release_timeout, limit);
dc8c34
+	}
dc8c34
+}
dc8c34
+
dc8c34
 /* 
dc8c34
  * Sets the replica type.
dc8c34
  */
dc8c34
@@ -1022,13 +1056,9 @@ replica_get_legacy_purl (const Replica *r)
dc8c34
 {
dc8c34
     char *purl;
dc8c34
 
dc8c34
-    PR_Lock (r->repl_lock);
dc8c34
-
dc8c34
-    PR_ASSERT (r->legacy_consumer);
dc8c34
-
dc8c34
-    purl = slapi_ch_strdup (r->legacy_purl);
dc8c34
-
dc8c34
-    PR_Unlock (r->repl_lock);
dc8c34
+    replica_lock(r->repl_lock);
dc8c34
+    purl = slapi_ch_strdup(r->legacy_purl);
dc8c34
+    replica_unlock(r->repl_lock);
dc8c34
 
dc8c34
     return purl;
dc8c34
 }
dc8c34
@@ -1787,6 +1817,7 @@ _replica_init_from_config (Replica *r, Slapi_Entry *e, char *errortext)
dc8c34
     char buf [SLAPI_DSE_RETURNTEXT_SIZE];
dc8c34
     char *errormsg = errortext? errortext : buf;
dc8c34
 	Slapi_Attr *a = NULL;
dc8c34
+    int release_timeout = 0;
dc8c34
 
dc8c34
 	PR_ASSERT (r && e);
dc8c34
 
dc8c34
@@ -1833,9 +1864,13 @@ _replica_init_from_config (Replica *r, Slapi_Entry *e, char *errortext)
dc8c34
 
dc8c34
         slapi_ch_free ((void**)&val;;
dc8c34
     }
dc8c34
-    else
dc8c34
-    {
dc8c34
-        r->legacy_consumer = PR_FALSE;
dc8c34
+
dc8c34
+    /* Get the release timeout */
dc8c34
+    release_timeout = slapi_entry_attr_get_int(e, type_replicaReleaseTimeout);
dc8c34
+    if(release_timeout <= 0){
dc8c34
+        slapi_counter_set_value(r->release_timeout, 0);
dc8c34
+    } else {
dc8c34
+        slapi_counter_set_value(r->release_timeout, release_timeout);
dc8c34
     }
dc8c34
 
dc8c34
     /* get replica flags */
dc8c34
@@ -3829,21 +3864,21 @@ replica_disable_replication (Replica *r, Object *r_obj)
dc8c34
 	ruv_get_first_id_and_purl(repl_ruv, &junkrid, &p_locking_purl);
dc8c34
 	locking_purl = slapi_ch_strdup(p_locking_purl);
dc8c34
 	p_locking_purl = NULL;
dc8c34
-	repl_ruv = NULL;	
dc8c34
-    while (!replica_get_exclusive_access(r, &isInc, 0, 0, "replica_disable_replication",
dc8c34
+	repl_ruv = NULL;
dc8c34
+	while (!replica_get_exclusive_access(r, &isInc, 0, 0, "replica_disable_replication",
dc8c34
 										 &current_purl)) {
dc8c34
-        if (!isInc) /* already locked, but not by inc update - break */
dc8c34
-            break;
dc8c34
-        isInc = PR_FALSE;
dc8c34
-        slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
+		if (!isInc) /* already locked, but not by inc update - break */
dc8c34
+			break;
dc8c34
+		isInc = PR_FALSE;
dc8c34
+		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
 						"replica_disable_replication: "
dc8c34
 						"replica %s is already locked by (%s) for incoming "
dc8c34
 						"incremental update; sleeping 100ms\n",
dc8c34
-                        slapi_sdn_get_ndn (replica_get_root (r)),
dc8c34
+						slapi_sdn_get_ndn (replica_get_root (r)),
dc8c34
 						current_purl ? current_purl : "unknown");
dc8c34
 		slapi_ch_free_string(&current_purl);
dc8c34
-        DS_Sleep(PR_MillisecondsToInterval(100));
dc8c34
-    }
dc8c34
+		DS_Sleep(PR_MillisecondsToInterval(100));
dc8c34
+	}
dc8c34
 
dc8c34
 	slapi_ch_free_string(&current_purl);
dc8c34
 	slapi_ch_free_string(&locking_purl);
dc8c34
@@ -4003,3 +4038,57 @@ replica_get_attr ( Slapi_PBlock *pb, const char* type, void *value )
dc8c34
 
dc8c34
 	return rc;
dc8c34
 }
dc8c34
+
dc8c34
+/*
dc8c34
+ * Add the "Abort Replication Session" control to the pblock
dc8c34
+ */
dc8c34
+static void
dc8c34
+replica_add_session_abort_control(Slapi_PBlock *pb)
dc8c34
+{
dc8c34
+	LDAPControl ctrl = {0};
dc8c34
+	BerElement *ber;
dc8c34
+	struct berval *bvp;
dc8c34
+	int rc;
dc8c34
+
dc8c34
+	/* Build the BER payload */
dc8c34
+	if ( (ber = der_alloc()) == NULL ) {
dc8c34
+		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
+			"add_session_abort_control: Failed to create ber\n");
dc8c34
+		return;
dc8c34
+	}
dc8c34
+	rc = ber_printf( ber, "{}");
dc8c34
+	if (rc != -1) {
dc8c34
+		rc = ber_flatten( ber, &bvp );
dc8c34
+	}
dc8c34
+	ber_free( ber, 1 );
dc8c34
+	if ( rc == -1 ) {
dc8c34
+		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
+			"add_session_abort_control: Failed to flatten ber\n");
dc8c34
+		return;
dc8c34
+	}
dc8c34
+
dc8c34
+	ctrl.ldctl_oid = slapi_ch_strdup( REPL_ABORT_SESSION_OID );
dc8c34
+	ctrl.ldctl_value = *bvp;
dc8c34
+	bvp->bv_val = NULL;
dc8c34
+	ber_bvfree( bvp );
dc8c34
+	slapi_pblock_set(pb, SLAPI_ADD_RESCONTROL, &ctrl);
dc8c34
+
dc8c34
+	slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
dc8c34
+		"add_session_abort_control: abort control successfully added to result\n");
dc8c34
+}
dc8c34
+
dc8c34
+/*
dc8c34
+ * Check if we have exceeded the failed replica acquire limit,
dc8c34
+ * if so, end the replication session.
dc8c34
+ */
dc8c34
+void
dc8c34
+replica_check_release_timeout(Replica *r, Slapi_PBlock *pb)
dc8c34
+{
dc8c34
+	replica_lock(r->repl_lock);
dc8c34
+	if(r->abort_session  == ABORT_SESSION){
dc8c34
+		/* Need to abort this session (just send the control once) */
dc8c34
+		replica_add_session_abort_control(pb);
dc8c34
+		r->abort_session = SESSION_ABORTED;
dc8c34
+	}
dc8c34
+	replica_unlock(r->repl_lock);
dc8c34
+}
dc8c34
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
dc8c34
index 68b3ce5..f8db8e8 100644
dc8c34
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
dc8c34
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
dc8c34
@@ -399,6 +399,11 @@ replica_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi_Entry*
dc8c34
                     /* only allow the deletion of the cleanAllRUV config attributes */
dc8c34
                     continue;
dc8c34
                 }
dc8c34
+                else if (strcasecmp (config_attr, type_replicaReleaseTimeout) == 0 )
dc8c34
+                {
dc8c34
+                    if (apply_mods)
dc8c34
+                        replica_set_release_timeout(r, 0);
dc8c34
+                    }
dc8c34
                 else
dc8c34
                 {
dc8c34
                     *returncode = LDAP_UNWILLING_TO_PERFORM;
dc8c34
@@ -488,6 +493,23 @@ replica_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi_Entry*
dc8c34
                 {
dc8c34
                     *returncode = LDAP_SUCCESS;
dc8c34
                 }
dc8c34
+                else if (strcasecmp (config_attr, type_replicaReleaseTimeout) == 0 )
dc8c34
+                {
dc8c34
+                    if (apply_mods)
dc8c34
+                    {
dc8c34
+                        PRUint64 val = atoll(config_attr_value);
dc8c34
+
dc8c34
+                        if(val < 0){
dc8c34
+                            *returncode = LDAP_UNWILLING_TO_PERFORM;
dc8c34
+                            PR_snprintf (errortext, SLAPI_DSE_RETURNTEXT_SIZE,
dc8c34
+                                    "attribute %s value (%s) is invalid, must be a number zero or greater.\n",
dc8c34
+                                    config_attr, config_attr_value);
dc8c34
+                            slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name, "replica_config_modify: %s\n", errortext);
dc8c34
+                            break;
dc8c34
+                        }
dc8c34
+                        replica_set_release_timeout(r, val);
dc8c34
+                    }
dc8c34
+                }
dc8c34
                 else
dc8c34
                 {
dc8c34
                     *returncode = LDAP_UNWILLING_TO_PERFORM;
dc8c34
diff --git a/ldap/servers/plugins/replication/repl_globals.c b/ldap/servers/plugins/replication/repl_globals.c
dc8c34
index bfcff03..1d35241 100644
dc8c34
--- a/ldap/servers/plugins/replication/repl_globals.c
dc8c34
+++ b/ldap/servers/plugins/replication/repl_globals.c
dc8c34
@@ -112,6 +112,7 @@ const char *type_replicaLegacyConsumer = "nsds5ReplicaLegacyConsumer";
dc8c34
 const char *type_ruvElementUpdatetime = "nsruvReplicaLastModified";
dc8c34
 const char *type_replicaCleanRUV = "nsds5ReplicaCleanRUV";
dc8c34
 const char *type_replicaAbortCleanRUV = "nsds5ReplicaAbortCleanRUV";
dc8c34
+const char *type_replicaReleaseTimeout = "nsds5ReplicaReleaseTimeout";
dc8c34
 
dc8c34
 /* Attribute names for replication agreement attributes */
dc8c34
 const char *type_nsds5ReplicaHost = "nsds5ReplicaHost";
dc8c34
-- 
dc8c34
2.4.11
dc8c34