[Date Prev][Date Next] [Chronological] [Thread] [Top]

syncrepl + slapd-relay + slapo-rwm some clarification needed



Hello all,

We have a need to populate one of our replicas with mapped attributes long story short, using a ldap proxy to perform the mapping will not be sufficient since the attributes are being used by OpenLDAP itself.
I've found that when setting up a slapd-relay to virtualize the suffix 
and then use rwm to perform the mapping I get the desired view. However 
when trying to replicate the content using a replication account things 
start acting weird I think mostly because syncrepl processes changes via 
logs and update instructions from the provider to the consumer.
That being the case the syncrepl RefreshAndPersist actually changes the 
values from the original update instruction. Ergo the replica looking at 
the virtualized suffix (using relay) actually gets the attribute 
populated that I wanted mapped. Meaning the replica and the relay view 
don't agree rather the replica and the original data agree.
I've found that if I use the syncrepl RefreshOnly the replica yields the 
desired results however that is performed on intervals so the data isn't 
immediately available. So Have I missed something on the 
RefreshAndPersist method that would also yield the desired results? Or 
is RefreshAndPersist always going to see the original change being made 
even if the underlying relay view shows the mapped attributes?
Ugh the above is so complex to describe Below is an example to 
facilitate a quick explanation.
### Provider hdb database
dn: cn=record,dc=suffix,dc=org
cn: record
attr1: value1
attr2: value2
attr3: value3

### Provider relay database
dn: cn=record,dc=suffix,dc=org,cn=mapped
cn: record
attr1: value1
attr2: value3 |                 |
attr3: value2 | Values switched |

#### { Replica Section } #####################################

### replica from cn=mapped using RefreshAndPersist (Undesired)
dn: cn=record,dc=suffix,dc=org
cn: record
attr1: value1
attr2: value2
attr3: value3

### replica from cn=mapped using RefreshOnly (Desired)
dn: cn=record,dc=suffix,dc=org,cn=mapped
cn: record
attr1: value1
attr2: value3 |                 |
attr3: value2 | Values switched |