You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ed...@apache.org on 2023/02/08 19:44:21 UTC

[accumulo] branch 2.1 updated: Enforce sort order of data version for upgraders (#3191)

This is an automated email from the ASF dual-hosted git repository.

edcoleman pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/2.1 by this push:
     new 43e0243890 Enforce sort order of data version for upgraders (#3191)
43e0243890 is described below

commit 43e0243890ee24a092ec8d02e1d04dcb731eec86
Author: EdColeman <de...@etcoleman.com>
AuthorDate: Wed Feb 8 14:44:14 2023 -0500

    Enforce sort order of data version for upgraders (#3191)
    
    * Enforce sort order of data version for upgraders with immutable, sorted map
---
 .../apache/accumulo/manager/upgrade/UpgradeCoordinator.java    | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
index e6a3701dc2..d6494356ec 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
@@ -19,7 +19,9 @@
 package org.apache.accumulo.manager.upgrade;
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.Map;
+import java.util.TreeMap;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Future;
 import java.util.concurrent.SynchronousQueue;
@@ -105,8 +107,12 @@ public class UpgradeCoordinator {
   private static Logger log = LoggerFactory.getLogger(UpgradeCoordinator.class);
 
   private int currentVersion;
-  private Map<Integer,Upgrader> upgraders = Map.of(AccumuloDataVersion.SHORTEN_RFILE_KEYS,
-      new Upgrader8to9(), AccumuloDataVersion.CRYPTO_CHANGES, new Upgrader9to10());
+
+  // unmodifiable map of "current version" -> upgrader to next version.
+  // Sorted so upgrades execute in order from the oldest supported data version to current
+  private Map<Integer,Upgrader> upgraders =
+      Collections.unmodifiableMap(new TreeMap<>(Map.of(AccumuloDataVersion.SHORTEN_RFILE_KEYS,
+          new Upgrader8to9(), AccumuloDataVersion.CRYPTO_CHANGES, new Upgrader9to10())));
 
   private volatile UpgradeStatus status;