Skip to content

Conversation

@EgorKuts
Copy link
Contributor

HA reset overwrites ongoing rebalance caused by the distribution zone filter change. Solution: append existing pendings to assigment queue during reset.

https://issues.apache.org/jira/browse/IGNITE-24467

@EgorKuts EgorKuts marked this pull request as ready for review January 22, 2026 08:36

/** Constructor. */
public AssignmentsQueue(AssignmentsQueue... assignmentsQueues) {
LinkedList<Assignments> assigments = new LinkedList<>();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo

assertValuesPresentOnNodes(node.clock().now(), table, 0, 1, 2);

stopNodes(1, 2);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assertLogicalTopologyInMetastorage(List.of(0, 3, 4, 5), node);

// Check that there is no ongoing or planned rebalance.
assertNull(getPendingAssignments(node0, partId));

assertRealAssignments(node0, partId, 1);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's also check scenario when offline nodes where filtered (in this case, node 2 also was removed)

.target(Assignments.forced(Set.of(nextAssignment), assignmentsTimestamp))
.toQueue();

if (!manualUpdate) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let think about this zhopniy scenario

A(10), B(10), C(6)

A, B left

C leader -> we have pending realance that include A or B [A, B, C, E(0)]
C accepts some data -> C(10')
A, B restarted, they wont clean up their data

A(10), B(10), C(10'), E(10')

Copy link
Contributor Author

@EgorKuts EgorKuts Jan 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If A and B are left by the reset revision, they won’t be put into pending. When they start and recover, they will be destroyed.

If A and B are not left by the reset revision, they will win the election and become leader instead of C.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants