Skip to content

Commit 1380d80

Browse files
committed
[PLAT-18685] Enable capacity reservation for single node
Summary: Previously, there were no sense in using reservation for single node (as during failure we will still have to retry task. Now, with automatic rollback, it is useful to create reservation. Test Plan: edit universe add one node - verify reservation was applied. Reviewers: spothuraju Reviewed By: spothuraju Subscribers: yugaware Differential Revision: https://phorge.dev.yugabyte.com/D47219
1 parent 2017ce0 commit 1380d80

File tree

3 files changed

+10
-12
lines changed

3 files changed

+10
-12
lines changed

managed/src/main/java/com/yugabyte/yw/commissioner/tasks/EditUniverse.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,12 @@ public void run() {
8484
boolean deleteCapacityReservation = false;
8585
String errorMessage = null;
8686
try {
87-
Consumer<Universe> retryCallback = null;
88-
if (Universe.getOrBadRequest(taskParams().getUniverseUUID())
89-
.getUniverseDetails()
90-
.autoRollbackPerformed) {
91-
// Need to write nodes to universe since there was a rollback.
92-
retryCallback = univ -> updateUniverseNodesAndSettings(univ, taskParams(), false);
93-
}
87+
Consumer<Universe> retryCallback =
88+
(univ) -> {
89+
if (univ.getUniverseDetails().autoRollbackPerformed) {
90+
updateUniverseNodesAndSettings(univ, taskParams(), false);
91+
}
92+
};
9493
universe =
9594
lockAndFreezeUniverseForUpdate(
9695
taskParams().getUniverseUUID(),
@@ -171,7 +170,7 @@ public void run() {
171170
} catch (Throwable t) {
172171
errorMessage = t.getMessage();
173172
log.error("Error executing task {} with error='{}'.", getName(), t.getMessage(), t);
174-
clearCapacityReservationOnError(t, Universe.getOrBadRequest(universe.getUniverseUUID()));
173+
clearCapacityReservationOnError(t, Universe.getOrBadRequest(taskParams().getUniverseUUID()));
175174
throw t;
176175
} finally {
177176
releaseReservedNodes();

managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseDefinitionTaskBase.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4086,8 +4086,7 @@ protected boolean createCapacityReservationsIfNeeded(
40864086
Set<NodeDetails> nodeDetailsSet,
40874087
CapacityReservationUtil.OperationType operationType,
40884088
Predicate<NodeDetails> nodeFilter) {
4089-
// There is no sense in using capacity reservation for a single node.
4090-
if (nodeDetailsSet.size() < 2) {
4089+
if (nodeDetailsSet.isEmpty()) {
40914090
return false;
40924091
}
40934092
Universe universe = getUniverse();

managed/src/test/java/com/yugabyte/yw/commissioner/tasks/EditUniverseTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,7 @@ public void testExpandRollback() {
614614
universe = Universe.getOrBadRequest(universe.getUniverseUUID());
615615
assertEquals(nodes, universe.getUniverseDetails().nodeDetailsSet.size());
616616
assertTrue(universe.getUniverseDetails().autoRollbackPerformed);
617-
assertNull(universe.getUniverseDetails().updatingTaskUUID);
617+
assertNotNull(universe.getUniverseDetails().updatingTaskUUID);
618618
assertNull(universe.getUniverseDetails().placementModificationTaskUuid);
619619
}
620620

@@ -646,7 +646,7 @@ public void testFullMoveRollback() {
646646
universe = Universe.getOrBadRequest(universe.getUniverseUUID());
647647
assertEquals(nodes, universe.getUniverseDetails().nodeDetailsSet.size());
648648
assertTrue(universe.getUniverseDetails().autoRollbackPerformed);
649-
assertNull(universe.getUniverseDetails().updatingTaskUUID);
649+
assertNotNull(universe.getUniverseDetails().updatingTaskUUID);
650650
assertNull(universe.getUniverseDetails().placementModificationTaskUuid);
651651
}
652652

0 commit comments

Comments
 (0)