Hi Rui,

> I installed DRBD 9.2.12 and retested, but the issue persists.
>
> I think the logic of this problem is quite clear. First, an Inconsistent 
> replication serving as a sync target can be promoted to the primary when it 
> is connected to an uptodate replication. Next, if the connection with the 
> primary node is lost, the uptodate replication becomes outdated. Finally, 
> after the network is restored and synchronization is completed, the sync 
> target updates its metadata to match the sync source, which causes its state 
> to also become outdated.

I am able to reproduce the problem too now.

> Would it be possible to introduce a parameter that allows users to prevent 
> the promotion of Inconsistent replications? This could help avoid the the 
> issue. If you have other solutions, that would be great as well, of course.

I believe the correct fix is at step 5. of your original reproduction
steps. Node B should know that A does not have access to any UpToDate
data and so cannot complete any writes. So node B should not become
Outdated.

I'm not sure how the exact implementation would work. We may need to
add more information to the two-phase commit packets to allow node B
to reliably determine its disk state.

The fix should also make sure that node A does not consider node B to
be Outdated at this stage.

> Additionally, are there other methods to remove the outdated tag from the 
> metadata, aside from using the primary --force command?

It should be possible with the "get-gi" and "set-gi" commands, but I
recommend using "primary --force", because it is much simpler.

Best regards,
Joel

Reply via email to