This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new 51f433be28 Modified TabletGroupWatcher to only assign/balance during
upgrade (#5664)
51f433be28 is described below
commit 51f433be2829c0592110c1bb72866342680280e3
Author: Dave Marion <[email protected]>
AuthorDate: Mon Jun 30 10:15:01 2025 -0400
Modified TabletGroupWatcher to only assign/balance during upgrade (#5664)
During upgrade testing a NullPointerException was seen in the
TabletGroupWatcher when referencing Manager.getSplitter(). This
change will prevent the TabletGroupWatcher from splitting or
compacting tablets while the upgrade is in progress.
---
.../apache/accumulo/manager/TabletGroupWatcher.java | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
index 6e306936a6..ffe2e310ed 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
@@ -430,6 +430,19 @@ abstract class TabletGroupWatcher extends
AccumuloDaemonThread {
SortedMap<TServerInstance,TabletServerStatus> currentTServers, boolean
isFullScan)
throws TException, DistributedStoreException, WalMarkerException,
IOException {
+ // When upgrading the Manager needs the TabletGroupWatcher
+ // to assign and balance the root and metadata tables, but
+ // the Manager does not fully start up until the upgrade
+ // is complete. This means that objects like the Splitter
+ // are not going to be initialized and the Coordinator
+ // is not going to be started.
+ final boolean currentlyUpgrading = manager.isUpgrading();
+ if (currentlyUpgrading) {
+ LOG.debug(
+ "Currently upgrading, splits and compactions for tables in level {}
will occur once upgrade is completed.",
+ store.getLevel());
+ }
+
final TableMgmtStats tableMgmtStats = new TableMgmtStats();
final boolean shuttingDownAllTabletServers =
tableMgmtParams.getServersToShutdown().equals(currentTServers.keySet());
@@ -604,12 +617,13 @@ abstract class TabletGroupWatcher extends
AccumuloDaemonThread {
}
final boolean needsSplit =
actions.contains(ManagementAction.NEEDS_SPLITTING);
- if (needsSplit) {
+ if (!currentlyUpgrading && needsSplit) {
LOG.debug("{} may need splitting.", tm.getExtent());
manager.getSplitter().initiateSplit(tm.getExtent());
}
- if (actions.contains(ManagementAction.NEEDS_COMPACTING) &&
compactionGenerator != null) {
+ if (!currentlyUpgrading &&
actions.contains(ManagementAction.NEEDS_COMPACTING)
+ && compactionGenerator != null) {
// Check if tablet needs splitting, priority should be giving to
splits over
// compactions because it's best to compact after a split
if (!needsSplit) {