Skip to content

Commit cf74fee

Browse files
authored
Fixed bug in UpgradeCoordinator comparing against the same version (#5366)
A minor bug introduced in #5357 where the UpgradeCoordinator was comparing the stored progress version against the wrong variable which ended up skipping the Upgraders altogether.
1 parent ce7705c commit cf74fee

File tree

1 file changed

+29
-26
lines changed

1 file changed

+29
-26
lines changed

server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java

+29-26
Original file line numberDiff line numberDiff line change
@@ -192,20 +192,21 @@ public synchronized void upgradeZookeeper(EventCoordinator eventCoordinator) {
192192

193193
final UpgradeProgress progress = progressTracker.getProgress();
194194

195-
for (int v = currentVersion; v < AccumuloDataVersion.get(); v++) {
196-
if (progress.getZooKeeperVersion() >= currentVersion) {
195+
for (int upgradeVersion = currentVersion; upgradeVersion < AccumuloDataVersion.get();
196+
upgradeVersion++) {
197+
if (progress.getZooKeeperVersion() >= upgradeVersion) {
197198
log.info(
198199
"ZooKeeper has already been upgraded to version {}, moving on to next upgrader",
199-
currentVersion);
200+
upgradeVersion);
200201
continue;
201202
}
202-
log.info("Upgrading Zookeeper - current version {} as step towards target version {}", v,
203-
AccumuloDataVersion.get());
204-
var upgrader = upgraders.get(v);
203+
log.info("Upgrading Zookeeper - current version {} as step towards target version {}",
204+
upgradeVersion, AccumuloDataVersion.get());
205+
var upgrader = upgraders.get(upgradeVersion);
205206
Objects.requireNonNull(upgrader,
206-
"upgrade ZooKeeper: failed to find upgrader for version " + currentVersion);
207+
"upgrade ZooKeeper: failed to find upgrader for version " + upgradeVersion);
207208
upgrader.upgradeZookeeper(context);
208-
progressTracker.updateZooKeeperVersion(v);
209+
progressTracker.updateZooKeeperVersion(upgradeVersion);
209210
}
210211
}
211212

@@ -231,38 +232,40 @@ public synchronized Future<Void> upgradeMetadata(EventCoordinator eventCoordinat
231232
.withQueue(new SynchronousQueue<>()).build().submit(() -> {
232233
try {
233234
UpgradeProgress progress = progressTracker.getProgress();
234-
for (int v = currentVersion; v < AccumuloDataVersion.get(); v++) {
235-
if (progress.getRootVersion() >= currentVersion) {
235+
for (int upgradeVersion = currentVersion; upgradeVersion < AccumuloDataVersion.get();
236+
upgradeVersion++) {
237+
if (progress.getRootVersion() >= upgradeVersion) {
236238
log.info(
237239
"Root table has already been upgraded to version {}, moving on to next upgrader",
238-
currentVersion);
240+
upgradeVersion);
239241
continue;
240242
}
241-
log.info("Upgrading Root - current version {} as step towards target version {}", v,
242-
AccumuloDataVersion.get());
243-
var upgrader = upgraders.get(v);
243+
log.info("Upgrading Root - current version {} as step towards target version {}",
244+
upgradeVersion, AccumuloDataVersion.get());
245+
var upgrader = upgraders.get(upgradeVersion);
244246
Objects.requireNonNull(upgrader,
245-
"upgrade root: failed to find root upgrader for version " + currentVersion);
246-
upgraders.get(v).upgradeRoot(context);
247-
progressTracker.updateRootVersion(v);
247+
"upgrade root: failed to find root upgrader for version " + upgradeVersion);
248+
upgraders.get(upgradeVersion).upgradeRoot(context);
249+
progressTracker.updateRootVersion(upgradeVersion);
248250
}
249251
setStatus(UpgradeStatus.UPGRADED_ROOT, eventCoordinator);
250252

251-
for (int v = currentVersion; v < AccumuloDataVersion.get(); v++) {
252-
if (progress.getMetadataVersion() >= currentVersion) {
253+
for (int upgradeVersion = currentVersion; upgradeVersion < AccumuloDataVersion.get();
254+
upgradeVersion++) {
255+
if (progress.getMetadataVersion() >= upgradeVersion) {
253256
log.info(
254257
"Metadata table has already been upgraded to version {}, moving on to next upgrader",
255-
currentVersion);
258+
upgradeVersion);
256259
continue;
257260
}
258261
log.info(
259-
"Upgrading Metadata - current version {} as step towards target version {}", v,
260-
AccumuloDataVersion.get());
261-
var upgrader = upgraders.get(v);
262+
"Upgrading Metadata - current version {} as step towards target version {}",
263+
upgradeVersion, AccumuloDataVersion.get());
264+
var upgrader = upgraders.get(upgradeVersion);
262265
Objects.requireNonNull(upgrader,
263-
"upgrade metadata: failed to find upgrader for version " + currentVersion);
264-
upgraders.get(v).upgradeMetadata(context);
265-
progressTracker.updateMetadataVersion(v);
266+
"upgrade metadata: failed to find upgrader for version " + upgradeVersion);
267+
upgraders.get(upgradeVersion).upgradeMetadata(context);
268+
progressTracker.updateMetadataVersion(upgradeVersion);
266269
}
267270
setStatus(UpgradeStatus.UPGRADED_METADATA, eventCoordinator);
268271

0 commit comments

Comments
 (0)