Issue 9580 - Refresh vs. accesslog in delta-MPR
Summary: Refresh vs. accesslog in delta-MPR
Status: IN_PROGRESS
Alias: None
Product: OpenLDAP
Classification: Unclassified
Component: overlays (show other issues)
Version: unspecified
Hardware: All All
: --- normal
Target Milestone: ---
Assignee: Ondřej Kuzník
URL:
Keywords: replication
Depends on:
Blocks:
 
Reported: 2021-06-14 15:44 UTC by Ondřej Kuzník
Modified: 2023-11-07 17:22 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description Ondřej Kuzník 2021-06-14 15:44:16 UTC
A server consuming a plain syncrepl session (might be a delta-MMR refresh) still has to log the entries into accesslog, however that accesslog stops being capable of serving as a delta-sync source:

- operation entryCSNs will be out-of-order
- the changes logged will not be the intended modifications (e.g. if we fell back after a conflict, the conflicting entry will be replaced with the other version, other examples available)

We need to deal with that somehow, at the very least we need to make sure the consumer will not take them at face value. We could record this in the accesslog root entry if we can detect when this starts and match it up with the final cookie, syncprov would still need some tweaks to understand it.

We could mark the entries received this way and make sure delta-consumers treat them as "poison", as if they were running a plain syncrepl session themselves (not update contextCSN until that's finished, mark its own accesslog entries this way, ...). Anything like that needs guarantees that it will clean itself up once all of the real plain sessions finish otherwise we've lost delta-sync altogether.

A different approach might or might not be needed for live delta-persist sessions replicating from a refreshing provider, but at least that syncprov has a way of detecting this live if it chooses to.
Comment 2 Quanah Gibson-Mount 2022-01-12 22:47:12 UTC
head:

Commits: 
  • 414866b8 
by Ondřej Kuzník at 2022-01-11T06:47:00+00:00 
ITS#9580 Propagate a present-phase cookie flush into accesslog