__clayered_ignore_missing_stable's step-down-timestamp check can hide a genuinely missing stable constituent

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Layered Tables
    • None
    • Storage Engines - Foundations
    • 3.635
    • None
    • None

      The __clayered_ignore_missing_stable check can tolerate a missing stable table when it should not. The role-change part of the check is needed for the race with reconfigure(role="follower"), which clears the created-during-step-down flag before publishing the role. The step-down-timestamp part is not needed for that race and can hide a genuinely missing stable table: the tolerated open failure leaves the cursor with no constituents at all, and iteration then asserts in diagnostic builds and dereferences NULL in release builds.

      This is not urgent: reaching it requires another defect that makes a leader-era table lose its stable constituent.

      Proposed fix: rework __clayered_ignore_missing_stable to check only for the role change.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Ivan Kochin
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: