#49549 Replication sessions can loop evaluating the same updates
Closed: wontfix 3 years ago by spichugi. Opened 6 years ago by tbordaz.

Issue Description

Here are two scenario:

We have M1 <--> M2 with full replication and M1 --> C with fractional and no M2 --> C.
Scenario where C is in DMZ and only one supplier updates it.
Let the RUV being

M1
    {replica 1} csn_1_1000
    {replica 2} csn_2_1000

M2
    {replica 1} csn_1_1000
    {replica 2} csn_2_1000

C
    {replica 1} csn_1_1000
    {replica 2} csn_2_1

C is very late regarding all the updates generated on '2' because most of them are skipped.

On a replication session M1->C1, anchorcsn will be csn_2_1 and all the updates csn_2_1..csn_2_1000 will be evaluated (including likely all the updates csn_1_1..csn_1_1000).
At the end M1 has nothing to send to C because all is skipped, so it updates its keepAlive_1

The next session will start with

M1
    {replica 1} csn_1_1001
    {replica 2} csn_2_1000

M2
    {replica 1} csn_1_1001
    {replica 2} csn_2_1000

C
    {replica 1} csn_1_1000
    {replica 2} csn_2_1

So it will start again from csn_2_1. This, indefinitely until an update on M2 will be propagated to C.
The RC of the issue is that the keepAlive update should have be done on M2.

There is a quite similar issue when a supplier is rarely updated. It is less severe as it resolves by itself

Initial is

M1
    {replica 1} csn_1_1000
    {replica 2} csn_2_1

M2
    {replica 1} csn_1_1000
    {replica 2} csn_2_1

Then M2 is updated generating csn_2_2. M2 will update M1 starting with csn_2_1, so it will evaluate csn_1_1 to csn_1_1000 (skipping them as M1 already knows them), finally it will send csn_2_2.

I think both situations could be addressed if we implement a periodic update of the KeepAlive entry. By default periodicity would be infinite (no update). This would require a new replica config attribute.

Package Version and Platform

All

Steps to reproduce

see desciption

Actual results

Backlog of updates being high, it slows down replication.

Expected results

Reduce the backlog of updates to evaluate


Metadata Update from @tbordaz:
- Custom field component adjusted to None
- Custom field origin adjusted to None
- Custom field reviewstatus adjusted to None
- Custom field type adjusted to None
- Custom field version adjusted to None
- Issue set to the milestone: 1.4 backlog

6 years ago

389-ds-base is moving from Pagure to Github. This means that new issues and pull requests
will be accepted only in 389-ds-base's github repository.

This issue has been cloned to Github and is available here:
- https://github.com/389ds/389-ds-base/issues/2608

If you want to receive further updates on the issue, please navigate to the github issue
and click on subscribe button.

Thank you for understanding. We apologize for all inconvenience.

Metadata Update from @spichugi:
- Issue close_status updated to: wontfix
- Issue status updated to: Closed (was: Open)

3 years ago

Login to comment on this ticket.

Metadata