Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.
Hi all,
We use drbd 8.3.11 as a dual-primary in a pacemaker (1.0.x) cluster.
In our setup, we need a somewhat larger ping-timeout (2s) due to
interruptions during a firewall restart. That used to work well with
8.3.10 but caused crm resource stop/start sequences to fail since 8.3.11.
A git bisect showed that this effect occurs since
http://git.drbd.org/gitweb.cgi?p=drbd-8.3.git;a=commit;h=a0c9e5442e3be2d17772f50e1cf1d714cbddc51d
It seems that PCMK executes the sequence drbdadm up + drbdadm primary
rather quickly. If the "drbdadm primary" happens while drbd is still
waiting for the connection being established (WFConnection), the
resource startup fails, because then a split-brain is detected and then
automatic resolution fails because by then both sides are already primary.
Above patch prolongs the time during which the problem may occur: with
the old 100ms connection timeout it was rather unlikely to happen, with
a 2s timeout it is almost guaranteed.
We were able to reproduce the problem with ping-timeout 20 on a running
dual-primary with
drbdadm down <res>; drbdadm up <res>; drbdadm primary <res>
This sequence however works:
drbdadm down <res> ; drbdadm up <res> ; drbdadm wait-connect <res>;\
drbdadm primary test
Our test setup was a 3.0.41 kernel running drbd 8.3.13 under KVM.
Putting this
test "$rc" = "$OCF_SUCCESS" && drbdadm wait-connect $DRBD_RESOURCE
into the drbd_start function of the RA seems to work for us.
Ciao
Andi