Hi,

On 30.05.2014 13:20, Robert Dahlem wrote:

>> run crm_report for the period covered by these commands and attach the 
>> result:
>>
>> # crm node standby korfwf01 ; sleep 10
>> # crm node standby korfwf02 ; sleep 10
>> # crm node online korfwf02 ; sleep 10
>> # crm node online korfwf01 ; sleep 10
>> # crm status
> 
> I filed a bug
>       http://bugs.clusterlabs.org/show_bug.cgi?id=5217
> and attached the crm_report.

This seems to be some kind of a race condition: I added
        sleep 3
to a central point in /usr/lib/ocf/resource.d/linbit/drbd. As soon as I
did that I could not reproduce the split brain.

Then I added some logging and repeated
        crm resource move ALL-ffm korfwf01
        crm node standby korfwf01
        crm node standby korfwf02
        crm node online korfwf02
        crm node online korfwf01

The following is what happens after
        crm node online korfwf01

Timestamp                       korfwf01        korfwf02
========================================================
Fri May 30 15:46:35 CEST 2014                   notify
Fri May 30 15:46:38 CEST 2014                   notify
Fri May 30 15:46:41 CEST 2014                   demote
Fri May 30 15:46:44 CEST 2014                   notify
Fri May 30 15:46:47 CEST 2014                   notify
Fri May 30 15:46:50 CEST 2014                   stop
Fri May 30 15:46:53 CEST 2014   start           start
Fri May 30 15:46:58 CEST 2014   notify          notify
Fri May 30 15:47:01 CEST 2014   notify          notify
Fri May 30 15:47:04 CEST 2014   promote 
Fri May 30 15:47:07 CEST 2014   notify          notify
Fri May 30 15:47:10 CEST 2014   monitor         monitor

1.) Note the parallel "start" at 15:46:53. This could very well end up
in a race condition without "sleep 3".

2.) Why is pacemaker doing "stop/start" at all on korfwf02?

Now again, but without "sleep 3":

Timestamp                       korfwf01        korfwf02
========================================================
Fri May 30 16:23:24 CEST 2014                   notify
Fri May 30 16:23:26 CEST 2014                   notify
Fri May 30 16:23:26 CEST 2014   start           demote
Fri May 30 16:23:26 CEST 2014                   notify
Fri May 30 16:23:26 CEST 2014                   notify
Fri May 30 16:23:26 CEST 2014                   notify
Fri May 30 16:23:26 CEST 2014                   stop
Fri May 30 16:23:26 CEST 2014                   start
Fri May 30 16:23:27 CEST 2014   notify          notify
Fri May 30 16:23:28 CEST 2014   notify          notify
Fri May 30 16:23:28 CEST 2014   promote 
Fri May 30 16:23:28 CEST 2014   notify          notify
Fri May 30 16:23:28 CEST 2014   monitor         monitor

Look at this excerpt from /var/log/messages:

16:23:27 korfwf01 block drbd7: disk( Diskless -> Attaching )
16:23:27 korfwf01 block drbd7: disk( Attaching -> UpToDate )
16:23:27 korfwf01 drbd ffm: conn( StandAlone -> Unconnected )
16:23:27 korfwf01 drbd ffm: conn( Unconnected -> WFConnection )
16:23:28 korfwf01 block drbd7: role( Secondary -> Primary )
16:23:28 korfwf01 drbd ffm: conn( WFConnection -> WFReportParams )
16:23:28 korfwf01 drbd ffm: conn( WFReportParams -> NetworkFailure )
16:23:28 korfwf01 drbd ffm: conn( NetworkFailure -> Unconnected )
16:23:28 korfwf01 drbd ffm: conn( Unconnected -> WFConnection )

korfwf01 was not waiting for a connection before 16:23:27. At this time
korfwf02 was stopped, but had the latest data. So korfwf01 came up
before korfwf02 was up again -> split-brain!

Again: why is korfwf02 doing "stop/start" in this situation? Without
this, korfwf02 would just do "demote" while korfwf01 would do
"start/promote" and everything would be fine.

Kind regards,
Robert

_______________________________________________
Pacemaker mailing list: Pacemaker@oss.clusterlabs.org
http://oss.clusterlabs.org/mailman/listinfo/pacemaker

Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://bugs.clusterlabs.org

Reply via email to