Re: Issue with Both Diskful Nodes Being Outdated in DRBD9

Joel Colledge <[email protected]> Tue, 7 Jan 2025 17:12:58 +0100
Newsgroups gmane.comp.linux.drbd
Message-ID <CAGNP_+XziEF01H2ijczCqt_Tfo41qL9g_55sbh_7kfKYqMk1sw@mail.gmail.com>
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, a=
fter the network is restored and synchronization is completed, the sync tar=
get updates its metadata to match the sync source, which causes its state t=
o also become outdated.

I am able to reproduce the problem too now.

> Would it be possible to introduce a parameter that allows users to preven=
t 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