Skip to content

learner can became leader after (request_leadership/yield_leadership) #553

@UnamedRus

Description

@UnamedRus

We observe behavior, that if we run request_leadership on learner, it can actually became leader without change of it's "learner" status

peer 1, DC ID 0, 172.25.0.2:9234, voting member, 1
peer 2, DC ID 0, 172.25.0.3:9234, voting member, 1
peer 3, DC ID 0, 172.25.0.4:9234, voting member, 1
peer 4, DC ID 0, 172.26.0.2:9234, learner, 1
peer 5, DC ID 0, 172.26.0.3:9234, learner, 1
peer 6, DC ID 0, 172.26.0.4:9234, learner, 1
my id: 5, leader: 5, term: 2

From code comments:

* Learner will not initiate or participate in leader election.

    /**
     * (Read-only)
     * `true` if this server is a learner. Will not participate
     * leader election.
     */  

From readonly(learner) documentation
https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md

Both read-only members and zero-priority members do not initiate leader election, and never be a leader.

  1. Does it mean that learner, only affect behavior around elections, and not straight nomination of node as leader?
  2. If so, should documentation for readonly_member, corrected that in some cases, it can became leader?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions