From 6f2f125e8c9d55cb7656c513bb0bd1509726ffc9 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 30 Sep 2025 17:30:06 +0000 Subject: [PATCH 1/7] replaces Manager with new FateEnv interface in fate code Added a FateEnv interface that replaces direct usage of the Manager type in fate operations. This refactoring could support changes to run fate operations outside of the Manager process. --- .../accumulo/manager/EventCoordinator.java | 7 ++- .../org/apache/accumulo/manager/Events.java | 37 +++++++++++ .../org/apache/accumulo/manager/Manager.java | 36 +++++------ .../manager/ManagerClientServiceHandler.java | 17 ++++- .../coordinator/CompactionCoordinator.java | 5 +- .../coordinator/DeadCompactionDetector.java | 6 +- .../coordinator/commit/CommitCompaction.java | 12 ++-- .../coordinator/commit/PutGcCandidates.java | 13 ++-- .../coordinator/commit/RefreshTablet.java | 12 ++-- .../commit/RenameCompactionFile.java | 10 +-- .../manager/metrics/ManagerMetrics.java | 3 +- .../manager/metrics/fate/FateMetrics.java | 6 +- .../metrics/fate/meta/MetaFateMetrics.java | 4 +- .../metrics/fate/user/UserFateMetrics.java | 4 +- .../{ManagerRepo.java => AbstractRepo.java} | 12 ++-- .../manager/tableOps/ChangeTableState.java | 11 ++-- .../accumulo/manager/tableOps/FateEnv.java | 63 +++++++++++++++++++ .../accumulo/manager/tableOps/TraceRepo.java | 5 +- .../tableOps/availability/LockTable.java | 20 +++--- .../availability/SetTabletAvailability.java | 20 +++--- .../tableOps/bulkVer2/BulkImportMove.java | 20 +++--- .../tableOps/bulkVer2/CleanUpBulkImport.java | 22 +++---- .../tableOps/bulkVer2/ComputeBulkRange.java | 10 +-- .../manager/tableOps/bulkVer2/LoadFiles.java | 49 +++++++-------- .../tableOps/bulkVer2/PrepBulkImport.java | 46 +++++++------- .../tableOps/bulkVer2/RefreshTablets.java | 14 ++--- .../tableOps/bulkVer2/TabletRefresher.java | 10 +-- .../manager/tableOps/clone/CloneMetadata.java | 12 ++-- .../tableOps/clone/ClonePermissions.java | 12 ++-- .../manager/tableOps/clone/CloneTable.java | 12 ++-- .../tableOps/clone/CloneZookeeper.java | 12 ++-- .../tableOps/clone/FinishCloneTable.java | 14 ++--- .../manager/tableOps/compact/CleanUp.java | 18 +++--- .../tableOps/compact/CompactRange.java | 12 ++-- .../tableOps/compact/CompactionDriver.java | 37 ++++++----- .../tableOps/compact/RefreshTablets.java | 10 +-- .../compact/cancel/CancelCompactions.java | 13 ++-- .../cancel/FinishCancelCompaction.java | 10 +-- .../manager/tableOps/create/ChooseDir.java | 16 ++--- .../manager/tableOps/create/CreateTable.java | 17 +++-- .../tableOps/create/FinishCreateTable.java | 15 +++-- .../tableOps/create/PopulateMetadata.java | 12 ++-- .../tableOps/create/PopulateZookeeper.java | 22 +++---- .../tableOps/create/SetupPermissions.java | 10 +-- .../manager/tableOps/delete/CleanUp.java | 30 ++++----- .../manager/tableOps/delete/DeleteTable.java | 14 ++--- .../tableOps/delete/PreDeleteTable.java | 12 ++-- .../tableOps/delete/ReserveTablets.java | 14 ++--- .../manager/tableOps/merge/CountFiles.java | 8 +-- .../manager/tableOps/merge/DeleteRows.java | 20 +++--- .../manager/tableOps/merge/DeleteTablets.java | 15 +++-- .../tableOps/merge/FinishTableRangeOp.java | 22 +++---- .../manager/tableOps/merge/MergeTablets.java | 18 +++--- .../tableOps/merge/ReserveTablets.java | 14 ++--- .../manager/tableOps/merge/TableRangeOp.java | 16 ++--- .../tableOps/merge/UnreserveAndError.java | 8 +-- .../tableOps/merge/UnreserveSystemMerge.java | 8 +-- .../tableOps/merge/VerifyMergeability.java | 8 +-- .../namespace/create/CreateNamespace.java | 12 ++-- .../create/FinishCreateNamespace.java | 14 ++--- .../PopulateZookeeperWithNamespace.java | 22 +++---- .../create/SetupNamespacePermissions.java | 8 +-- .../namespace/delete/DeleteNamespace.java | 15 +++-- .../namespace/delete/NamespaceCleanUp.java | 20 +++--- .../namespace/rename/RenameNamespace.java | 19 +++--- .../manager/tableOps/rename/RenameTable.java | 18 +++--- .../split/AllocateDirsAndEnsureOnline.java | 15 +++-- .../tableOps/split/DeleteOperationIds.java | 12 ++-- .../manager/tableOps/split/FindSplits.java | 18 +++--- .../manager/tableOps/split/PreSplit.java | 24 +++---- .../manager/tableOps/split/UpdateTablets.java | 27 ++++---- .../tableOps/tableExport/ExportTable.java | 12 ++-- .../tableExport/WriteExportFiles.java | 30 ++++----- .../tableOps/tableImport/CreateImportDir.java | 12 ++-- .../tableImport/FinishImportTable.java | 14 ++--- .../tableImport/ImportPopulateZookeeper.java | 12 ++-- .../tableImport/ImportSetupPermissions.java | 12 ++-- .../tableOps/tableImport/ImportTable.java | 12 ++-- .../tableImport/MapImportFileNames.java | 10 +-- .../tableImport/MoveExportedFiles.java | 12 ++-- .../tableImport/PopulateMetadataTable.java | 15 +++-- .../manager/tserverOps/ShutdownTServer.java | 20 +++--- .../compaction/CompactionCoordinatorTest.java | 3 +- .../manager/tableOps/ShutdownTServerTest.java | 3 +- .../tableOps/bulkVer2/LoadFilesTest.java | 21 +++---- .../compaction/ExternalCompaction_1_IT.java | 26 ++++---- .../accumulo/test/fate/FlakyFateManager.java | 3 +- .../test/fate/ManagerRepoIT_SimpleSuite.java | 8 +-- .../test/fate/SlowFateSplitManager.java | 3 +- 89 files changed, 744 insertions(+), 643 deletions(-) create mode 100644 server/manager/src/main/java/org/apache/accumulo/manager/Events.java rename server/manager/src/main/java/org/apache/accumulo/manager/tableOps/{ManagerRepo.java => AbstractRepo.java} (78%) create mode 100644 server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java b/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java index c92f97d8741..27a60cb425d 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java @@ -30,7 +30,7 @@ import com.google.common.base.Preconditions; -public class EventCoordinator { +public class EventCoordinator implements Events { private static final Logger log = LoggerFactory.getLogger(EventCoordinator.class); @@ -108,26 +108,31 @@ public KeyExtent getExtent() { } } + @Override public void event(String msg, Object... args) { log.info(String.format(msg, args)); publish(new Event()); } + @Override public void event(Ample.DataLevel level, String msg, Object... args) { log.info(String.format(msg, args)); publish(new Event(EventScope.DATA_LEVEL, level)); } + @Override public void event(TableId tableId, String msg, Object... args) { log.info(String.format(msg, args)); publish(new Event(EventScope.TABLE, tableId)); } + @Override public void event(KeyExtent extent, String msg, Object... args) { log.debug(String.format(msg, args)); publish(new Event(EventScope.TABLE_RANGE, extent)); } + @Override public void event(Collection extents, String msg, Object... args) { if (!extents.isEmpty()) { log.debug(String.format(msg, args)); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Events.java b/server/manager/src/main/java/org/apache/accumulo/manager/Events.java new file mode 100644 index 00000000000..f935deddfc6 --- /dev/null +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Events.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.accumulo.manager; + +import java.util.Collection; + +import org.apache.accumulo.core.data.TableId; +import org.apache.accumulo.core.dataImpl.KeyExtent; +import org.apache.accumulo.core.metadata.schema.Ample; + +public interface Events { + void event(String msg, Object... args); + + void event(Ample.DataLevel level, String msg, Object... args); + + void event(TableId tableId, String msg, Object... args); + + void event(KeyExtent extent, String msg, Object... args); + + void event(Collection extents, String msg, Object... args); +} diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index 3eb2d5437f9..6bc86b33dfb 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -61,9 +61,6 @@ import org.apache.accumulo.core.client.admin.CompactionConfig; import org.apache.accumulo.core.client.admin.servers.ServerId; import org.apache.accumulo.core.client.admin.servers.ServerId.Type; -import org.apache.accumulo.core.clientImpl.thrift.TableOperation; -import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType; -import org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException; import org.apache.accumulo.core.conf.AccumuloConfiguration; import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.conf.SiteConfiguration; @@ -100,6 +97,7 @@ import org.apache.accumulo.core.metadata.SystemTables; import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.core.metadata.schema.Ample.DataLevel; +import org.apache.accumulo.core.metadata.schema.ExternalCompactionId; import org.apache.accumulo.core.metrics.MetricsInfo; import org.apache.accumulo.core.metrics.MetricsProducer; import org.apache.accumulo.core.trace.TraceUtil; @@ -116,6 +114,7 @@ import org.apache.accumulo.manager.recovery.RecoveryManager; import org.apache.accumulo.manager.split.Splitter; import org.apache.accumulo.manager.state.TableCounts; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TraceRepo; import org.apache.accumulo.manager.upgrade.UpgradeCoordinator; import org.apache.accumulo.manager.upgrade.UpgradeCoordinator.UpgradeStatus; @@ -161,7 +160,7 @@ *

* The manager will also coordinate log recoveries and reports general status. */ -public class Manager extends AbstractServer implements LiveTServerSet.Listener { +public class Manager extends AbstractServer implements LiveTServerSet.Listener, FateEnv { static final Logger log = LoggerFactory.getLogger(Manager.class); @@ -205,7 +204,7 @@ public class Manager extends AbstractServer implements LiveTServerSet.Listener { // should already have been set; ConcurrentHashMap will guarantee that all threads will see // the initialized fate references after the latch is ready private final CountDownLatch fateReadyLatch = new CountDownLatch(1); - private final AtomicReference>> fateRefs = + private final AtomicReference>> fateRefs = new AtomicReference<>(); static class TServerStatus { @@ -303,7 +302,7 @@ public boolean stillManager() { * * @return the Fate object, only after the fate components are running and ready */ - public Fate fate(FateInstanceType type) { + public Fate fate(FateInstanceType type) { try { // block up to 30 seconds until it's ready; if it's still not ready, introduce some logging if (!fateReadyLatch.await(30, SECONDS)) { @@ -465,15 +464,6 @@ int displayUnassigned() { return result; } - public void mustBeOnline(final TableId tableId) throws ThriftTableOperationException { - ServerContext context = getContext(); - context.clearTableListCache(); - if (context.getTableState(tableId) != TableState.ONLINE) { - throw new ThriftTableOperationException(tableId.canonical(), null, TableOperation.MERGE, - TableOperationExceptionType.OFFLINE, "table is not online"); - } - } - public TableManager getTableManager() { return getContext().getTableManager(); } @@ -571,6 +561,11 @@ public CompactionCoordinator getCompactionCoordinator() { return compactionCoordinator; } + @Override + public void recordCompletion(ExternalCompactionId ecid) { + getCompactionCoordinator().recordCompletion(ecid); + } + public void hostOndemand(List extents) { extents.forEach(e -> Preconditions.checkArgument(DataLevel.of(e.tableId()) == DataLevel.USER)); @@ -1263,9 +1258,9 @@ public void mainWait() throws InterruptedException { Thread.sleep(500); } - protected Fate initializeFateInstance(ServerContext context, FateStore store) { + protected Fate initializeFateInstance(ServerContext context, FateStore store) { - final Fate fateInstance = new Fate<>(this, store, true, TraceRepo::toLogString, + final Fate fateInstance = new Fate<>(this, store, true, TraceRepo::toLogString, getConfiguration(), context.getScheduledExecutor()); var fateCleaner = new FateCleaner<>(store, Duration.ofHours(8), this::getSteadyTime); @@ -1525,6 +1520,11 @@ public EventCoordinator getEventCoordinator() { return nextEvent; } + @Override + public Events getEvents() { + return nextEvent; + } + public VolumeManager getVolumeManager() { return getContext().getVolumeManager(); } @@ -1614,7 +1614,7 @@ public void registerMetrics(MeterRegistry registry) { compactionCoordinator.registerMetrics(registry); } - private Map> getFateRefs() { + private Map> getFateRefs() { var fateRefs = this.fateRefs.get(); Preconditions.checkState(fateRefs != null, "Unexpected null fate references map"); return fateRefs; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java index 08eb17ee791..92ef1314355 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java @@ -60,6 +60,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.FateInstanceType; import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter; +import org.apache.accumulo.core.manager.state.tables.TableState; import org.apache.accumulo.core.manager.thrift.ManagerClientService; import org.apache.accumulo.core.manager.thrift.ManagerGoalState; import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo; @@ -78,6 +79,7 @@ import org.apache.accumulo.core.securityImpl.thrift.TDelegationToken; import org.apache.accumulo.core.securityImpl.thrift.TDelegationTokenConfig; import org.apache.accumulo.core.util.ByteBufferUtil; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TraceRepo; import org.apache.accumulo.manager.tserverOps.ShutdownTServer; import org.apache.accumulo.server.ServerContext; @@ -326,7 +328,7 @@ public void shutdownTabletServer(TInfo info, TCredentials c, String tabletServer } } - Fate fate = manager.fate(FateInstanceType.META); + Fate fate = manager.fate(FateInstanceType.META); FateId fateId = fate.startTransaction(); String msg = "Shutdown tserver " + tabletServer; @@ -354,7 +356,7 @@ public void tabletServerStopping(TInfo tinfo, TCredentials credentials, String t if (manager.shutdownTServer(tserver)) { // If there is an exception seeding the fate tx this should cause the RPC to fail which should // cause the tserver to halt. Because of that not making an attempt to handle failure here. - Fate fate = manager.fate(FateInstanceType.META); + Fate fate = manager.fate(FateInstanceType.META); var tid = fate.startTransaction(); String msg = "Shutdown tserver " + tabletServer; @@ -714,6 +716,15 @@ public TDelegationToken getDelegationToken(TInfo tinfo, TCredentials credentials } } + public static void mustBeOnline(ServerContext context, final TableId tableId) + throws ThriftTableOperationException { + context.clearTableListCache(); + if (context.getTableState(tableId) != TableState.ONLINE) { + throw new ThriftTableOperationException(tableId.canonical(), null, TableOperation.MERGE, + TableOperationExceptionType.OFFLINE, "table is not online"); + } + } + @Override public void requestTabletHosting(TInfo tinfo, TCredentials credentials, String tableIdStr, List extents) throws ThriftSecurityException, ThriftTableOperationException { @@ -725,7 +736,7 @@ public void requestTabletHosting(TInfo tinfo, TCredentials credentials, String t SecurityErrorCode.PERMISSION_DENIED); } - manager.mustBeOnline(tableId); + mustBeOnline(manager.getContext(), tableId); manager.hostOndemand(Lists.transform(extents, KeyExtent::fromThrift)); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java index 5e033273d5d..129792ec664 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java @@ -137,6 +137,7 @@ import org.apache.accumulo.manager.compaction.queue.CompactionJobPriorityQueue; import org.apache.accumulo.manager.compaction.queue.CompactionJobQueues; import org.apache.accumulo.manager.compaction.queue.ResolvedCompactionJob; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.ServiceEnvironmentImpl; import org.apache.accumulo.server.compaction.CompactionConfigStorage; @@ -270,7 +271,7 @@ static FailureCounts incrementSuccess(Object key, FailureCounts counts) { private final ServerContext ctx; private final AuditedSecurityOperation security; private final CompactionJobQueues jobQueues; - private final AtomicReference>> fateInstances; + private final AtomicReference>> fateInstances; // Exposed for tests protected final CountDownLatch shutdown = new CountDownLatch(1); @@ -290,7 +291,7 @@ static FailureCounts incrementSuccess(Object key, FailureCounts counts) { private final Set activeCompactorReservationRequest = ConcurrentHashMap.newKeySet(); public CompactionCoordinator(Manager manager, - AtomicReference>> fateInstances) { + AtomicReference>> fateInstances) { this.ctx = manager.getContext(); this.security = ctx.getSecurityOperation(); this.manager = Objects.requireNonNull(manager); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/DeadCompactionDetector.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/DeadCompactionDetector.java index cba475668eb..da852f1bb1a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/DeadCompactionDetector.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/DeadCompactionDetector.java @@ -45,7 +45,7 @@ import org.apache.accumulo.core.metadata.schema.filters.HasExternalCompactionsFilter; import org.apache.accumulo.core.util.compaction.ExternalCompactionUtil; import org.apache.accumulo.core.util.threads.ThreadPools; -import org.apache.accumulo.manager.Manager; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.util.FindCompactionTmpFiles; import org.apache.accumulo.server.util.FindCompactionTmpFiles.DeleteStats; @@ -62,11 +62,11 @@ public class DeadCompactionDetector { private final ScheduledThreadPoolExecutor schedExecutor; private final ConcurrentHashMap deadCompactions; private final Set tablesWithUnreferencedTmpFiles = new HashSet<>(); - private final AtomicReference>> fateInstances; + private final AtomicReference>> fateInstances; public DeadCompactionDetector(ServerContext context, CompactionCoordinator coordinator, ScheduledThreadPoolExecutor stpe, - AtomicReference>> fateInstances) { + AtomicReference>> fateInstances) { this.context = context; this.coordinator = coordinator; this.schedExecutor = stpe; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java index 29e626d9540..bed7e04c18e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java @@ -47,8 +47,8 @@ import org.apache.accumulo.core.spi.compaction.CompactionKind; import org.apache.accumulo.core.tabletserver.thrift.TCompactionStats; import org.apache.accumulo.core.util.Retry; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; @@ -56,7 +56,7 @@ import com.google.common.base.Preconditions; -public class CommitCompaction extends ManagerRepo { +public class CommitCompaction extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(CommitCompaction.class); private final CompactionCommitData commitData; @@ -68,7 +68,7 @@ public CommitCompaction(CompactionCommitData commitData, String newDatafile) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { var ecid = ExternalCompactionId.of(commitData.ecid); var newFile = Optional.ofNullable(newDatafile).map(f -> ReferencedTabletFile.of(new Path(f))); @@ -79,7 +79,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { // process died and now its running again. In this case commit should do nothing, but its // important to still carry on with the rest of the steps after commit. This code ignores a that // fact that a commit may not have happened in the current call and continues for this reason. - TabletMetadata tabletMetadata = commitCompaction(manager.getContext(), ecid, newFile); + TabletMetadata tabletMetadata = commitCompaction(env.getContext(), ecid, newFile); String loc = null; if (tabletMetadata != null && tabletMetadata.getLocation() != null) { @@ -88,7 +88,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { // This will causes the tablet to be reexamined to see if it needs any more compactions. var extent = KeyExtent.fromThrift(commitData.textent); - manager.getEventCoordinator().event(extent, "Compaction completed %s", extent); + env.getEvents().event(extent, "Compaction completed %s", extent); return new PutGcCandidates(commitData, loc); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java index 3e5b62caa93..1a5c016033a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java @@ -21,10 +21,10 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.metadata.schema.ExternalCompactionId; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; -public class PutGcCandidates extends ManagerRepo { +public class PutGcCandidates extends AbstractRepo { private static final long serialVersionUID = 1L; private final CompactionCommitData commitData; private final String refreshLocation; @@ -35,14 +35,13 @@ public PutGcCandidates(CompactionCommitData commitData, String refreshLocation) } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // add the GC candidates - manager.getContext().getAmple().putGcCandidates(commitData.getTableId(), - commitData.getJobFiles()); + env.getContext().getAmple().putGcCandidates(commitData.getTableId(), commitData.getJobFiles()); if (refreshLocation == null) { - manager.getCompactionCoordinator().recordCompletion(ExternalCompactionId.of(commitData.ecid)); + env.recordCompletion(ExternalCompactionId.of(commitData.ecid)); return null; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java index bf5900ad4a2..b761c0cc985 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java @@ -29,13 +29,13 @@ import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.core.metadata.schema.ExternalCompactionId; import org.apache.accumulo.core.metadata.schema.TabletMetadata; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.bulkVer2.TabletRefresher; import com.google.common.util.concurrent.MoreExecutors; -public class RefreshTablet extends ManagerRepo { +public class RefreshTablet extends AbstractRepo { private static final long serialVersionUID = 1L; private final TKeyExtent extent; private final String tserverInstance; @@ -48,7 +48,7 @@ public RefreshTablet(String ecid, TKeyExtent extent, String tserverInstance) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { TServerInstance tsi = new TServerInstance(tserverInstance); @@ -57,13 +57,13 @@ public Repo call(FateId fateId, Manager manager) throws Exception { ExecutorService executorService = MoreExecutors.newDirectExecutorService(); try { TabletRefresher.refreshTablets(executorService, "compaction:" + KeyExtent.fromThrift(extent), - manager.getContext(), manager::onlineTabletServers, + env.getContext(), env::onlineTabletServers, Map.of(TabletMetadata.Location.current(tsi), List.of(extent))); } finally { executorService.shutdownNow(); } - manager.getCompactionCoordinator().recordCompletion(ExternalCompactionId.of(compactionId)); + env.recordCompletion(ExternalCompactionId.of(compactionId)); return null; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java index af271a219a7..f50107e22aa 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java @@ -23,14 +23,14 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.metadata.ReferencedTabletFile; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.tablets.TabletNameGenerator; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RenameCompactionFile extends ManagerRepo { +public class RenameCompactionFile extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(RenameCompactionFile.class); private static final long serialVersionUID = 1L; private final CompactionCommitData commitData; @@ -40,9 +40,9 @@ public RenameCompactionFile(CompactionCommitData commitData) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { ReferencedTabletFile newDatafile = null; - var ctx = manager.getContext(); + var ctx = env.getContext(); var tmpPath = new Path(commitData.outputTmpPath); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/ManagerMetrics.java b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/ManagerMetrics.java index c6c0a57c36e..cc8c33bc897 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/ManagerMetrics.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/ManagerMetrics.java @@ -40,6 +40,7 @@ import org.apache.accumulo.manager.metrics.fate.FateMetrics; import org.apache.accumulo.manager.metrics.fate.meta.MetaFateMetrics; import org.apache.accumulo.manager.metrics.fate.user.UserFateMetrics; +import org.apache.accumulo.manager.tableOps.FateEnv; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.MeterRegistry; @@ -54,7 +55,7 @@ public class ManagerMetrics implements MetricsProducer { private final AtomicInteger compactionConfigurationError = new AtomicInteger(0); public void configureFateMetrics(final AccumuloConfiguration conf, final Manager manager, - Map> fateRefs) { + Map> fateRefs) { requireNonNull(conf, "AccumuloConfiguration must not be null"); requireNonNull(conf, "Manager must not be null"); fateMetrics = List.of( diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/FateMetrics.java b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/FateMetrics.java index 0bbb131e6ef..bf69885b9a1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/FateMetrics.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/FateMetrics.java @@ -36,7 +36,7 @@ import org.apache.accumulo.core.fate.ReadOnlyFateStore.TStatus; import org.apache.accumulo.core.metrics.MetricsProducer; import org.apache.accumulo.core.util.threads.ThreadPools; -import org.apache.accumulo.manager.Manager; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,14 +58,14 @@ public abstract class FateMetrics implements Metrics protected final ServerContext context; protected final ReadOnlyFateStore> readOnlyFateStore; protected final long refreshDelay; - private final Set> fateExecutors; + private final Set> fateExecutors; private MeterRegistry registry; protected final AtomicLong totalCurrentOpsCount = new AtomicLong(0); private final EnumMap txStatusCounters = new EnumMap<>(TStatus.class); public FateMetrics(final ServerContext context, final long minimumRefreshDelay, - Set> fateExecutors) { + Set> fateExecutors) { this.context = context; this.refreshDelay = Math.max(DEFAULT_MIN_REFRESH_DELAY, minimumRefreshDelay); this.readOnlyFateStore = Objects.requireNonNull(buildReadOnlyStore(context)); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/meta/MetaFateMetrics.java b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/meta/MetaFateMetrics.java index 44195253ea7..7e19d70e847 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/meta/MetaFateMetrics.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/meta/MetaFateMetrics.java @@ -28,8 +28,8 @@ import org.apache.accumulo.core.fate.FateExecutor; import org.apache.accumulo.core.fate.ReadOnlyFateStore; import org.apache.accumulo.core.fate.zookeeper.MetaFateStore; -import org.apache.accumulo.manager.Manager; import org.apache.accumulo.manager.metrics.fate.FateMetrics; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.zookeeper.KeeperException; @@ -42,7 +42,7 @@ public class MetaFateMetrics extends FateMetrics { private final AtomicLong fateErrorsGauge = new AtomicLong(0); public MetaFateMetrics(ServerContext context, long minimumRefreshDelay, - Set> fateExecutors) { + Set> fateExecutors) { super(context, minimumRefreshDelay, fateExecutors); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/user/UserFateMetrics.java b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/user/UserFateMetrics.java index 7fadf8ae272..7fab73944d8 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/user/UserFateMetrics.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/metrics/fate/user/UserFateMetrics.java @@ -24,14 +24,14 @@ import org.apache.accumulo.core.fate.ReadOnlyFateStore; import org.apache.accumulo.core.fate.user.UserFateStore; import org.apache.accumulo.core.metadata.SystemTables; -import org.apache.accumulo.manager.Manager; import org.apache.accumulo.manager.metrics.fate.FateMetrics; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; public class UserFateMetrics extends FateMetrics { public UserFateMetrics(ServerContext context, long minimumRefreshDelay, - Set> fateExecutors) { + Set> fateExecutors) { super(context, minimumRefreshDelay, fateExecutors); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ManagerRepo.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java similarity index 78% rename from server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ManagerRepo.java rename to server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java index 3bcbac99592..d988eca5b72 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ManagerRepo.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java @@ -20,19 +20,16 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -public abstract class ManagerRepo implements Repo { +public abstract class AbstractRepo implements Repo { private static final long serialVersionUID = 1L; - @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return 0; } - @Override - public void undo(FateId fateId, Manager environment) throws Exception {} + public void undo(FateId fateId, FateEnv environment) throws Exception {} @Override public String getName() { @@ -44,7 +41,6 @@ public String getReturn() { return null; } - @Override - public abstract Repo call(FateId fateId, Manager environment) throws Exception; + public abstract Repo call(FateId fateId, FateEnv environment) throws Exception; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java index 8a852a89d75..77583ce73c2 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java @@ -28,10 +28,9 @@ import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.fate.zookeeper.LockRange; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.Manager; import org.slf4j.LoggerFactory; -public class ChangeTableState extends ManagerRepo { +public class ChangeTableState extends AbstractRepo { private static final long serialVersionUID = 1L; private final TableId tableId; @@ -52,7 +51,7 @@ public ChangeTableState(NamespaceId namespaceId, TableId tableId, TableOperation } @Override - public long isReady(FateId fateId, Manager env) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { // reserve the table so that this op does not run concurrently with create, clone, or delete // table return Utils.reserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ, true, top) @@ -61,7 +60,7 @@ public long isReady(FateId fateId, Manager env) throws Exception { } @Override - public Repo call(FateId fateId, Manager env) { + public Repo call(FateId fateId, FateEnv env) { TableState ts = TableState.ONLINE; if (top == TableOperation.OFFLINE) { ts = TableState.OFFLINE; @@ -71,12 +70,12 @@ public Repo call(FateId fateId, Manager env) { Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); LoggerFactory.getLogger(ChangeTableState.class).debug("Changed table state {} {}", tableId, ts); - env.getEventCoordinator().event(tableId, "Set table state of %s to %s", tableId, ts); + env.getEvents().event(tableId, "Set table state of %s to %s", tableId, ts); return null; } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java new file mode 100644 index 00000000000..83815f75b16 --- /dev/null +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.accumulo.manager.tableOps; + +import java.util.Set; +import java.util.concurrent.ExecutorService; + +import org.apache.accumulo.core.lock.ServiceLock; +import org.apache.accumulo.core.manager.thrift.BulkImportState; +import org.apache.accumulo.core.metadata.TServerInstance; +import org.apache.accumulo.core.metadata.schema.ExternalCompactionId; +import org.apache.accumulo.core.util.time.SteadyTime; +import org.apache.accumulo.manager.Events; +import org.apache.accumulo.manager.split.Splitter; +import org.apache.accumulo.server.ServerContext; +import org.apache.accumulo.server.fs.VolumeManager; +import org.apache.accumulo.server.tables.TableManager; + +public interface FateEnv { + ServerContext getContext(); + + Events getEvents(); + + void recordCompletion(ExternalCompactionId ecid); + + Set onlineTabletServers(); + + TableManager getTableManager(); + + VolumeManager getVolumeManager(); + + void updateBulkImportStatus(String string, BulkImportState bulkImportState); + + void removeBulkImportStatus(String sourceDir); + + // TODO rename + ServiceLock getManagerLock(); + + SteadyTime getSteadyTime(); + + ExecutorService getTabletRefreshThreadPool(); + + Splitter getSplitter(); + + ExecutorService getRenamePool(); + +} diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/TraceRepo.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/TraceRepo.java index 85706016f84..f9da68dccad 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/TraceRepo.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/TraceRepo.java @@ -22,7 +22,6 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.trace.TraceUtil; -import org.apache.accumulo.manager.Manager; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Scope; @@ -111,9 +110,9 @@ public String getReturn() { /** * @return string version of Repo that is suitable for logging */ - public static String toLogString(Repo repo) { + public static String toLogString(Repo repo) { if (repo instanceof TraceRepo) { - repo = ((TraceRepo) repo).repo; + repo = ((TraceRepo) repo).repo; } return repo.getClass() + " " + repo.getName(); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java index 2d12f627dfd..bec2e30d6c6 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java @@ -26,11 +26,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class LockTable extends ManagerRepo { +public class LockTable extends AbstractRepo { private static final long serialVersionUID = 1L; private final TableId tableId; @@ -47,23 +47,23 @@ public LockTable(TableId tableId, NamespaceId namespaceId, TRange range, } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { - return Utils.reserveNamespace(manager.getContext(), namespaceId, fateId, + public long isReady(FateId fateId, FateEnv env) throws Exception { + return Utils.reserveNamespace(env.getContext(), namespaceId, fateId, DistributedReadWriteLock.LockType.READ, true, TableOperation.SET_TABLET_AVAILABILITY) - + Utils.reserveTable(manager.getContext(), tableId, fateId, + + Utils.reserveTable(env.getContext(), tableId, fateId, DistributedReadWriteLock.LockType.WRITE, true, TableOperation.SET_TABLET_AVAILABILITY); } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { return new SetTabletAvailability(tableId, namespaceId, tRange, tabletAvailability); } @Override - public void undo(FateId fateId, Manager manager) throws Exception { - Utils.unreserveNamespace(manager.getContext(), namespaceId, fateId, + public void undo(FateId fateId, FateEnv env) throws Exception { + Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, DistributedReadWriteLock.LockType.READ); - Utils.unreserveTable(manager.getContext(), tableId, fateId, + Utils.unreserveTable(env.getContext(), tableId, fateId, DistributedReadWriteLock.LockType.WRITE); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java index 8c4ef157273..b5cc45ff803 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java @@ -43,14 +43,14 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletsMetadata; import org.apache.accumulo.core.util.Timer; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class SetTabletAvailability extends ManagerRepo { +public class SetTabletAvailability extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(SetTabletAvailability.class); @@ -69,9 +69,9 @@ public SetTabletAvailability(TableId tableId, NamespaceId namespaceId, TRange ra } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { - if (manager.getContext().getTableState(tableId) != TableState.ONLINE) { + if (env.getContext().getTableState(tableId) != TableState.ONLINE) { throw new AcceptableThriftTableOperationException(tableId.canonical(), null, TableOperation.COMPACT, TableOperationExceptionType.OFFLINE, "The table is not online."); } @@ -101,10 +101,10 @@ public long isReady(FateId fateId, Manager manager) throws Exception { var start = Timer.startNew(); try ( - TabletsMetadata m = manager.getContext().getAmple().readTablets().forTable(tableId) + TabletsMetadata m = env.getContext().getAmple().readTablets().forTable(tableId) .overlapping(scanRangeStart, true, null).build(); Ample.AsyncConditionalTabletsMutator mutator = - manager.getContext().getAmple().conditionallyMutateTablets(resultsConsumer)) { + env.getContext().getAmple().conditionallyMutateTablets(resultsConsumer)) { for (TabletMetadata tm : m) { final KeyExtent tabletExtent = tm.getExtent(); LOG.trace("Evaluating tablet {} against range {}", tabletExtent, range); @@ -149,9 +149,9 @@ public long isReady(FateId fateId, Manager manager) throws Exception { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { - Utils.unreserveNamespace(manager.getContext(), namespaceId, fateId, LockType.READ); - Utils.unreserveTable(manager.getContext(), tableId, fateId, LockType.WRITE); + public Repo call(FateId fateId, FateEnv env) throws Exception { + Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); + Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); return null; } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java index fdc3b06507c..8766926d067 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java @@ -29,8 +29,8 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.manager.thrift.BulkImportState; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; @@ -51,7 +51,7 @@ * about the request. To prevent problems like this, an Arbitrator is used. Before starting any new * request, the tablet server checks the Arbitrator to see if the request is still valid. */ -class BulkImportMove extends ManagerRepo { +class BulkImportMove extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -64,19 +64,19 @@ public BulkImportMove(BulkInfo bulkInfo) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { final Path bulkDir = new Path(bulkInfo.bulkDir); final Path sourceDir = new Path(bulkInfo.sourceDir); log.debug("{} sourceDir {}", fateId, sourceDir); - VolumeManager fs = manager.getVolumeManager(); + VolumeManager fs = env.getVolumeManager(); try { - manager.updateBulkImportStatus(sourceDir.toString(), BulkImportState.MOVING); + env.updateBulkImportStatus(sourceDir.toString(), BulkImportState.MOVING); Map oldToNewNameMap = BulkSerialize.readRenameMap(bulkDir.toString(), fs::open); - moveFiles(fateId, sourceDir, bulkDir, manager, fs, oldToNewNameMap); + moveFiles(fateId, sourceDir, bulkDir, env, fs, oldToNewNameMap); return new LoadFiles(bulkInfo); } catch (Exception ex) { @@ -89,9 +89,9 @@ public Repo call(FateId fateId, Manager manager) throws Exception { /** * For every entry in renames, move the file from the key path to the value path */ - private void moveFiles(FateId fateId, Path sourceDir, Path bulkDir, Manager manager, + private void moveFiles(FateId fateId, Path sourceDir, Path bulkDir, FateEnv env, final VolumeManager fs, Map renames) throws Exception { - manager.getContext().getAmple().addBulkLoadInProgressFlag( + env.getContext().getAmple().addBulkLoadInProgressFlag( "/" + bulkDir.getParent().getName() + "/" + bulkDir.getName(), fateId); Map oldToNewMap = new HashMap<>(); @@ -101,7 +101,7 @@ private void moveFiles(FateId fateId, Path sourceDir, Path bulkDir, Manager mana oldToNewMap.put(originalPath, newPath); } try { - fs.bulkRename(oldToNewMap, manager.getRenamePool(), fateId); + fs.bulkRename(oldToNewMap, env.getRenamePool(), fateId); } catch (IOException ioe) { throw new AcceptableThriftTableOperationException(bulkInfo.tableId.canonical(), null, TableOperation.BULK_IMPORT, TableOperationExceptionType.OTHER, diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java index 90026173e5d..402a03f40c4 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java @@ -37,15 +37,15 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType; import org.apache.accumulo.core.util.Retry; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CleanUpBulkImport extends ManagerRepo { +public class CleanUpBulkImport extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -58,10 +58,10 @@ public CleanUpBulkImport(BulkInfo info) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { - manager.updateBulkImportStatus(info.sourceDir, BulkImportState.CLEANUP); + public Repo call(FateId fateId, FateEnv env) throws Exception { + env.updateBulkImportStatus(info.sourceDir, BulkImportState.CLEANUP); log.debug("{} removing the bulkDir processing flag file in {}", fateId, info.bulkDir); - Ample ample = manager.getContext().getAmple(); + Ample ample = env.getContext().getAmple(); Path bulkDir = new Path(info.bulkDir); ample.removeBulkLoadInProgressFlag( "/" + bulkDir.getParent().getName() + "/" + bulkDir.getName()); @@ -75,20 +75,20 @@ public Repo call(FateId fateId, Manager manager) throws Exception { firstSplit, lastSplit); removeBulkLoadEntries(ample, info.tableId, fateId, firstSplit, lastSplit); - Utils.unreserveHdfsDirectory(manager.getContext(), info.sourceDir, fateId); - Utils.getReadLock(manager.getContext(), info.tableId, fateId, LockRange.infinite()).unlock(); + Utils.unreserveHdfsDirectory(env.getContext(), info.sourceDir, fateId); + Utils.getReadLock(env.getContext(), info.tableId, fateId, LockRange.infinite()).unlock(); // delete json renames and mapping files Path renamingFile = new Path(bulkDir, Constants.BULK_RENAME_FILE); Path mappingFile = new Path(bulkDir, Constants.BULK_LOAD_MAPPING); try { - manager.getVolumeManager().delete(renamingFile); - manager.getVolumeManager().delete(mappingFile); + env.getVolumeManager().delete(renamingFile); + env.getVolumeManager().delete(mappingFile); } catch (IOException ioe) { log.debug("{} Failed to delete renames and/or loadmap", fateId, ioe); } log.debug("completing bulkDir import transaction " + fateId); - manager.removeBulkImportStatus(info.sourceDir); + env.removeBulkImportStatus(info.sourceDir); return null; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java index b0aa135f0fe..8c0d3dc15e1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java @@ -26,15 +26,15 @@ import org.apache.accumulo.core.dataImpl.KeyExtent; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ComputeBulkRange extends ManagerRepo { +public class ComputeBulkRange extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(ComputeBulkRange.class); @@ -50,9 +50,9 @@ public ComputeBulkRange(TableId tableId, String sourceDir, boolean setTime) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { - VolumeManager fs = manager.getVolumeManager(); + VolumeManager fs = env.getVolumeManager(); final Path bulkDir = new Path(bulkInfo.sourceDir); try (LoadMappingIterator lmi = diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java index 4bb58b1bfdb..b2c6743b01e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java @@ -66,8 +66,8 @@ import org.apache.accumulo.core.trace.TraceUtil; import org.apache.accumulo.core.util.PeekingIterator; import org.apache.accumulo.core.util.Timer; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.accumulo.server.tablets.TabletTime; import org.apache.hadoop.fs.Path; @@ -83,7 +83,7 @@ * Make asynchronous load calls to each overlapping Tablet. This RepO does its work on the isReady * and will return a linear sleep value based on the largest number of Tablets on a TabletServer. */ -class LoadFiles extends ManagerRepo { +class LoadFiles extends AbstractRepo { // visible for testing interface TabletsMetadataFactory { @@ -103,44 +103,44 @@ public LoadFiles(BulkInfo bulkInfo) { } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { log.info("Starting for {} (tid = {})", bulkInfo.sourceDir, fateId); - if (manager.onlineTabletServers().isEmpty()) { + if (env.onlineTabletServers().isEmpty()) { log.warn("There are no tablet server to process bulkDir import, waiting (fateId = " + fateId + ")"); return 100; } - VolumeManager fs = manager.getVolumeManager(); + VolumeManager fs = env.getVolumeManager(); final Path bulkDir = new Path(bulkInfo.bulkDir); - manager.updateBulkImportStatus(bulkInfo.sourceDir, BulkImportState.LOADING); + env.updateBulkImportStatus(bulkInfo.sourceDir, BulkImportState.LOADING); try (LoadMappingIterator lmi = BulkSerialize.getUpdatedLoadMapping(bulkDir.toString(), bulkInfo.tableId, fs::open)) { - Loader loader = new Loader(manager, bulkInfo.tableId); + Loader loader = new Loader(env, bulkInfo.tableId); List fetchCols = new ArrayList<>(List.of(PREV_ROW, LOCATION, LOADED, TIME)); if (loader.pauseLimit > 0) { fetchCols.add(FILES); } - TabletsMetadataFactory tmf = (startRow) -> TabletsMetadata.builder(manager.getContext()) + TabletsMetadataFactory tmf = (startRow) -> TabletsMetadata.builder(env.getContext()) .forTable(bulkInfo.tableId).overlapping(startRow, null).checkConsistency() .fetch(fetchCols.toArray(new ColumnType[0])).build(); - int skip = manager.getContext().getTableConfiguration(bulkInfo.tableId) + int skip = env.getContext().getTableConfiguration(bulkInfo.tableId) .getCount(Property.TABLE_BULK_SKIP_THRESHOLD); - return loadFiles(loader, bulkInfo, bulkDir, lmi, tmf, manager, fateId, skip); + return loadFiles(loader, bulkInfo, bulkDir, lmi, tmf, fateId, skip); } } @Override - public Repo call(final FateId fateId, final Manager manager) { + public Repo call(final FateId fateId, final FateEnv env) { return new RefreshTablets(bulkInfo); } // visible for testing public static class Loader { - private final Manager manager; + private final FateEnv env; private final long pauseLimit; private Path bulkDir; @@ -150,20 +150,19 @@ public static class Loader { private Map> loadingFiles; private long skipped = 0; - public Loader(Manager manager, TableId tableId) { - Objects.requireNonNull(manager, "Manager must be supplied"); + public Loader(FateEnv env, TableId tableId) { + Objects.requireNonNull(env, "Fate env must be supplied"); Objects.requireNonNull(tableId, "Table ID must be supplied"); - this.manager = manager; + this.env = env; this.pauseLimit = - manager.getContext().getTableConfiguration(tableId).getCount(Property.TABLE_FILE_PAUSE); + env.getContext().getTableConfiguration(tableId).getCount(Property.TABLE_FILE_PAUSE); } - void start(Path bulkDir, Manager manager, TableId tableId, FateId fateId, boolean setTime) - throws Exception { + void start(Path bulkDir, TableId tableId, FateId fateId, boolean setTime) throws Exception { this.bulkDir = bulkDir; this.fateId = fateId; this.setTime = setTime; - conditionalMutator = manager.getContext().getAmple().conditionallyMutateTablets(); + conditionalMutator = env.getContext().getAmple().conditionallyMutateTablets(); this.skipped = 0; this.loadingFiles = new HashMap<>(); } @@ -315,7 +314,7 @@ private Map allocateTimestamps(List tablets, int private Map allocateTimestamps(HostAndPort server, List extents, int numStamps) { TabletServerClientService.Client client = null; - var context = manager.getContext(); + var context = env.getContext(); try { log.trace("{} sending allocate timestamps request to {} for {} extents", fateId, server, @@ -352,7 +351,7 @@ long finish() { if (condResult.getStatus() == Status.ACCEPTED) { loadingFiles.get(extent).forEach(file -> TabletLogger.bulkImported(extent, file)); // Trigger a check for compaction now that new files were added via bulk load - manager.getEventCoordinator().event(extent, "Bulk load completed on tablet %s", extent); + env.getEvents().event(extent, "Bulk load completed on tablet %s", extent); } else { seenFailure.set(true); var metadata = condResult.readMetadata(); @@ -393,8 +392,8 @@ static class ImportTimingStats { */ // visible for testing static long loadFiles(Loader loader, BulkInfo bulkInfo, Path bulkDir, - LoadMappingIterator loadMapIter, TabletsMetadataFactory factory, Manager manager, - FateId fateId, int skipDistance) throws Exception { + LoadMappingIterator loadMapIter, TabletsMetadataFactory factory, FateId fateId, + int skipDistance) throws Exception { PeekingIterator> lmi = new PeekingIterator<>(loadMapIter); Map.Entry loadMapEntry = lmi.peek(); @@ -403,7 +402,7 @@ static long loadFiles(Loader loader, BulkInfo bulkInfo, Path bulkDir, String fmtTid = fateId.getTxUUIDStr(); log.trace("{}: Started loading files at row: {}", fmtTid, startRow); - loader.start(bulkDir, manager, bulkInfo.tableId, fateId, bulkInfo.setTime); + loader.start(bulkDir, bulkInfo.tableId, fateId, bulkInfo.setTime); ImportTimingStats importTimingStats = new ImportTimingStats(); Timer timer = Timer.startNew(); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java index 06c47a5d779..35a51276157 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java @@ -50,8 +50,8 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletsMetadata; import org.apache.accumulo.core.util.PeekingIterator; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.fs.VolumeManager; @@ -74,7 +74,7 @@ * * @since 2.0.0 */ -public class PrepBulkImport extends ManagerRepo { +public class PrepBulkImport extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -87,19 +87,19 @@ public PrepBulkImport(BulkInfo info) { } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { - long wait = Utils.reserveTable(manager.getContext(), bulkInfo.tableId, fateId, + public long isReady(FateId fateId, FateEnv env) throws Exception { + long wait = Utils.reserveTable(env.getContext(), bulkInfo.tableId, fateId, DistributedReadWriteLock.LockType.READ, true, TableOperation.BULK_IMPORT, LockRange.of(bulkInfo.firstSplit, bulkInfo.lastSplit)); if (wait > 0) { return wait; } - if (manager.onlineTabletServers().isEmpty()) { + if (env.onlineTabletServers().isEmpty()) { return 500; } - return Utils.reserveHdfsDirectory(manager.getContext(), bulkInfo.sourceDir, fateId); + return Utils.reserveHdfsDirectory(env.getContext(), bulkInfo.sourceDir, fateId); } @VisibleForTesting @@ -220,15 +220,15 @@ private static void checkFilesPerTablet(String tableId, int maxFilesPerTablet, } } - private void checkForMerge(final Manager manager, final FateId fateId) throws Exception { + private void checkForMerge(final ServerContext ctx, final FateId fateId) throws Exception { - VolumeManager fs = manager.getVolumeManager(); + VolumeManager fs = ctx.getVolumeManager(); final Path bulkDir = new Path(bulkInfo.sourceDir); - int maxTablets = manager.getContext().getTableConfiguration(bulkInfo.tableId) - .getCount(Property.TABLE_BULK_MAX_TABLETS); - int maxFilesPerTablet = manager.getContext().getTableConfiguration(bulkInfo.tableId) - .getCount(Property.TABLE_BULK_MAX_TABLET_FILES); + int maxTablets = + ctx.getTableConfiguration(bulkInfo.tableId).getCount(Property.TABLE_BULK_MAX_TABLETS); + int maxFilesPerTablet = + ctx.getTableConfiguration(bulkInfo.tableId).getCount(Property.TABLE_BULK_MAX_TABLET_FILES); try (LoadMappingIterator lmi = BulkSerialize.readLoadMapping(bulkDir.toString(), bulkInfo.tableId, fs::open)) { @@ -239,8 +239,8 @@ private void checkForMerge(final Manager manager, final FateId fateId) throws Ex @Override public Iterator newTabletIter(Text startRow) { - tm = TabletsMetadata.builder(manager.getContext()).forTable(bulkInfo.tableId) - .overlapping(startRow, null).checkConsistency().fetch(PREV_ROW).build(); + tm = TabletsMetadata.builder(ctx).forTable(bulkInfo.tableId).overlapping(startRow, null) + .checkConsistency().fetch(PREV_ROW).build(); return tm.stream().map(TabletMetadata::getExtent).iterator(); } @@ -252,24 +252,24 @@ public void close() { } }; - int skip = manager.getContext().getTableConfiguration(bulkInfo.tableId) - .getCount(Property.TABLE_BULK_SKIP_THRESHOLD); + int skip = + ctx.getTableConfiguration(bulkInfo.tableId).getCount(Property.TABLE_BULK_SKIP_THRESHOLD); validateLoadMapping(bulkInfo.tableId.canonical(), lmi, tabletIterFactory, maxTablets, maxFilesPerTablet, fateId, skip); } } @Override - public Repo call(final FateId fateId, final Manager manager) throws Exception { + public Repo call(final FateId fateId, final FateEnv env) throws Exception { // now that table lock is acquired check that all splits in load mapping exists in table - checkForMerge(manager, fateId); + checkForMerge(env.getContext(), fateId); - VolumeManager fs = manager.getVolumeManager(); - final UniqueNameAllocator namer = manager.getContext().getUniqueNameAllocator(); + VolumeManager fs = env.getVolumeManager(); + final UniqueNameAllocator namer = env.getContext().getUniqueNameAllocator(); Path sourceDir = new Path(bulkInfo.sourceDir); List files = BulkImport.filterInvalid(fs.listStatus(sourceDir)); - Path bulkDir = createNewBulkDir(manager.getContext(), fs, bulkInfo.tableId); + Path bulkDir = createNewBulkDir(env.getContext(), fs, bulkInfo.tableId); Path mappingFile = new Path(sourceDir, Constants.BULK_LOAD_MAPPING); Map oldToNewNameMap = new HashMap<>(); @@ -317,7 +317,7 @@ private Path createNewBulkDir(ServerContext context, VolumeManager fs, TableId t } @Override - public void undo(FateId fateId, Manager environment) throws Exception { + public void undo(FateId fateId, FateEnv environment) throws Exception { // unreserve sourceDir/error directories Utils.unreserveHdfsDirectory(environment.getContext(), bulkInfo.sourceDir, fateId); Utils.getReadLock(environment.getContext(), bulkInfo.tableId, fateId, LockRange.infinite()) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java index d166eda3c3b..c0aa34ad062 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java @@ -20,8 +20,8 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; /** * This Repo asks hosted tablets that were bulk loaded into to refresh their metadata. It works by @@ -30,7 +30,7 @@ * location its ok. That means the tablet either unloaded before of after the snapshot. In either * case the tablet will see the bulk files the next time its hosted somewhere. */ -public class RefreshTablets extends ManagerRepo { +public class RefreshTablets extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -41,15 +41,15 @@ public RefreshTablets(BulkInfo bulkInfo) { } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { return 0; } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { - TabletRefresher.refresh(manager, fateId, bulkInfo.tableId, bulkInfo.firstSplit, - bulkInfo.lastSplit, tabletMetadata -> tabletMetadata.getLoaded().containsValue(fateId)); + TabletRefresher.refresh(env, fateId, bulkInfo.tableId, bulkInfo.firstSplit, bulkInfo.lastSplit, + tabletMetadata -> tabletMetadata.getLoaded().containsValue(fateId)); return new CleanUpBulkImport(bulkInfo); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java index 339857ec20a..1f7b1e8965f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java @@ -48,7 +48,7 @@ import org.apache.accumulo.core.tabletserver.thrift.TabletServerClientService; import org.apache.accumulo.core.trace.TraceUtil; import org.apache.accumulo.core.util.Retry; -import org.apache.accumulo.manager.Manager; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.thrift.TException; import org.slf4j.Logger; @@ -60,10 +60,10 @@ public class TabletRefresher { private static final Logger log = LoggerFactory.getLogger(TabletRefresher.class); - public static void refresh(Manager manager, FateId fateId, TableId tableId, byte[] startRow, + public static void refresh(FateEnv env, FateId fateId, TableId tableId, byte[] startRow, byte[] endRow, Predicate needsRefresh) { - try (var tablets = manager.getContext().getAmple().readTablets().forTable(tableId) + try (var tablets = env.getContext().getAmple().readTablets().forTable(tableId) .overlapping(startRow, endRow).checkConsistency() .fetch(ColumnType.LOADED, ColumnType.LOCATION, ColumnType.PREV_ROW).build()) { @@ -81,8 +81,8 @@ public static void refresh(Manager manager, FateId fateId, TableId tableId, byte var refreshesNeeded = batch.stream().collect(groupingBy(TabletMetadata::getLocation, mapping(tabletMetadata -> tabletMetadata.getExtent().toThrift(), toList()))); - refreshTablets(manager.getTabletRefreshThreadPool(), fateId.canonical(), - manager.getContext(), () -> manager.onlineTabletServers(), refreshesNeeded); + refreshTablets(env.getTabletRefreshThreadPool(), fateId.canonical(), env.getContext(), + () -> env.onlineTabletServers(), refreshesNeeded); }); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java index 8f82ddbf3d6..cb9ed1c0786 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java @@ -20,12 +20,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.util.MetadataTableUtil; import org.slf4j.LoggerFactory; -class CloneMetadata extends ManagerRepo { +class CloneMetadata extends AbstractRepo { private static final long serialVersionUID = 1L; private final CloneInfo cloneInfo; @@ -35,12 +35,12 @@ public CloneMetadata(CloneInfo cloneInfo) { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { LoggerFactory.getLogger(CloneMetadata.class) .info(String.format("Cloning %s with tableId %s from srcTableId %s", cloneInfo.getTableName(), cloneInfo.getTableId(), cloneInfo.getSrcTableId())); @@ -54,7 +54,7 @@ public Repo call(FateId fateId, Manager environment) throws Exception { } @Override - public void undo(FateId fateId, Manager environment) throws Exception { + public void undo(FateId fateId, FateEnv environment) throws Exception { MetadataTableUtil.deleteTable(cloneInfo.getTableId(), false, environment.getContext(), environment.getManagerLock()); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java index 79ba23a9408..737314ba5b7 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java @@ -26,11 +26,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.TablePermission; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.LoggerFactory; -class ClonePermissions extends ManagerRepo { +class ClonePermissions extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -41,12 +41,12 @@ public ClonePermissions(CloneInfo cloneInfo) { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { // give all table permissions to the creator for (TablePermission permission : TablePermission.values()) { try { @@ -72,7 +72,7 @@ public Repo call(FateId fateId, Manager environment) throws Exception { } @Override - public void undo(FateId fateId, Manager environment) throws Exception { + public void undo(FateId fateId, FateEnv environment) throws Exception { environment.getContext().getSecurityOperation().deleteTable(environment.getContext().rpcCreds(), cloneInfo.getTableId(), cloneInfo.getNamespaceId()); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java index dd343bd9b80..acff1463d00 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java @@ -27,11 +27,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class CloneTable extends ManagerRepo { +public class CloneTable extends AbstractRepo { private static final long serialVersionUID = 1L; private final CloneInfo cloneInfo; @@ -44,7 +44,7 @@ public CloneTable(String user, NamespaceId srcNamespaceId, TableId srcTableId, } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { long val = Utils.reserveNamespace(environment.getContext(), cloneInfo.getNamespaceId(), fateId, LockType.READ, true, TableOperation.CLONE); val += Utils.reserveTable(environment.getContext(), cloneInfo.getSrcTableId(), fateId, @@ -53,7 +53,7 @@ public long isReady(FateId fateId, Manager environment) throws Exception { } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { cloneInfo.setTableId( Utils.getNextId(cloneInfo.getTableName(), environment.getContext(), TableId::of)); @@ -61,7 +61,7 @@ public Repo call(FateId fateId, Manager environment) throws Exception { } @Override - public void undo(FateId fateId, Manager environment) { + public void undo(FateId fateId, FateEnv environment) { Utils.unreserveNamespace(environment.getContext(), cloneInfo.getNamespaceId(), fateId, LockType.READ); Utils.unreserveTable(environment.getContext(), cloneInfo.getSrcTableId(), fateId, diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java index d079bb23b88..9874e0b21cd 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java @@ -24,11 +24,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -class CloneZookeeper extends ManagerRepo { +class CloneZookeeper extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -40,7 +40,7 @@ public CloneZookeeper(CloneInfo cloneInfo, ClientContext context) } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { long val = 0; if (!cloneInfo.getSrcNamespaceId().equals(cloneInfo.getNamespaceId())) { val += Utils.reserveNamespace(environment.getContext(), cloneInfo.getNamespaceId(), fateId, @@ -52,7 +52,7 @@ public long isReady(FateId fateId, Manager environment) throws Exception { } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { var context = environment.getContext(); // write tableName & tableId, first to Table Mapping and then to Zookeeper context.getTableMapping(cloneInfo.getNamespaceId()).put(cloneInfo.getTableId(), @@ -66,7 +66,7 @@ public Repo call(FateId fateId, Manager environment) throws Exception { } @Override - public void undo(FateId fateId, Manager environment) throws Exception { + public void undo(FateId fateId, FateEnv environment) throws Exception { environment.getTableManager().removeTable(cloneInfo.getTableId(), cloneInfo.getNamespaceId()); if (!cloneInfo.getSrcNamespaceId().equals(cloneInfo.getNamespaceId())) { Utils.unreserveNamespace(environment.getContext(), cloneInfo.getNamespaceId(), fateId, diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java index f77bb383825..2ad1e13118a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java @@ -24,12 +24,12 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -class FinishCloneTable extends ManagerRepo { +class FinishCloneTable extends AbstractRepo { private static final long serialVersionUID = 1L; private final CloneInfo cloneInfo; @@ -39,12 +39,12 @@ public FinishCloneTable(CloneInfo cloneInfo) { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager environment) { + public Repo call(FateId fateId, FateEnv environment) { // directories are intentionally not created.... this is done because directories should be // unique // because they occupy a different namespace than normal tablet directories... also some clones @@ -72,7 +72,7 @@ public Repo call(FateId fateId, Manager environment) { LockType.READ); Utils.unreserveTable(environment.getContext(), cloneInfo.getTableId(), fateId, LockType.WRITE); - environment.getEventCoordinator().event(cloneInfo.getTableId(), "Cloned table %s from %s", + environment.getEvents().event(cloneInfo.getTableId(), "Cloned table %s from %s", cloneInfo.getTableName(), cloneInfo.getSrcTableId()); LoggerFactory.getLogger(FinishCloneTable.class) @@ -83,6 +83,6 @@ public Repo call(FateId fateId, Manager environment) { } @Override - public void undo(FateId fateId, Manager environment) {} + public void undo(FateId fateId, FateEnv environment) {} } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java index 6d6ff762c70..8e808368268 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java @@ -34,14 +34,14 @@ import org.apache.accumulo.core.metadata.schema.Ample; import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult.Status; import org.apache.accumulo.core.metadata.schema.TabletMetadata; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.compaction.CompactionConfigStorage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CleanUp extends ManagerRepo { +public class CleanUp extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(CleanUp.class); @@ -60,9 +60,9 @@ public CleanUp(TableId tableId, NamespaceId namespaceId, byte[] startRow, byte[] } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { - var ample = manager.getContext().getAmple(); + var ample = env.getContext().getAmple(); AtomicLong rejectedCount = new AtomicLong(0); Consumer resultConsumer = result -> { @@ -119,10 +119,10 @@ public long isReady(FateId fateId, Manager manager) throws Exception { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { - CompactionConfigStorage.deleteConfig(manager.getContext(), fateId); - Utils.getReadLock(manager.getContext(), tableId, fateId, LockRange.infinite()).unlock(); - Utils.getReadLock(manager.getContext(), namespaceId, fateId, LockRange.infinite()).unlock(); + public Repo call(FateId fateId, FateEnv env) throws Exception { + CompactionConfigStorage.deleteConfig(env.getContext(), fateId); + Utils.getReadLock(env.getContext(), tableId, fateId, LockRange.infinite()).unlock(); + Utils.getReadLock(env.getContext(), namespaceId, fateId, LockRange.infinite()).unlock(); return null; } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java index ab5630bc559..51751379200 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java @@ -34,8 +34,8 @@ import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.fate.zookeeper.LockRange; import org.apache.accumulo.core.util.TextUtil; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.compaction.CompactionConfigStorage; import org.apache.hadoop.io.Text; @@ -44,7 +44,7 @@ import com.google.common.base.Preconditions; -public class CompactRange extends ManagerRepo { +public class CompactRange extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(CompactRange.class); @@ -80,7 +80,7 @@ public CompactRange(NamespaceId namespaceId, TableId tableId, CompactionConfig c } @Override - public long isReady(FateId fateId, Manager env) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { return Utils.reserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ, true, TableOperation.COMPACT) + Utils.reserveTable(env.getContext(), tableId, fateId, LockType.READ, true, @@ -88,7 +88,7 @@ public long isReady(FateId fateId, Manager env) throws Exception { } @Override - public Repo call(final FateId fateId, Manager env) throws Exception { + public Repo call(final FateId fateId, FateEnv env) throws Exception { CompactionConfigStorage.setConfig(env.getContext(), fateId, config); var extent = new KeyExtent(tableId, endRow == null ? null : new Text(endRow), startRow == null ? null : new Text(startRow)); @@ -106,7 +106,7 @@ public Repo call(final FateId fateId, Manager env) throws Exception { } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { try { CompactionConfigStorage.deleteConfig(env.getContext(), fateId); } finally { diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java index d1b43db6f92..425a64d6e2e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java @@ -55,8 +55,8 @@ import org.apache.accumulo.core.metadata.schema.SelectedFiles; import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.util.Retry; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.bulkVer2.TabletRefresher; import org.apache.accumulo.manager.tableOps.delete.PreDeleteTable; import org.apache.accumulo.server.ServerContext; @@ -69,7 +69,7 @@ import com.google.common.base.Preconditions; -public class CompactionDriver extends ManagerRepo { +public class CompactionDriver extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(CompactionDriver.class); @@ -89,16 +89,16 @@ public CompactionDriver(NamespaceId namespaceId, TableId tableId, byte[] startRo } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { if (tableId.equals(SystemTables.ROOT.tableId())) { // this codes not properly handle the root table. See #798 return 0; } - ZooReaderWriter zoo = manager.getContext().getZooSession().asReaderWriter(); + ZooReaderWriter zoo = env.getContext().getZooSession().asReaderWriter(); - if (isCancelled(fateId, manager.getContext())) { + if (isCancelled(fateId, env.getContext())) { // compaction was canceled throw new AcceptableThriftTableOperationException(tableId.canonical(), null, TableOperation.COMPACT, TableOperationExceptionType.OTHER, @@ -106,7 +106,7 @@ public long isReady(FateId fateId, Manager manager) throws Exception { } String deleteMarkerPath = - PreDeleteTable.createDeleteMarkerPath(manager.getContext().getInstanceID(), tableId); + PreDeleteTable.createDeleteMarkerPath(env.getContext().getInstanceID(), tableId); if (zoo.exists(deleteMarkerPath)) { // table is being deleted throw new AcceptableThriftTableOperationException(tableId.canonical(), null, @@ -114,14 +114,14 @@ public long isReady(FateId fateId, Manager manager) throws Exception { TableOperationsImpl.TABLE_DELETED_MSG); } - if (manager.getContext().getTableState(tableId) != TableState.ONLINE) { + if (env.getContext().getTableState(tableId) != TableState.ONLINE) { throw new AcceptableThriftTableOperationException(tableId.canonical(), null, TableOperation.COMPACT, TableOperationExceptionType.OFFLINE, "The table is not online."); } long t1 = System.currentTimeMillis(); - int tabletsToWaitFor = updateAndCheckTablets(manager, fateId); + int tabletsToWaitFor = updateAndCheckTablets(env, fateId); long scanTime = System.currentTimeMillis() - t1; @@ -144,10 +144,10 @@ protected boolean isCancelled(FateId fateId, ServerContext context) return CompactionConfigStorage.getConfig(context, fateId) == null; } - public int updateAndCheckTablets(Manager manager, FateId fateId) + public int updateAndCheckTablets(FateEnv env, FateId fateId) throws AcceptableThriftTableOperationException { - var ample = manager.getContext().getAmple(); + var ample = env.getContext().getAmple(); // This map tracks tablets that had a conditional mutation submitted to select files. If the // conditional mutation is successful then want to log a message. Use a concurrent map as the @@ -191,7 +191,7 @@ public int updateAndCheckTablets(Manager manager, FateId fateId) .checkConsistency().build(); var tabletsMutator = ample.conditionallyMutateTablets(resultConsumer)) { - CompactionConfig config = CompactionConfigStorage.getConfig(manager.getContext(), fateId); + CompactionConfig config = CompactionConfigStorage.getConfig(env.getContext(), fateId); for (TabletMetadata tablet : tablets) { @@ -221,8 +221,8 @@ public int updateAndCheckTablets(Manager manager, FateId fateId) Set filesToCompact; try { - filesToCompact = CompactionPluginUtils.selectFiles(manager.getContext(), - tablet.getExtent(), config, tablet.getFilesMap()); + filesToCompact = CompactionPluginUtils.selectFiles(env.getContext(), tablet.getExtent(), + config, tablet.getFilesMap()); } catch (Exception e) { log.warn("{} failed to select files for {} using {}", fateId, tablet.getExtent(), config.getSelector(), e); @@ -251,7 +251,7 @@ public int updateAndCheckTablets(Manager manager, FateId fateId) var mutator = tabletsMutator.mutateTablet(tablet.getExtent()).requireAbsentOperation() .requireSame(tablet, FILES, SELECTED, ECOMP, COMPACTED, USER_COMPACTION_REQUESTED); var selectedFiles = new SelectedFiles(filesToCompact, - tablet.getFiles().equals(filesToCompact), fateId, manager.getSteadyTime()); + tablet.getFiles().equals(filesToCompact), fateId, env.getSteadyTime()); mutator.putSelectedFiles(selectedFiles); @@ -334,8 +334,7 @@ public int updateAndCheckTablets(Manager manager, FateId fateId) userCompactionRequested, userCompactionWaiting, opidsSeen, t2 - t1); if (selected > 0) { - manager.getEventCoordinator().event( - new KeyExtent(tableId, maxSelected.endRow(), minSelected.prevEndRow()), + env.getEvents().event(new KeyExtent(tableId, maxSelected.endRow(), minSelected.prevEndRow()), "%s selected files for compaction for %d tablets", fateId, selected); } @@ -343,12 +342,12 @@ public int updateAndCheckTablets(Manager manager, FateId fateId) } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { return new RefreshTablets(tableId, namespaceId, startRow, endRow); } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { cleanupTabletMetadata(fateId, env.getContext()); // For any compactions that may have happened before this operation failed, attempt to refresh diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java index f7dc869c9e9..6dd124e7d93 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.data.TableId; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.bulkVer2.TabletRefresher; -public class RefreshTablets extends ManagerRepo { +public class RefreshTablets extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -44,8 +44,8 @@ public RefreshTablets(TableId tableId, NamespaceId namespaceId, byte[] startRow, } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { - TabletRefresher.refresh(manager, fateId, tableId, startRow, endRow, tabletMetadata -> true); + public Repo call(FateId fateId, FateEnv env) throws Exception { + TabletRefresher.refresh(env, fateId, tableId, startRow, endRow, tabletMetadata -> true); return new CleanUp(tableId, namespaceId, startRow, endRow); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java index ce1f791f762..6485a2cabce 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java @@ -24,14 +24,14 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.compaction.CompactionConfigStorage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CancelCompactions extends ManagerRepo { +public class CancelCompactions extends AbstractRepo { private static final long serialVersionUID = 1L; private final TableId tableId; @@ -45,8 +45,7 @@ public CancelCompactions(NamespaceId namespaceId, TableId tableId) { } @Override - public long isReady(FateId fateId, Manager env) throws Exception { - + public long isReady(FateId fateId, FateEnv env) throws Exception { return Utils.reserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ, true, TableOperation.COMPACT_CANCEL) + Utils.reserveTable(env.getContext(), tableId, fateId, LockType.READ, true, @@ -54,7 +53,7 @@ public long isReady(FateId fateId, Manager env) throws Exception { } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { var idsToCancel = CompactionConfigStorage.getAllConfig(environment.getContext(), tableId::equals).keySet(); @@ -66,7 +65,7 @@ public Repo call(FateId fateId, Manager environment) throws Exception { } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.READ); Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java index 7e37c0b4dfd..34db9609025 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -class FinishCancelCompaction extends ManagerRepo { +class FinishCancelCompaction extends AbstractRepo { private static final long serialVersionUID = 1L; private final TableId tableId; private final NamespaceId namespaceId; @@ -38,14 +38,14 @@ public FinishCancelCompaction(NamespaceId namespaceId, TableId tableId) { } @Override - public Repo call(FateId fateId, Manager environment) { + public Repo call(FateId fateId, FateEnv environment) { Utils.unreserveTable(environment.getContext(), tableId, fateId, LockType.READ); Utils.unreserveNamespace(environment.getContext(), namespaceId, fateId, LockType.READ); return null; } @Override - public void undo(FateId fateId, Manager environment) { + public void undo(FateId fateId, FateEnv environment) { } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java index 980fc01b26e..12b3b0eb45f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java @@ -30,8 +30,8 @@ import org.apache.accumulo.core.client.admin.TabletMergeability; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.ServerContext; @@ -43,7 +43,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class ChooseDir extends ManagerRepo { +class ChooseDir extends AbstractRepo { private static final long serialVersionUID = 1L; private final TableInfo tableInfo; @@ -54,26 +54,26 @@ class ChooseDir extends ManagerRepo { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { if (tableInfo.getInitialSplitSize() > 0) { - createTableDirectoriesInfo(manager.getContext()); + createTableDirectoriesInfo(env.getContext()); } return new PopulateMetadata(tableInfo); } @Override - public void undo(FateId fateId, Manager manager) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { // Clean up split files if ChooseDir operation fails Path p = null; try { if (tableInfo.getInitialSplitSize() > 0) { p = tableInfo.getSplitDirsPath(); - FileSystem fs = p.getFileSystem(manager.getContext().getHadoopConf()); + FileSystem fs = p.getFileSystem(env.getContext().getHadoopConf()); fs.delete(p, true); } } catch (IOException e) { diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java index 990b61d2999..c759d17581e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java @@ -31,8 +31,8 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.fs.FileSystem; @@ -40,7 +40,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CreateTable extends ManagerRepo { +public class CreateTable extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(CreateTable.class); @@ -65,7 +65,7 @@ public CreateTable(String user, String tableName, TimeType timeType, Map call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // first step is to reserve a table id.. if the machine fails during this step // it is ok to retry... the only side effect is that a table id may not be used // or skipped - - // assuming only the manager process is creating tables - String tName = tableInfo.getTableName(); - tableInfo.setTableId(Utils.getNextId(tName, manager.getContext(), TableId::of)); + tableInfo.setTableId(Utils.getNextId(tName, env.getContext(), TableId::of)); return new SetupPermissions(tableInfo); } @Override - public void undo(FateId fateId, Manager env) throws IOException { + public void undo(FateId fateId, FateEnv env) throws IOException { // Clean up split files if create table operation fails Path p = null; try { diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java index 9de25554342..80a93489349 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java @@ -26,8 +26,8 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.ServerContext; @@ -36,7 +36,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class FinishCreateTable extends ManagerRepo { +class FinishCreateTable extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(FinishCreateTable.class); @@ -48,12 +48,12 @@ public FinishCreateTable(TableInfo ti) { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { final EnumSet expectedCurrStates = EnumSet.of(TableState.NEW); if (tableInfo.getInitialTableState() == InitialTableState.OFFLINE) { @@ -67,8 +67,7 @@ public Repo call(FateId fateId, Manager env) throws Exception { Utils.unreserveNamespace(env.getContext(), tableInfo.getNamespaceId(), fateId, LockType.READ); Utils.unreserveTable(env.getContext(), tableInfo.getTableId(), fateId, LockType.WRITE); - env.getEventCoordinator().event(tableInfo.getTableId(), "Created table %s ", - tableInfo.getTableName()); + env.getEvents().event(tableInfo.getTableId(), "Created table %s ", tableInfo.getTableName()); if (tableInfo.getInitialSplitSize() > 0) { cleanupSplitFiles(env.getContext()); @@ -95,6 +94,6 @@ public String getReturn() { } @Override - public void undo(FateId fateId, Manager env) {} + public void undo(FateId fateId, FateEnv env) {} } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java index 4c0bef3cb9b..7bae4d16020 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java @@ -36,8 +36,8 @@ import org.apache.accumulo.core.metadata.schema.MetadataTime; import org.apache.accumulo.core.metadata.schema.TabletMergeabilityMetadata; import org.apache.accumulo.core.util.time.SteadyTime; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.ServerContext; @@ -46,7 +46,7 @@ import com.google.common.base.Preconditions; -class PopulateMetadata extends ManagerRepo { +class PopulateMetadata extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -57,12 +57,12 @@ class PopulateMetadata extends ManagerRepo { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { SortedMap splits; Map splitDirMap; @@ -113,7 +113,7 @@ private void writeSplitsToMetadataTable(ServerContext context, } @Override - public void undo(FateId fateId, Manager environment) throws Exception { + public void undo(FateId fateId, FateEnv environment) throws Exception { MetadataTableUtil.deleteTable(tableInfo.getTableId(), false, environment.getContext(), environment.getManagerLock()); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java index 20042f00ac6..3c7afda63f8 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java @@ -24,14 +24,14 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.conf.store.TablePropKey; import org.apache.accumulo.server.util.PropUtil; -class PopulateZookeeper extends ManagerRepo { +class PopulateZookeeper extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -42,20 +42,20 @@ class PopulateZookeeper extends ManagerRepo { } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return Utils.reserveTable(environment.getContext(), tableInfo.getTableId(), fateId, LockType.WRITE, false, TableOperation.CREATE); } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // reserve the table name in zookeeper or fail - var context = manager.getContext(); + var context = env.getContext(); // write tableName & tableId, first to Table Mapping and then to Zookeeper context.getTableMapping(tableInfo.getNamespaceId()).put(tableInfo.getTableId(), tableInfo.getTableName(), TableOperation.CREATE); - manager.getTableManager().addTable(tableInfo.getTableId(), tableInfo.getNamespaceId(), + env.getTableManager().addTable(tableInfo.getTableId(), tableInfo.getNamespaceId(), tableInfo.getTableName()); try { @@ -72,10 +72,10 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager manager) throws Exception { - manager.getTableManager().removeTable(tableInfo.getTableId(), tableInfo.getNamespaceId()); - Utils.unreserveTable(manager.getContext(), tableInfo.getTableId(), fateId, LockType.WRITE); - manager.getContext().clearTableListCache(); + public void undo(FateId fateId, FateEnv env) throws Exception { + env.getTableManager().removeTable(tableInfo.getTableId(), tableInfo.getNamespaceId()); + Utils.unreserveTable(env.getContext(), tableInfo.getTableId(), fateId, LockType.WRITE); + env.getContext().clearTableListCache(); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java index ed8b30d3d26..db68cc1b3b1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java @@ -22,12 +22,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.TablePermission; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.slf4j.LoggerFactory; -class SetupPermissions extends ManagerRepo { +class SetupPermissions extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -38,7 +38,7 @@ class SetupPermissions extends ManagerRepo { } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // give all table permissions to the creator var security = env.getContext().getSecurityOperation(); if (!tableInfo.getUser().equals(env.getContext().getCredentials().getPrincipal())) { @@ -61,7 +61,7 @@ public Repo call(FateId fateId, Manager env) throws Exception { } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { env.getContext().getSecurityOperation().deleteTable(env.getContext().rpcCreds(), tableInfo.getTableId(), tableInfo.getNamespaceId()); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java index 53a29684204..8542932737c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java @@ -40,8 +40,8 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily; import org.apache.accumulo.core.security.Authorizations; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.accumulo.server.util.MetadataTableUtil; @@ -49,7 +49,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class CleanUp extends ManagerRepo { +class CleanUp extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(CleanUp.class); @@ -64,12 +64,12 @@ public CleanUp(TableId tableId, NamespaceId namespaceId) { } @Override - public Repo call(FateId fateId, Manager manager) { + public Repo call(FateId fateId, FateEnv env) { int refCount = 0; try { // look for other tables that references this table's files - AccumuloClient client = manager.getContext(); + AccumuloClient client = env.getContext(); try (BatchScanner bs = client.createBatchScanner(SystemTables.METADATA.tableName(), Authorizations.EMPTY, 8)) { Range allTables = TabletsSection.getRange(); @@ -103,7 +103,7 @@ public Repo call(FateId fateId, Manager manager) { // If the manager lock passed to deleteTable, it is possible that the delete mutations will be // dropped. If the delete operations // are dropped and the operation completes, then the deletes will not be repeated. - MetadataTableUtil.deleteTable(tableId, refCount != 0, manager.getContext(), null); + MetadataTableUtil.deleteTable(tableId, refCount != 0, env.getContext(), null); } catch (Exception e) { log.error("error deleting " + tableId + " from metadata table", e); } @@ -111,8 +111,8 @@ public Repo call(FateId fateId, Manager manager) { if (refCount == 0) { // delete the data files try { - VolumeManager fs = manager.getVolumeManager(); - for (String dir : manager.getContext().getTablesDirs()) { + VolumeManager fs = env.getVolumeManager(); + for (String dir : env.getContext().getTablesDirs()) { fs.deleteRecursively(new Path(dir, tableId.canonical())); } } catch (IOException e) { @@ -129,22 +129,22 @@ public Repo call(FateId fateId, Manager manager) { // remove table from zookeeper try { - manager.getTableManager().removeTable(tableId, namespaceId); - manager.getContext().clearTableListCache(); + env.getTableManager().removeTable(tableId, namespaceId); + env.getContext().clearTableListCache(); } catch (Exception e) { log.error("Failed to find table id in zookeeper", e); } // remove any permissions associated with this table try { - manager.getContext().getSecurityOperation().deleteTable(manager.getContext().rpcCreds(), - tableId, namespaceId); + env.getContext().getSecurityOperation().deleteTable(env.getContext().rpcCreds(), tableId, + namespaceId); } catch (ThriftSecurityException e) { log.error("{}", e.getMessage(), e); } - Utils.unreserveTable(manager.getContext(), tableId, fateId, LockType.WRITE); - Utils.unreserveNamespace(manager.getContext(), namespaceId, fateId, LockType.READ); + Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); + Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); LoggerFactory.getLogger(CleanUp.class).debug("Deleted table " + tableId); @@ -152,7 +152,7 @@ public Repo call(FateId fateId, Manager manager) { } @Override - public void undo(FateId fateId, Manager environment) { + public void undo(FateId fateId, FateEnv environment) { // nothing to do } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java index 4138f033360..2de7d566e5c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java @@ -27,11 +27,11 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class DeleteTable extends ManagerRepo { +public class DeleteTable extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -44,7 +44,7 @@ public DeleteTable(NamespaceId namespaceId, TableId tableId) { } @Override - public long isReady(FateId fateId, Manager env) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { return Utils.reserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ, false, TableOperation.DELETE) + Utils.reserveTable(env.getContext(), tableId, fateId, LockType.WRITE, true, @@ -52,16 +52,16 @@ public long isReady(FateId fateId, Manager env) throws Exception { } @Override - public Repo call(FateId fateId, Manager env) { + public Repo call(FateId fateId, FateEnv env) { final EnumSet expectedCurrStates = EnumSet.of(TableState.ONLINE, TableState.OFFLINE); env.getTableManager().transitionTableState(tableId, TableState.DELETING, expectedCurrStates); - env.getEventCoordinator().event(tableId, "deleting table %s %s", tableId, fateId); + env.getEvents().event(tableId, "deleting table %s %s", tableId, fateId); return new ReserveTablets(tableId, namespaceId); } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java index 3cb08f4d2be..abb5a84f65a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java @@ -28,14 +28,14 @@ import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter; import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.compaction.CompactionConfigStorage; import org.apache.zookeeper.KeeperException; -public class PreDeleteTable extends ManagerRepo { +public class PreDeleteTable extends AbstractRepo { public static String createDeleteMarkerPath(InstanceId instanceId, TableId tableId) { return Constants.ZTABLES + "/" + tableId.canonical() + Constants.ZTABLE_DELETE_MARKER; @@ -52,7 +52,7 @@ public PreDeleteTable(NamespaceId namespaceId, TableId tableId) { } @Override - public long isReady(FateId fateId, Manager env) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { return Utils.reserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ, true, TableOperation.DELETE) + Utils.reserveTable(env.getContext(), tableId, fateId, LockType.READ, true, @@ -67,7 +67,7 @@ private void preventFutureCompactions(ServerContext ctx) } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { try { preventFutureCompactions(environment.getContext()); @@ -85,7 +85,7 @@ public Repo call(FateId fateId, Manager environment) throws Exception { } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.READ); Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java index 6f9d65d0b87..ac6681bae76 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java @@ -32,12 +32,12 @@ import org.apache.accumulo.core.metadata.schema.Ample; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ReserveTablets extends ManagerRepo { +public class ReserveTablets extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(ReserveTablets.class); @@ -52,7 +52,7 @@ public ReserveTablets(TableId tableId, NamespaceId namespaceId) { } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { var opid = TabletOperationId.from(TabletOperationType.DELETING, fateId); @@ -72,10 +72,10 @@ public long isReady(FateId fateId, Manager manager) throws Exception { long tabletsSeen = 0; try ( - var tablets = manager.getContext().getAmple().readTablets().forTable(tableId) + var tablets = env.getContext().getAmple().readTablets().forTable(tableId) .fetch(OPID, PREV_ROW, LOCATION).checkConsistency().build(); var conditionalMutator = - manager.getContext().getAmple().conditionallyMutateTablets(resultsConsumer)) { + env.getContext().getAmple().conditionallyMutateTablets(resultsConsumer)) { for (var tabletMeta : tablets) { tabletsSeen++; @@ -117,7 +117,7 @@ public long isReady(FateId fateId, Manager manager) throws Exception { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { return new CleanUp(tableId, namespaceId); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java index 3c18e4ef69f..9ffea8b4374 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java @@ -24,14 +24,14 @@ import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -public class CountFiles extends ManagerRepo { +public class CountFiles extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(CountFiles.class); private static final long serialVersionUID = 1L; private final MergeInfo data; @@ -41,7 +41,7 @@ public CountFiles(MergeInfo mergeInfo) { } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // SYSTEM_MERGE should be executing VerifyMergeability repo, which already // will count files Preconditions.checkState(data.op != SYSTEM_MERGE, "Unexpected op %s", SYSTEM_MERGE); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java index 3e3c1ffe43a..562f338e202 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java @@ -45,8 +45,9 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.Pair; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; +import org.apache.accumulo.server.ServerContext; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,7 +56,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Sets; -public class DeleteRows extends ManagerRepo { +public class DeleteRows extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -69,25 +70,24 @@ public DeleteRows(MergeInfo data) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // delete or fence files within the deletion range - var mergeRange = deleteTabletFiles(manager, fateId); + var mergeRange = deleteTabletFiles(env.getContext(), fateId); // merge away empty tablets in the deletion range return new MergeTablets(mergeRange.map(mre -> data.useMergeRange(mre)).orElse(data)); } - private Optional deleteTabletFiles(Manager manager, FateId fateId) { + private Optional deleteTabletFiles(ServerContext ctx, FateId fateId) { // Only delete data within the original extent specified by the user KeyExtent range = data.getOriginalExtent(); log.debug("{} deleting tablet files in range {}", fateId, range); var opid = TabletOperationId.from(TabletOperationType.MERGING, fateId); try ( - var tabletsMetadata = - manager.getContext().getAmple().readTablets().forTable(range.tableId()) - .overlapping(range.prevEndRow(), range.endRow()).checkConsistency().build(); - var tabletsMutator = manager.getContext().getAmple().conditionallyMutateTablets()) { + var tabletsMetadata = ctx.getAmple().readTablets().forTable(range.tableId()) + .overlapping(range.prevEndRow(), range.endRow()).checkConsistency().build(); + var tabletsMutator = ctx.getAmple().conditionallyMutateTablets()) { KeyExtent firstCompleteContained = null; KeyExtent lastCompletelyContained = null; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java index 3f98f812fbb..22e4230e51f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java @@ -29,8 +29,8 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.TextUtil; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +40,7 @@ /** * Delete tablets that were merged into another tablet. */ -public class DeleteTablets extends ManagerRepo { +public class DeleteTablets extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -56,7 +56,7 @@ public class DeleteTablets extends ManagerRepo { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { KeyExtent range = data.getMergeExtent(); log.debug("{} Deleting tablets for {}", fateId, range); @@ -77,11 +77,10 @@ public Repo call(FateId fateId, Manager manager) throws Exception { long submitted = 0; try ( - var tabletsMetadata = - manager.getContext().getAmple().readTablets().forTable(range.tableId()) - .overlapping(range.prevEndRow(), range.endRow()).saveKeyValues().build(); + var tabletsMetadata = env.getContext().getAmple().readTablets().forTable(range.tableId()) + .overlapping(range.prevEndRow(), range.endRow()).saveKeyValues().build(); var tabletsMutator = - manager.getContext().getAmple().conditionallyMutateTablets(resultConsumer)) { + env.getContext().getAmple().conditionallyMutateTablets(resultConsumer)) { var lastEndRow = lastTabletEndRow == null ? null : new Text(lastTabletEndRow); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java index bb73727d6ab..a69cb2dd6af 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java @@ -32,15 +32,15 @@ import org.apache.accumulo.core.metadata.schema.Ample; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -class FinishTableRangeOp extends ManagerRepo { +class FinishTableRangeOp extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(FinishTableRangeOp.class); private static final long serialVersionUID = 1L; @@ -52,15 +52,15 @@ public FinishTableRangeOp(MergeInfo data) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { - removeOperationIds(log, data, fateId, manager); + public Repo call(FateId fateId, FateEnv env) throws Exception { + removeOperationIds(log, data, fateId, env); - Utils.unreserveTable(manager.getContext(), data.tableId, fateId, LockType.WRITE); - Utils.unreserveNamespace(manager.getContext(), data.namespaceId, fateId, LockType.READ); + Utils.unreserveTable(env.getContext(), data.tableId, fateId, LockType.WRITE); + Utils.unreserveNamespace(env.getContext(), data.namespaceId, fateId, LockType.READ); return null; } - static void removeOperationIds(Logger log, MergeInfo data, FateId fateId, Manager manager) { + static void removeOperationIds(Logger log, MergeInfo data, FateId fateId, FateEnv env) { KeyExtent range = data.getReserveExtent(); var opid = TabletOperationId.from(TabletOperationType.MERGING, fateId); log.debug("{} unreserving tablet in range {}", fateId, range); @@ -80,10 +80,10 @@ static void removeOperationIds(Logger log, MergeInfo data, FateId fateId, Manage int submitted = 0; int count = 0; - try (var tablets = manager.getContext().getAmple().readTablets().forTable(data.tableId) + try (var tablets = env.getContext().getAmple().readTablets().forTable(data.tableId) .overlapping(range.prevEndRow(), range.endRow()).fetch(PREV_ROW, LOCATION, OPID).build(); var tabletsMutator = - manager.getContext().getAmple().conditionallyMutateTablets(resultConsumer)) { + env.getContext().getAmple().conditionallyMutateTablets(resultConsumer)) { for (var tabletMeta : tablets) { if (opid.equals(tabletMeta.getOperationId())) { @@ -100,7 +100,7 @@ static void removeOperationIds(Logger log, MergeInfo data, FateId fateId, Manage log.debug("{} deleted {}/{} opids out of {} tablets", fateId, acceptedCount.get(), submitted, count); - manager.getEventCoordinator().event(range, "Merge or deleterows completed %s", fateId); + env.getEvents().event(range, "Merge or deleterows completed %s", fateId); Preconditions.checkState(acceptedCount.get() == submitted && rejectedCount.get() == 0, "Failed to delete tablets accepted:%s != %s rejected:%s", acceptedCount.get(), submitted, diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java index f444e6baae8..3d4c58fd8af 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java @@ -42,8 +42,8 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.gc.AllVolumesDirectory; import org.apache.accumulo.server.tablets.TabletTime; import org.slf4j.Logger; @@ -51,7 +51,7 @@ import com.google.common.base.Preconditions; -public class MergeTablets extends ManagerRepo { +public class MergeTablets extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -64,7 +64,7 @@ public MergeTablets(MergeInfo data) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { KeyExtent range = data.getMergeExtent(); log.debug("{} Merging metadata for {}", fateId, range); @@ -76,8 +76,8 @@ public Repo call(FateId fateId, Manager manager) throws Exception { TabletMetadata firstTabletMeta = null; TabletMetadata lastTabletMeta = null; - try (var tabletsMetadata = manager.getContext().getAmple().readTablets() - .forTable(range.tableId()).overlapping(range.prevEndRow(), range.endRow()).build()) { + try (var tabletsMetadata = env.getContext().getAmple().readTablets().forTable(range.tableId()) + .overlapping(range.prevEndRow(), range.endRow()).build()) { int tabletsSeen = 0; @@ -137,7 +137,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { dirs.add(new AllVolumesDirectory(range.tableId(), tabletMeta.getDirName())); if (dirs.size() > 1000) { Preconditions.checkState(tabletsSeen > 1); - manager.getContext().getAmple().putGcFileAndDirCandidates(range.tableId(), dirs); + env.getContext().getAmple().putGcFileAndDirCandidates(range.tableId(), dirs); dirs.clear(); } } @@ -163,7 +163,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { // the merged marker should not exist if (!lastTabletMeta.hasMerged()) { // update the last tablet - try (var tabletsMutator = manager.getContext().getAmple().conditionallyMutateTablets()) { + try (var tabletsMutator = env.getContext().getAmple().conditionallyMutateTablets()) { var lastExtent = lastTabletMeta.getExtent(); var tabletMutator = tabletsMutator.mutateTablet(lastExtent).requireOperation(opid) .requireAbsentLocation().requireAbsentLogs(); @@ -232,7 +232,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { // add gc candidates for the tablet dirs that being merged away, once these dirs are empty the // Accumulo GC will delete the dir - manager.getContext().getAmple().putGcFileAndDirCandidates(range.tableId(), dirs); + env.getContext().getAmple().putGcFileAndDirCandidates(range.tableId(), dirs); return new DeleteTablets(data, lastTabletMeta.getEndRow()); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java index f4a13846f66..fcfaff6b75c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java @@ -34,14 +34,14 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.Timer; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -public class ReserveTablets extends ManagerRepo { +public class ReserveTablets extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(ReserveTablets.class); @@ -54,7 +54,7 @@ public ReserveTablets(MergeInfo data) { } @Override - public long isReady(FateId fateId, Manager env) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { var range = data.getReserveExtent(); log.debug("{} reserving tablets in range {}", fateId, range); var opid = TabletOperationId.from(TabletOperationType.MERGING, fateId); @@ -115,8 +115,8 @@ public long isReady(FateId fateId, Manager env) throws Exception { if (locations > 0 && opsAccepted.get() > 0) { // operation ids were set and tablets have locations, so lets send a signal to get them // unassigned - env.getEventCoordinator().event(range, "Tablets %d were reserved for merge %s", - opsAccepted.get(), fateId); + env.getEvents().event(range, "Tablets %d were reserved for merge %s", opsAccepted.get(), + fateId); } long sleepTime = Math.min(Math.max(1000, count), maxSleepTime); @@ -131,7 +131,7 @@ public long isReady(FateId fateId, Manager env) throws Exception { } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { return switch (data.op) { case SYSTEM_MERGE -> new VerifyMergeability(data); case MERGE, DELETE -> new CountFiles(data); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java index d9ccb5be09b..c108d6606c3 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java @@ -18,6 +18,8 @@ */ package org.apache.accumulo.manager.tableOps.merge; +import static org.apache.accumulo.manager.ManagerClientServiceHandler.mustBeOnline; + import org.apache.accumulo.core.clientImpl.thrift.TableOperation; import org.apache.accumulo.core.data.NamespaceId; import org.apache.accumulo.core.data.TableId; @@ -27,14 +29,14 @@ import org.apache.accumulo.core.fate.zookeeper.LockRange; import org.apache.accumulo.core.metadata.SystemTables; import org.apache.accumulo.core.util.TextUtil; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TableRangeOp extends ManagerRepo { +public class TableRangeOp extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(TableRangeOp.class); private static final long serialVersionUID = 1L; @@ -42,7 +44,7 @@ public class TableRangeOp extends ManagerRepo { private final MergeInfo data; @Override - public long isReady(FateId fateId, Manager env) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { return Utils.reserveNamespace(env.getContext(), data.namespaceId, fateId, LockType.READ, true, TableOperation.MERGE) + Utils.reserveTable(env.getContext(), data.tableId, fateId, LockType.WRITE, true, @@ -57,14 +59,14 @@ public TableRangeOp(MergeInfo.Operation op, NamespaceId namespaceId, TableId tab } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { if (SystemTables.ROOT.tableId().equals(data.tableId) && data.op.isMergeOp()) { log.warn("Attempt to merge tablets for {} does nothing. It is not splittable.", SystemTables.ROOT.tableName()); } - env.mustBeOnline(data.tableId); + mustBeOnline(env.getContext(), data.tableId); data.validate(); @@ -72,7 +74,7 @@ public Repo call(FateId fateId, Manager env) throws Exception { } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { Utils.unreserveNamespace(env.getContext(), data.namespaceId, fateId, LockType.READ); Utils.unreserveTable(env.getContext(), data.tableId, fateId, LockType.WRITE); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java index 926e190c881..bf77c0b483b 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java @@ -23,12 +23,12 @@ import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class UnreserveAndError extends ManagerRepo { +public class UnreserveAndError extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(UnreserveAndError.class); private final MergeInfo mergeInfo; @@ -42,7 +42,7 @@ public UnreserveAndError(MergeInfo mergeInfo, long totalFiles, long maxFiles) { } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { FinishTableRangeOp.removeOperationIds(log, mergeInfo, fateId, environment); throw new AcceptableThriftTableOperationException(mergeInfo.tableId.toString(), null, mergeInfo.op == MergeInfo.Operation.MERGE ? TableOperation.MERGE diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java index ae455afbdce..9ff992f0053 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java @@ -23,13 +23,13 @@ import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; import org.apache.accumulo.manager.merge.FindMergeableRangeTask.UnmergeableReason; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class UnreserveSystemMerge extends ManagerRepo { +public class UnreserveSystemMerge extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(UnreserveSystemMerge.class); @@ -47,7 +47,7 @@ public UnreserveSystemMerge(MergeInfo mergeInfo, UnmergeableReason reason, long } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { FinishTableRangeOp.removeOperationIds(log, mergeInfo, fateId, environment); throw new AcceptableThriftTableOperationException(mergeInfo.tableId.toString(), null, mergeInfo.op.isMergeOp() ? TableOperation.MERGE : TableOperation.DELETE_RANGE, diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java index 43b6c1459eb..2da2ab4c4b4 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java @@ -24,16 +24,16 @@ import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; import org.apache.accumulo.manager.merge.FindMergeableRangeTask.MergeableRange; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.merge.MergeInfo.Operation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -public class VerifyMergeability extends ManagerRepo { +public class VerifyMergeability extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(VerifyMergeability.class); private static final long serialVersionUID = 1L; private final MergeInfo data; @@ -44,7 +44,7 @@ public VerifyMergeability(MergeInfo mergeInfo) { } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { var range = data.getReserveExtent(); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java index d7ebaa98f39..21b15a1d4e5 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.data.NamespaceId; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class CreateNamespace extends ManagerRepo { +public class CreateNamespace extends AbstractRepo { private static final long serialVersionUID = 1L; private final NamespaceInfo namespaceInfo; @@ -40,12 +40,12 @@ public CreateNamespace(String user, String namespaceName, Map pro } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv manager) throws Exception { namespaceInfo.namespaceId = Utils.getNextId(namespaceInfo.namespaceName, manager.getContext(), NamespaceId::of); return new SetupNamespacePermissions(namespaceInfo); @@ -53,7 +53,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { // nothing to do, the namespace id was allocated! } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java index cd31ceb28e4..8aa382d4105 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java @@ -21,12 +21,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -class FinishCreateNamespace extends ManagerRepo { +class FinishCreateNamespace extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -37,16 +37,16 @@ public FinishCreateNamespace(NamespaceInfo ti) { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager env) { + public Repo call(FateId fateId, FateEnv env) { Utils.unreserveNamespace(env.getContext(), namespaceInfo.namespaceId, fateId, LockType.WRITE); - env.getEventCoordinator().event("Created namespace %s ", namespaceInfo.namespaceName); + env.getEvents().event("Created namespace %s ", namespaceInfo.namespaceName); LoggerFactory.getLogger(FinishCreateNamespace.class) .debug("Created table " + namespaceInfo.namespaceId + " " + namespaceInfo.namespaceName); @@ -60,6 +60,6 @@ public String getReturn() { } @Override - public void undo(FateId fateId, Manager env) {} + public void undo(FateId fateId, FateEnv env) {} } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java index 4e0956fb670..ee46bcb157a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java @@ -23,13 +23,13 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.conf.store.NamespacePropKey; import org.apache.accumulo.server.util.PropUtil; -class PopulateZookeeperWithNamespace extends ManagerRepo { +class PopulateZookeeperWithNamespace extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -40,16 +40,15 @@ class PopulateZookeeperWithNamespace extends ManagerRepo { } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return Utils.reserveNamespace(environment.getContext(), namespaceInfo.namespaceId, fateId, LockType.WRITE, false, TableOperation.CREATE); - } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { - var context = manager.getContext(); + var context = env.getContext(); context.getNamespaceMapping().put(namespaceInfo.namespaceId, namespaceInfo.namespaceName); context.getTableManager().prepareNewNamespaceState(namespaceInfo.namespaceId, namespaceInfo.namespaceName, NodeExistsPolicy.OVERWRITE); @@ -63,11 +62,10 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager manager) throws Exception { - manager.getTableManager().removeNamespace(namespaceInfo.namespaceId); - manager.getContext().clearTableListCache(); - Utils.unreserveNamespace(manager.getContext(), namespaceInfo.namespaceId, fateId, - LockType.WRITE); + public void undo(FateId fateId, FateEnv env) throws Exception { + env.getTableManager().removeNamespace(namespaceInfo.namespaceId); + env.getContext().clearTableListCache(); + Utils.unreserveNamespace(env.getContext(), namespaceInfo.namespaceId, fateId, LockType.WRITE); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java index 95b9b7ba3de..0eb1fde2128 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java @@ -22,11 +22,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.NamespacePermission; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.LoggerFactory; -class SetupNamespacePermissions extends ManagerRepo { +class SetupNamespacePermissions extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -37,7 +37,7 @@ public SetupNamespacePermissions(NamespaceInfo ti) { } @Override - public Repo call(FateId fate, Manager env) throws Exception { + public Repo call(FateId fate, FateEnv env) throws Exception { // give all namespace permissions to the creator var security = env.getContext().getSecurityOperation(); if (!namespaceInfo.user.equals(env.getContext().getCredentials().getPrincipal())) { diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java index 21022ca42f3..1a0ce531393 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class DeleteNamespace extends ManagerRepo { +public class DeleteNamespace extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -38,20 +38,19 @@ public DeleteNamespace(NamespaceId namespaceId) { } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return Utils.reserveNamespace(environment.getContext(), namespaceId, fateId, LockType.WRITE, true, TableOperation.DELETE); - } @Override - public Repo call(FateId fateId, Manager environment) { - environment.getEventCoordinator().event("deleting namespace %s ", namespaceId); + public Repo call(FateId fateId, FateEnv environment) { + environment.getEvents().event("deleting namespace %s ", namespaceId); return new NamespaceCleanUp(namespaceId); } @Override - public void undo(FateId fateId, Manager environment) { + public void undo(FateId fateId, FateEnv environment) { Utils.unreserveNamespace(environment.getContext(), namespaceId, fateId, LockType.WRITE); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java index c0207f94b3a..8fa96ef966c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java @@ -23,13 +23,13 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class NamespaceCleanUp extends ManagerRepo { +class NamespaceCleanUp extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(NamespaceCleanUp.class); @@ -42,30 +42,30 @@ public NamespaceCleanUp(NamespaceId namespaceId) { } @Override - public long isReady(FateId fateId, Manager manager) { + public long isReady(FateId fateId, FateEnv env) { return 0; } @Override - public Repo call(FateId fateId, Manager manager) { + public Repo call(FateId fateId, FateEnv env) { // remove from zookeeper try { - manager.getTableManager().removeNamespace(namespaceId); + env.getTableManager().removeNamespace(namespaceId); } catch (Exception e) { log.error("Failed to find namespace in zookeeper", e); } - manager.getContext().clearTableListCache(); + env.getContext().clearTableListCache(); // remove any permissions associated with this namespace try { - manager.getContext().getSecurityOperation().deleteNamespace(manager.getContext().rpcCreds(), + env.getContext().getSecurityOperation().deleteNamespace(env.getContext().rpcCreds(), namespaceId); } catch (ThriftSecurityException e) { log.error("{}", e.getMessage(), e); } - Utils.unreserveNamespace(manager.getContext(), namespaceId, fateId, LockType.WRITE); + Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.WRITE); log.debug("Deleted namespace " + namespaceId); @@ -73,7 +73,7 @@ public Repo call(FateId fateId, Manager manager) { } @Override - public void undo(FateId fateId, Manager environment) { + public void undo(FateId fateId, FateEnv environment) { // nothing to do } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java index 4c16de9d2b2..25c0bbf2b31 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java @@ -23,12 +23,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -public class RenameNamespace extends ManagerRepo { +public class RenameNamespace extends AbstractRepo { private static final long serialVersionUID = 1L; private final NamespaceId namespaceId; @@ -36,10 +36,9 @@ public class RenameNamespace extends ManagerRepo { private final String newName; @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return Utils.reserveNamespace(environment.getContext(), namespaceId, fateId, LockType.WRITE, true, TableOperation.RENAME); - } public RenameNamespace(NamespaceId namespaceId, String oldName, String newName) { @@ -49,13 +48,13 @@ public RenameNamespace(NamespaceId namespaceId, String oldName, String newName) } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { try { - manager.getContext().getNamespaceMapping().rename(namespaceId, oldName, newName); - manager.getContext().clearTableListCache(); + env.getContext().getNamespaceMapping().rename(namespaceId, oldName, newName); + env.getContext().clearTableListCache(); } finally { - Utils.unreserveNamespace(manager.getContext(), namespaceId, fateId, LockType.WRITE); + Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.WRITE); } LoggerFactory.getLogger(RenameNamespace.class).debug("Renamed namespace {} {} {}", namespaceId, @@ -65,7 +64,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.WRITE); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java index bf9a8adb281..f5690303c6e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java @@ -27,12 +27,12 @@ import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.util.Pair; import org.apache.accumulo.core.util.tables.TableNameUtil; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -public class RenameTable extends ManagerRepo { +public class RenameTable extends AbstractRepo { private static final long serialVersionUID = 1L; private final TableId tableId; @@ -41,7 +41,7 @@ public class RenameTable extends ManagerRepo { private final String newTableName; @Override - public long isReady(FateId fateId, Manager env) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { return Utils.reserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ, true, TableOperation.RENAME) + Utils.reserveTable(env.getContext(), tableId, fateId, LockType.WRITE, true, @@ -57,11 +57,11 @@ public RenameTable(NamespaceId namespaceId, TableId tableId, String oldTableName } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { Pair qualifiedOldTableName = TableNameUtil.qualify(oldTableName); // the namespace name was already checked before starting the fate operation String newSimpleTableName = TableNameUtil.qualify(newTableName).getSecond(); - var context = manager.getContext(); + var context = env.getContext(); try { context.getTableMapping(namespaceId).rename(tableId, qualifiedOldTableName.getSecond(), @@ -69,8 +69,8 @@ public Repo call(FateId fateId, Manager manager) throws Exception { context.clearTableListCache(); } finally { - Utils.unreserveTable(manager.getContext(), tableId, fateId, LockType.WRITE); - Utils.unreserveNamespace(manager.getContext(), namespaceId, fateId, LockType.READ); + Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); + Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); } LoggerFactory.getLogger(RenameTable.class).debug("Renamed table {} {} {}", tableId, @@ -80,7 +80,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java index 978a96edf34..32254222644 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java @@ -31,13 +31,13 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.tablets.TabletNameGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class AllocateDirsAndEnsureOnline extends ManagerRepo { +public class AllocateDirsAndEnsureOnline extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(PreSplit.class); @@ -49,7 +49,7 @@ public AllocateDirsAndEnsureOnline(SplitInfo splitInfo) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // This check of table state is done after setting the operation id to avoid a race condition // with the client code that waits for a table to go offline. That client code sets the table // state and then scans the metadata table looking for split operations ids. If split checks @@ -57,13 +57,12 @@ public Repo call(FateId fateId, Manager manager) throws Exception { // after ensures that in the case when the client does not see any split op id in the metadata // table that it knows that any splits starting after that point in time will not complete. This // order is needed because the split fate operation does not acquire a table lock in zookeeper. - if (manager.getContext().getTableState(splitInfo.getOriginal().tableId()) - != TableState.ONLINE) { + if (env.getContext().getTableState(splitInfo.getOriginal().tableId()) != TableState.ONLINE) { var opid = TabletOperationId.from(TabletOperationType.SPLITTING, fateId); // attempt to delete the operation id - try (var tabletsMutator = manager.getContext().getAmple().conditionallyMutateTablets()) { + try (var tabletsMutator = env.getContext().getAmple().conditionallyMutateTablets()) { Ample.RejectionHandler rejectionHandler = new Ample.RejectionHandler() { @@ -100,7 +99,7 @@ public boolean test(TabletMetadata tabletMetadata) { List dirs = new ArrayList<>(); splitInfo.getSplits().keySet().forEach(split -> { - String dirName = TabletNameGenerator.createTabletDirectoryName(manager.getContext(), split); + String dirName = TabletNameGenerator.createTabletDirectoryName(env.getContext(), split); dirs.add(dirName); log.trace("{} allocated dir name {}", fateId, dirName); }); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java index 13070cc7863..f8f7057b0da 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java @@ -28,10 +28,10 @@ import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult.Status; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; -public class DeleteOperationIds extends ManagerRepo { +public class DeleteOperationIds extends AbstractRepo { private static final long serialVersionUID = 1L; private final SplitInfo splitInfo; @@ -40,11 +40,11 @@ public DeleteOperationIds(SplitInfo splitInfo) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { var opid = TabletOperationId.from(TabletOperationType.SPLITTING, fateId); - try (var tabletsMutator = manager.getContext().getAmple().conditionallyMutateTablets()) { + try (var tabletsMutator = env.getContext().getAmple().conditionallyMutateTablets()) { // As long as the operation is not our operation id, then this step can be considered // successful in the case of rejection. If this repo is running for a second time and has @@ -69,7 +69,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } // Get the tablets hosted ASAP if necessary. - manager.getEventCoordinator().event(splitInfo.getOriginal(), "Added %d splits to %s", + env.getEvents().event(splitInfo.getOriginal(), "Added %d splits to %s", splitInfo.getSplits().size(), splitInfo.getOriginal()); TabletLogger.split(splitInfo.getOriginal(), splitInfo.getSplits().navigableKeySet()); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java index 6d7cbf1787c..306ba6312be 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java @@ -33,14 +33,14 @@ import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult; import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult.Status; import org.apache.accumulo.core.metadata.schema.UnSplittableMetadata; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.split.SplitUtils; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class FindSplits extends ManagerRepo { +public class FindSplits extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -52,9 +52,9 @@ public FindSplits(KeyExtent extent) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { var extent = splitInfo.getOriginal(); - var ample = manager.getContext().getAmple(); + var ample = env.getContext().getAmple(); var tabletMetadata = ample.readTablet(extent); Optional computedUnsplittable = Optional.empty(); @@ -73,7 +73,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { // as unsplittable and the metadata hasn't changed so check that the metadata is different if (tabletMetadata.getUnSplittable() != null) { computedUnsplittable = - Optional.of(SplitUtils.toUnSplittable(manager.getContext(), tabletMetadata)); + Optional.of(SplitUtils.toUnSplittable(env.getContext(), tabletMetadata)); if (tabletMetadata.getUnSplittable().equals(computedUnsplittable.orElseThrow())) { log.debug("Not splitting {} because unsplittable metadata is present and did not change", extent); @@ -90,13 +90,13 @@ public Repo call(FateId fateId, Manager manager) throws Exception { return null; } - if (manager.getContext().getTableState(extent.tableId()) != TableState.ONLINE) { + if (env.getContext().getTableState(extent.tableId()) != TableState.ONLINE) { // The table is offline, do not bother finding splits log.debug("Not splitting {} because the table is not online", tabletMetadata.getExtent()); return null; } - SortedSet splits = SplitUtils.findSplits(manager.getContext(), tabletMetadata); + SortedSet splits = SplitUtils.findSplits(env.getContext(), tabletMetadata); if (extent.endRow() != null) { splits.remove(extent.endRow()); @@ -117,7 +117,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { // Case 1: If a split is needed then set the unsplittable marker as no split // points could be found so that we don't keep trying again until the // split metadata is changed - final var context = manager.getContext(); + final var context = env.getContext(); if (SplitUtils.needsSplit(context, tabletMetadata)) { log.info("Tablet {} needs to split, but no split points could be found.", tabletMetadata.getExtent()); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java index 226e9ebfbbb..21ef63055e2 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java @@ -39,15 +39,15 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -public class PreSplit extends ManagerRepo { +public class PreSplit extends AbstractRepo { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(PreSplit.class); @@ -68,11 +68,11 @@ public PreSplit(KeyExtent expectedExtent, SortedMap spl } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { var opid = TabletOperationId.from(TabletOperationType.SPLITTING, fateId); - var tabletMetadata = manager.getContext().getAmple().readTablet(splitInfo.getOriginal(), - PREV_ROW, LOCATION, OPID, LOGS); + var tabletMetadata = env.getContext().getAmple().readTablet(splitInfo.getOriginal(), PREV_ROW, + LOCATION, OPID, LOGS); log.trace("Attempting tablet split {} {} {}", fateId, splitInfo.getOriginal(), tabletMetadata == null ? null : tabletMetadata.getLocation()); @@ -91,7 +91,7 @@ public long isReady(FateId fateId, Manager manager) throws Exception { return 1000; } } else { - try (var tabletsMutator = manager.getContext().getAmple().conditionallyMutateTablets()) { + try (var tabletsMutator = env.getContext().getAmple().conditionallyMutateTablets()) { tabletsMutator.mutateTablet(splitInfo.getOriginal()).requireAbsentOperation() .requireSame(tabletMetadata, LOCATION, LOGS).putOperation(opid) @@ -106,7 +106,7 @@ public long isReady(FateId fateId, Manager manager) throws Exception { } else { // now that the operation id set, generate an event to unload the tablet or recover the // logs - manager.getEventCoordinator().event(splitInfo.getOriginal(), + env.getEvents().event(splitInfo.getOriginal(), "Set operation id %s on tablet for split", fateId); // the operation id was set, but a location is also set wait for it be unset return 1000; @@ -121,10 +121,10 @@ public long isReady(FateId fateId, Manager manager) throws Exception { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { - TabletMetadata tabletMetadata = manager.getContext().getAmple() - .readTablet(splitInfo.getOriginal(), PREV_ROW, LOCATION, OPID, LOGS); + TabletMetadata tabletMetadata = env.getContext().getAmple().readTablet(splitInfo.getOriginal(), + PREV_ROW, LOCATION, OPID, LOGS); var opid = TabletOperationId.from(TabletOperationType.SPLITTING, fateId); @@ -152,5 +152,5 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager manager) throws Exception {} + public void undo(FateId fateId, FateEnv manager) throws Exception {} } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java index c07fe6de0cc..b2f43b7124b 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java @@ -42,8 +42,8 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.RowRangeUtil; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.hadoop.io.Text; import org.slf4j.Logger; @@ -53,7 +53,7 @@ import com.google.common.base.Preconditions; import com.google.common.base.Predicate; -public class UpdateTablets extends ManagerRepo { +public class UpdateTablets extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(UpdateTablets.class); private static final long serialVersionUID = 1L; private final SplitInfo splitInfo; @@ -65,16 +65,15 @@ public UpdateTablets(SplitInfo splitInfo, List dirNames) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { - TabletMetadata tabletMetadata = - manager.getContext().getAmple().readTablet(splitInfo.getOriginal()); + public Repo call(FateId fateId, FateEnv env) throws Exception { + TabletMetadata tabletMetadata = env.getContext().getAmple().readTablet(splitInfo.getOriginal()); var opid = TabletOperationId.from(TabletOperationType.SPLITTING, fateId); if (tabletMetadata == null) { // check to see if this operation has already succeeded. - TabletMetadata newTabletMetadata = manager.getContext().getAmple() - .readTablet(splitInfo.getTablets().navigableKeySet().last()); + TabletMetadata newTabletMetadata = + env.getContext().getAmple().readTablet(splitInfo.getTablets().navigableKeySet().last()); if (newTabletMetadata != null && opid.equals(newTabletMetadata.getOperationId())) { // have already created the new tablet and failed before we could return the next step, so @@ -112,13 +111,13 @@ public Repo call(FateId fateId, Manager manager) throws Exception { var newTablets = splitInfo.getTablets(); var newTabletsFiles = getNewTabletFiles(fateId, newTablets, tabletMetadata, - file -> manager.getSplitter().getCachedFileInfo(splitInfo.getOriginal().tableId(), file)); + file -> env.getSplitter().getCachedFileInfo(splitInfo.getOriginal().tableId(), file)); - addNewTablets(fateId, manager, tabletMetadata, opid, newTablets, newTabletsFiles); + addNewTablets(fateId, env, tabletMetadata, opid, newTablets, newTabletsFiles); // Only update the original tablet after successfully creating the new tablets, this is // important for failure cases where this operation partially runs a then runs again. - updateExistingTablet(fateId, manager.getContext(), tabletMetadata, opid, newTablets, + updateExistingTablet(fateId, env.getContext(), tabletMetadata, opid, newTablets, newTabletsFiles); return new DeleteOperationIds(splitInfo); @@ -212,12 +211,12 @@ static Map> getNewTabletFiles(Fate return tabletsFiles; } - private void addNewTablets(FateId fateId, Manager manager, TabletMetadata tabletMetadata, + private void addNewTablets(FateId fateId, FateEnv env, TabletMetadata tabletMetadata, TabletOperationId opid, NavigableMap newTablets, Map> newTabletsFiles) { Iterator dirNameIter = dirNames.iterator(); - try (var tabletsMutator = manager.getContext().getAmple().conditionallyMutateTablets()) { + try (var tabletsMutator = env.getContext().getAmple().conditionallyMutateTablets()) { for (var entry : newTablets.entrySet()) { var newExtent = entry.getKey(); var mergeability = entry.getValue(); @@ -246,7 +245,7 @@ private void addNewTablets(FateId fateId, Manager manager, TabletMetadata tablet Preconditions.checkState(mergeability != null, "Null TabletMergeability for extent %s is unexpected", newExtent); mutator.putTabletMergeability( - TabletMergeabilityMetadata.toMetadata(mergeability, manager.getSteadyTime())); + TabletMergeabilityMetadata.toMetadata(mergeability, env.getSteadyTime())); tabletMetadata.getLoaded().forEach((k, v) -> mutator.putBulkFile(k.getTabletFile(), v)); newTabletsFiles.get(newExtent).forEach(mutator::putFile); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java index d7ffed9d85e..a9406f37eb2 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java @@ -22,12 +22,12 @@ import org.apache.accumulo.core.data.TableId; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.fs.Path; -public class ExportTable extends ManagerRepo { +public class ExportTable extends AbstractRepo { private static final long serialVersionUID = 1L; private final ExportInfo tableInfo; @@ -41,18 +41,18 @@ public ExportTable(NamespaceId namespaceId, String tableName, TableId tableId, S } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return Utils.reserveHdfsDirectory(environment.getContext(), new Path(tableInfo.exportDir).toString(), fateId); } @Override - public Repo call(FateId fateId, Manager env) { + public Repo call(FateId fateId, FateEnv env) { return new WriteExportFiles(tableInfo); } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { String directory = new Path(tableInfo.exportDir).toString(); Utils.unreserveHdfsDirectory(env.getContext(), directory, fateId); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java index baea32fa681..98e6504c1e1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java @@ -61,8 +61,8 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily; import org.apache.accumulo.core.security.Authorizations; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.AccumuloDataVersion; import org.apache.accumulo.server.ServerContext; @@ -71,7 +71,7 @@ import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.Path; -class WriteExportFiles extends ManagerRepo { +class WriteExportFiles extends AbstractRepo { private static final long serialVersionUID = 1L; private final ExportInfo tableInfo; @@ -92,19 +92,19 @@ private void checkOffline(ClientContext context) throws Exception { } @Override - public long isReady(FateId fateId, Manager manager) throws Exception { + public long isReady(FateId fateId, FateEnv env) throws Exception { - long reserved = Utils.reserveNamespace(manager.getContext(), tableInfo.namespaceID, fateId, + long reserved = Utils.reserveNamespace(env.getContext(), tableInfo.namespaceID, fateId, LockType.READ, true, TableOperation.EXPORT) - + Utils.reserveTable(manager.getContext(), tableInfo.tableID, fateId, LockType.READ, true, + + Utils.reserveTable(env.getContext(), tableInfo.tableID, fateId, LockType.READ, true, TableOperation.EXPORT); if (reserved > 0) { return reserved; } - AccumuloClient client = manager.getContext(); + AccumuloClient client = env.getContext(); - checkOffline(manager.getContext()); + checkOffline(env.getContext()); Scanner metaScanner = client.createScanner(SystemTables.METADATA.tableName(), Authorizations.EMPTY); @@ -135,24 +135,24 @@ public long isReady(FateId fateId, Manager manager) throws Exception { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { try { - exportTable(manager.getVolumeManager(), manager.getContext(), tableInfo.tableName, - tableInfo.tableID, tableInfo.exportDir); + exportTable(env.getVolumeManager(), env.getContext(), tableInfo.tableName, tableInfo.tableID, + tableInfo.exportDir); } catch (IOException ioe) { throw new AcceptableThriftTableOperationException(tableInfo.tableID.canonical(), tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER, "Failed to create export files " + ioe.getMessage()); } - Utils.unreserveNamespace(manager.getContext(), tableInfo.namespaceID, fateId, LockType.READ); - Utils.unreserveTable(manager.getContext(), tableInfo.tableID, fateId, LockType.READ); - Utils.unreserveHdfsDirectory(manager.getContext(), new Path(tableInfo.exportDir).toString(), + Utils.unreserveNamespace(env.getContext(), tableInfo.namespaceID, fateId, LockType.READ); + Utils.unreserveTable(env.getContext(), tableInfo.tableID, fateId, LockType.READ); + Utils.unreserveHdfsDirectory(env.getContext(), new Path(tableInfo.exportDir).toString(), fateId); return null; } @Override - public void undo(FateId fateId, Manager env) { + public void undo(FateId fateId, FateEnv env) { Utils.unreserveNamespace(env.getContext(), tableInfo.namespaceID, fateId, LockType.READ); Utils.unreserveTable(env.getContext(), tableInfo.tableID, fateId, LockType.READ); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java index dc408d3882b..04a7d0affec 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java @@ -25,15 +25,15 @@ import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.tablets.UniqueNameAllocator; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class CreateImportDir extends ManagerRepo { +class CreateImportDir extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(CreateImportDir.class); private static final long serialVersionUID = 1L; @@ -44,11 +44,11 @@ class CreateImportDir extends ManagerRepo { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { - Set tableDirs = manager.getContext().getTablesDirs(); + Set tableDirs = env.getContext().getTablesDirs(); - create(tableDirs, manager.getContext()); + create(tableDirs, env.getContext()); return new MapImportFileNames(tableInfo); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java index d7262add9e5..44a8293d952 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java @@ -26,13 +26,13 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.fs.Path; import org.slf4j.LoggerFactory; -class FinishImportTable extends ManagerRepo { +class FinishImportTable extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -43,12 +43,12 @@ public FinishImportTable(ImportedTableInfo ti) { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { if (!tableInfo.keepMappings) { for (ImportedTableInfo.DirectoryMapping dm : tableInfo.directories) { @@ -67,7 +67,7 @@ public Repo call(FateId fateId, Manager env) throws Exception { Utils.unreserveHdfsDirectory(env.getContext(), new Path(dm.exportDir).toString(), fateId); } - env.getEventCoordinator().event(tableInfo.tableId, "Imported table %s ", tableInfo.tableName); + env.getEvents().event(tableInfo.tableId, "Imported table %s ", tableInfo.tableName); LoggerFactory.getLogger(FinishImportTable.class) .debug("Imported table " + tableInfo.tableId + " " + tableInfo.tableName); @@ -81,6 +81,6 @@ public String getReturn() { } @Override - public void undo(FateId fateId, Manager env) {} + public void undo(FateId fateId, FateEnv env) {} } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java index c177630cc28..731da2c338a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java @@ -28,8 +28,8 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.conf.store.TablePropKey; import org.apache.accumulo.server.fs.VolumeManager; @@ -37,7 +37,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; -class ImportPopulateZookeeper extends ManagerRepo { +class ImportPopulateZookeeper extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -48,7 +48,7 @@ class ImportPopulateZookeeper extends ManagerRepo { } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return Utils.reserveTable(environment.getContext(), tableInfo.tableId, fateId, LockType.WRITE, false, TableOperation.IMPORT); } @@ -68,7 +68,7 @@ private Map getExportedProps(VolumeManager fs) throws Exception { } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { var context = env.getContext(); // write tableName & tableId, first to Table Mapping and then to Zookeeper @@ -92,7 +92,7 @@ public Repo call(FateId fateId, Manager env) throws Exception { } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { var context = env.getContext(); env.getTableManager().removeTable(tableInfo.tableId, tableInfo.namespaceId); Utils.unreserveTable(env.getContext(), tableInfo.tableId, fateId, LockType.WRITE); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java index 402cbcb046a..c077e43ede0 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java @@ -22,11 +22,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.TablePermission; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.LoggerFactory; -class ImportSetupPermissions extends ManagerRepo { +class ImportSetupPermissions extends AbstractRepo { private static final long serialVersionUID = 1L; @@ -37,12 +37,12 @@ public ImportSetupPermissions(ImportedTableInfo ti) { } @Override - public long isReady(FateId fateId, Manager environment) { + public long isReady(FateId fateId, FateEnv environment) { return 0; } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // give all table permissions to the creator var security = env.getContext().getSecurityOperation(); for (TablePermission permission : TablePermission.values()) { @@ -62,7 +62,7 @@ public Repo call(FateId fateId, Manager env) throws Exception { } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { env.getContext().getSecurityOperation().deleteTable(env.getContext().rpcCreds(), tableInfo.tableId, tableInfo.namespaceId); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java index d92a27cf2df..d3519ee980c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java @@ -42,8 +42,8 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.manager.tableOps.tableExport.ExportTable; import org.apache.accumulo.server.AccumuloDataVersion; @@ -57,7 +57,7 @@ /** * Serialization updated for supporting multiple volumes in import table from 1L to 2L. */ -public class ImportTable extends ManagerRepo { +public class ImportTable extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(ImportTable.class); private static final long serialVersionUID = 2L; @@ -76,7 +76,7 @@ public ImportTable(String user, String tableName, Set exportDirs, Namesp } @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { long result = 0; for (ImportedTableInfo.DirectoryMapping dm : tableInfo.directories) { result += Utils.reserveHdfsDirectory(environment.getContext(), @@ -88,7 +88,7 @@ public long isReady(FateId fateId, Manager environment) throws Exception { } @Override - public Repo call(FateId fateId, Manager env) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { checkVersions(env.getContext()); // first step is to reserve a table id.. if the machine fails during this step @@ -156,7 +156,7 @@ public void checkVersions(ServerContext ctx) throws AcceptableThriftTableOperati } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { for (ImportedTableInfo.DirectoryMapping dm : tableInfo.directories) { Utils.unreserveHdfsDirectory(env.getContext(), new Path(dm.exportDir).toString(), fateId); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java index ea1b313b0f8..9a2d6ed641e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java @@ -32,8 +32,8 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.file.FileOperations; import org.apache.accumulo.core.file.FilePrefix; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.accumulo.server.tablets.UniqueNameAllocator; import org.apache.hadoop.fs.FileStatus; @@ -41,7 +41,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class MapImportFileNames extends ManagerRepo { +class MapImportFileNames extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(MapImportFileNames.class); private static final long serialVersionUID = 1L; @@ -53,7 +53,7 @@ class MapImportFileNames extends ManagerRepo { } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { for (ImportedTableInfo.DirectoryMapping dm : tableInfo.directories) { Path path = new Path(dm.importDir, IMPORT_MAPPINGS_FILE); @@ -119,7 +119,7 @@ public Repo call(FateId fateId, Manager environment) throws Exception { } @Override - public void undo(FateId fateId, Manager env) throws Exception { + public void undo(FateId fateId, FateEnv env) throws Exception { // TODO: will this be OK for partially complete operations? for (ImportedTableInfo.DirectoryMapping dm : tableInfo.directories) { env.getVolumeManager().deleteRecursively(new Path(dm.importDir)); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java index 02d8664d627..eb9c5e5a9ce 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java @@ -33,8 +33,8 @@ import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.Path; @@ -43,7 +43,7 @@ import com.google.common.collect.Sets; -class MoveExportedFiles extends ManagerRepo { +class MoveExportedFiles extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(MoveExportedFiles.class); private static final long serialVersionUID = 1L; @@ -55,8 +55,8 @@ class MoveExportedFiles extends ManagerRepo { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { - VolumeManager fs = manager.getVolumeManager(); + public Repo call(FateId fateId, FateEnv env) throws Exception { + VolumeManager fs = env.getVolumeManager(); Map oldToNewPaths = new HashMap<>(); for (ImportedTableInfo.DirectoryMapping dm : tableInfo.directories) { @@ -108,7 +108,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } } try { - fs.bulkRename(oldToNewPaths, manager.getRenamePool(), fateId); + fs.bulkRename(oldToNewPaths, env.getRenamePool(), fateId); } catch (IOException ioe) { throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonical(), null, TableOperation.IMPORT, TableOperationExceptionType.OTHER, ioe.getCause().getMessage()); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java index cd1ea67619e..f1fbc8cf36f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java @@ -52,8 +52,8 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily; import org.apache.accumulo.core.util.FastFormat; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.accumulo.server.util.MetadataTableUtil; import org.apache.hadoop.fs.FSDataInputStream; @@ -62,7 +62,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class PopulateMetadataTable extends ManagerRepo { +class PopulateMetadataTable extends AbstractRepo { private static final Logger log = LoggerFactory.getLogger(PopulateMetadataTable.class); private static final long serialVersionUID = 1L; @@ -96,14 +96,13 @@ static void readMappingFile(VolumeManager fs, ImportedTableInfo tableInfo, Strin } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { Path path = new Path(tableInfo.exportFile); - VolumeManager fs = manager.getVolumeManager(); + VolumeManager fs = env.getVolumeManager(); - try ( - BatchWriter mbw = manager.getContext().createBatchWriter(SystemTables.METADATA.tableName()); + try (BatchWriter mbw = env.getContext().createBatchWriter(SystemTables.METADATA.tableName()); FSDataInputStream fsDataInputStream = fs.open(path); ZipInputStream zis = new ZipInputStream(fsDataInputStream)) { @@ -212,7 +211,7 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager environment) throws Exception { + public void undo(FateId fateId, FateEnv environment) throws Exception { MetadataTableUtil.deleteTable(tableInfo.tableId, false, environment.getContext(), environment.getManagerLock()); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java index 3ef18695c40..16f1153c2ea 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java @@ -29,7 +29,8 @@ import org.apache.accumulo.core.manager.thrift.TabletServerStatus; import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.manager.LiveTServerSet.TServerConnection; import org.apache.thrift.transport.TTransportException; import org.slf4j.Logger; @@ -37,7 +38,7 @@ import com.google.common.net.HostAndPort; -public class ShutdownTServer extends ManagerRepo { +public class ShutdownTServer extends AbstractRepo { private static final long serialVersionUID = 2L; private static final Logger log = LoggerFactory.getLogger(ShutdownTServer.class); @@ -54,7 +55,7 @@ public ShutdownTServer(TServerInstance server, ResourceGroupId resourceGroup, bo } @Override - public long isReady(FateId fateId, Manager manager) { + public long isReady(FateId fateId, FateEnv env) { TServerInstance server = new TServerInstance(hostAndPort, serverSession); // suppress assignment of tablets to the server if (force) { @@ -62,6 +63,7 @@ public long isReady(FateId fateId, Manager manager) { } // Inform the manager that we want this server to shutdown + Manager manager = (Manager) env; // TODO manager.shutdownTServer(server); if (manager.onlineTabletServers().contains(server)) { @@ -95,15 +97,15 @@ public long isReady(FateId fateId, Manager manager) { } @Override - public Repo call(FateId fateId, Manager manager) throws Exception { + public Repo call(FateId fateId, FateEnv env) throws Exception { // suppress assignment of tablets to the server if (force) { - ZooReaderWriter zoo = manager.getContext().getZooSession().asReaderWriter(); + ZooReaderWriter zoo = env.getContext().getZooSession().asReaderWriter(); var path = - manager.getContext().getServerPaths().createTabletServerPath(resourceGroup, hostAndPort); + env.getContext().getServerPaths().createTabletServerPath(resourceGroup, hostAndPort); ServiceLock.deleteLock(zoo, path); - path = manager.getContext().getServerPaths().createDeadTabletServerPath(resourceGroup, - hostAndPort); + path = + env.getContext().getServerPaths().createDeadTabletServerPath(resourceGroup, hostAndPort); zoo.putPersistentData(path.toString(), "forced down".getBytes(UTF_8), NodeExistsPolicy.OVERWRITE); } @@ -112,5 +114,5 @@ public Repo call(FateId fateId, Manager manager) throws Exception { } @Override - public void undo(FateId fateId, Manager m) {} + public void undo(FateId fateId, FateEnv m) {} } diff --git a/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java b/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java index 3cb474fa408..494c743836c 100644 --- a/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java +++ b/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java @@ -78,6 +78,7 @@ import org.apache.accumulo.manager.compaction.coordinator.CompactionCoordinator; import org.apache.accumulo.manager.compaction.queue.CompactionJobPriorityQueue; import org.apache.accumulo.manager.compaction.queue.ResolvedCompactionJob; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.conf.TableConfiguration; import org.apache.accumulo.server.security.AuditedSecurityOperation; @@ -93,7 +94,7 @@ public class CompactionCoordinatorTest { // Need a non-null fateInstances reference for CompactionCoordinator.compactionCompleted - private static final AtomicReference>> fateInstances = + private static final AtomicReference>> fateInstances = new AtomicReference<>(Map.of()); private static final ResourceGroupId GROUP_ID = ResourceGroupId.of("R2DQ"); diff --git a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java index ee5304219a8..9761eea0405 100644 --- a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java +++ b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java @@ -29,7 +29,6 @@ import org.apache.accumulo.core.data.ResourceGroupId; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.FateInstanceType; -import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.manager.thrift.TableInfo; import org.apache.accumulo.core.manager.thrift.TabletServerStatus; import org.apache.accumulo.core.metadata.TServerInstance; @@ -92,7 +91,7 @@ public void testSingleShutdown() throws Exception { wait = op.isReady(fateId, manager); assertEquals(0, wait, "Expected wait to be 0"); - Repo op2 = op.call(fateId, manager); + var op2 = op.call(fateId, manager); assertNull(op2, "Expected no follow on step"); EasyMock.verify(tserverCnxn, manager); diff --git a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFilesTest.java b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFilesTest.java index 13b8fd857ea..3782572bacf 100644 --- a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFilesTest.java +++ b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFilesTest.java @@ -40,7 +40,7 @@ import org.apache.accumulo.core.fate.FateInstanceType; import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletsMetadata; -import org.apache.accumulo.manager.Manager; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.bulkVer2.LoadFiles.ImportTimingStats; import org.apache.accumulo.manager.tableOps.bulkVer2.LoadFiles.TabletsMetadataFactory; import org.apache.accumulo.server.ServerContext; @@ -63,8 +63,8 @@ public TestTabletsMetadata(AutoCloseable closeable, Iterable tmi private static class CaptureLoader extends LoadFiles.Loader { - public CaptureLoader(Manager manager, TableId tableId) { - super(manager, tableId); + public CaptureLoader(FateEnv env, TableId tableId) { + super(env, tableId); } private static class LoadResult { @@ -90,8 +90,7 @@ public Files getFiles() { private final List results = new ArrayList<>(); @Override - void start(Path bulkDir, Manager manager, TableId tableId, FateId fateId, boolean setTime) - throws Exception { + void start(Path bulkDir, TableId tableId, FateId fateId, boolean setTime) throws Exception { // override to do nothing } @@ -166,27 +165,27 @@ public void testFindOverlappingFiles() { private Map> runLoadFilesLoad(Map loadRanges) throws Exception { - Manager manager = EasyMock.createMock(Manager.class); + FateEnv env = EasyMock.createMock(FateEnv.class); ServerContext ctx = EasyMock.createMock(ServerContext.class); TableConfiguration tconf = EasyMock.createMock(TableConfiguration.class); - EasyMock.expect(manager.getContext()).andReturn(ctx).anyTimes(); + EasyMock.expect(env.getContext()).andReturn(ctx).anyTimes(); EasyMock.expect(ctx.getTableConfiguration(tid)).andReturn(tconf).anyTimes(); EasyMock.expect(tconf.getCount(Property.TABLE_FILE_PAUSE)) .andReturn(Integer.parseInt(Property.TABLE_FILE_PAUSE.getDefaultValue())).anyTimes(); Path bulkDir = EasyMock.createMock(Path.class); - EasyMock.replay(manager, ctx, tconf, bulkDir); + EasyMock.replay(env, ctx, tconf, bulkDir); TabletsMetadata tabletMeta = new TestTabletsMetadata(null, tm); LoadMappingIterator lmi = PrepBulkImportTest.createLoadMappingIter(loadRanges); - CaptureLoader cl = new CaptureLoader(manager, tid); + CaptureLoader cl = new CaptureLoader(env, tid); BulkInfo info = new BulkInfo(); TabletsMetadataFactory tmf = (startRow) -> tabletMeta; FateId txid = FateId.from(FateInstanceType.USER, UUID.randomUUID()); - LoadFiles.loadFiles(cl, info, bulkDir, lmi, tmf, manager, txid, 0); - EasyMock.verify(manager, ctx, tconf, bulkDir); + LoadFiles.loadFiles(cl, info, bulkDir, lmi, tmf, txid, 0); + EasyMock.verify(env, ctx, tconf, bulkDir); List results = cl.getLoadResults(); assertEquals(loadRanges.size(), results.size()); diff --git a/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java b/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java index 0444e28ca03..62b6c9d80ff 100644 --- a/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java +++ b/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java @@ -108,8 +108,8 @@ import org.apache.accumulo.core.spi.compaction.SimpleCompactionDispatcher; import org.apache.accumulo.harness.MiniClusterConfigurationCallback; import org.apache.accumulo.harness.SharedMiniClusterBase; -import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.minicluster.ServerType; import org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl; import org.apache.accumulo.server.util.FindCompactionTmpFiles; @@ -265,7 +265,7 @@ public void testCompactionCommitAndDeadDetectionRoot() throws Exception { var ctx = getCluster().getServerContext(); try (AccumuloClient c = Accumulo.newClient().from(getClientProps()).build(); - FateStore metaFateStore = + FateStore metaFateStore = new MetaFateStore<>(ctx.getZooSession(), testLock.getLockID(), null)) { var tableId = ctx.getTableId(SystemTables.ROOT.tableName()); var allCids = new HashMap>(); @@ -284,7 +284,7 @@ public void testCompactionCommitAndDeadDetectionMeta() throws Exception { var ctx = getCluster().getServerContext(); try (AccumuloClient c = Accumulo.newClient().from(getClientProps()).build(); - FateStore metaFateStore = + FateStore metaFateStore = new MetaFateStore<>(ctx.getZooSession(), testLock.getLockID(), null)) { // Metadata table by default already has 2 tablets var tableId = ctx.getTableId(SystemTables.METADATA.tableName()); @@ -305,7 +305,7 @@ public void testCompactionCommitAndDeadDetectionUser() throws Exception { final String tableName = getUniqueNames(1)[0]; try (AccumuloClient c = Accumulo.newClient().from(getClientProps()).build(); - UserFateStore userFateStore = + UserFateStore userFateStore = new UserFateStore<>(ctx, SystemTables.FATE.tableName(), testLock.getLockID(), null)) { SortedSet splits = new TreeSet<>(); splits.add(new Text(row(MAX_DATA / 2))); @@ -329,9 +329,9 @@ public void testCompactionCommitAndDeadDetectionAll() throws Exception { final String userTable = getUniqueNames(1)[0]; try (AccumuloClient c = Accumulo.newClient().from(getClientProps()).build(); - FateStore userFateStore = + FateStore userFateStore = new UserFateStore<>(ctx, SystemTables.FATE.tableName(), testLock.getLockID(), null); - FateStore metaFateStore = + FateStore metaFateStore = new MetaFateStore<>(ctx.getZooSession(), testLock.getLockID(), null)) { SortedSet splits = new TreeSet<>(); @@ -363,23 +363,23 @@ public void testCompactionCommitAndDeadDetectionAll() throws Exception { } } - public static class FakeRepo extends ManagerRepo { + public static class FakeRepo extends AbstractRepo { private static final long serialVersionUID = 1234L; @Override - public long isReady(FateId fateId, Manager environment) throws Exception { + public long isReady(FateId fateId, FateEnv environment) throws Exception { return 1000; } @Override - public Repo call(FateId fateId, Manager environment) throws Exception { + public Repo call(FateId fateId, FateEnv environment) throws Exception { return null; } } private FateId createCompactionCommitAndDeadMetadata(AccumuloClient c, - FateStore fateStore, String tableName, + FateStore fateStore, String tableName, Map> allCids) throws Exception { var ctx = getCluster().getServerContext(); c.tableOperations().flush(tableName, null, null, true); @@ -391,7 +391,7 @@ private FateId createCompactionCommitAndDeadMetadata(AccumuloClient c, // Create a fate transaction for one of the compaction ids that is in the new state, it // should never run. Its purpose is to prevent the dead compaction detector // from deleting the id. - Repo repo = new FakeRepo(); + Repo repo = new FakeRepo(); var fateId = seedTransaction(fateStore, Fate.FateOperation.COMMIT_COMPACTION, FateKey.forCompactionCommit(allCids.get(tableId).get(0)), repo, true).orElseThrow(); @@ -425,7 +425,7 @@ private FateId createCompactionCommitAndDeadMetadata(AccumuloClient c, return fateId; } - private void verifyCompactionCommitAndDead(FateStore fateStore, TableId tableId, + private void verifyCompactionCommitAndDead(FateStore fateStore, TableId tableId, FateId fateId, List cids) { var ctx = getCluster().getServerContext(); diff --git a/test/src/main/java/org/apache/accumulo/test/fate/FlakyFateManager.java b/test/src/main/java/org/apache/accumulo/test/fate/FlakyFateManager.java index 1a5af8eb4a1..6768aec80d2 100644 --- a/test/src/main/java/org/apache/accumulo/test/fate/FlakyFateManager.java +++ b/test/src/main/java/org/apache/accumulo/test/fate/FlakyFateManager.java @@ -24,6 +24,7 @@ import org.apache.accumulo.core.fate.Fate; import org.apache.accumulo.core.fate.FateStore; import org.apache.accumulo.manager.Manager; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TraceRepo; import org.apache.accumulo.server.ServerContext; import org.slf4j.LoggerFactory; @@ -34,7 +35,7 @@ protected FlakyFateManager(ConfigOpts opts, String[] args) throws IOException { } @Override - protected Fate initializeFateInstance(ServerContext context, FateStore store) { + protected Fate initializeFateInstance(ServerContext context, FateStore store) { LoggerFactory.getLogger(FlakyFateManager.class).info("Creating Flaky Fate for {}", store.type()); return new FlakyFate<>(this, store, TraceRepo::toLogString, getConfiguration()); diff --git a/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java b/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java index 0dc1d52e5a1..7b33a79f904 100644 --- a/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java +++ b/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java @@ -77,7 +77,7 @@ import org.apache.accumulo.harness.SharedMiniClusterBase; import org.apache.accumulo.manager.Manager; import org.apache.accumulo.manager.merge.FindMergeableRangeTask.UnmergeableReason; -import org.apache.accumulo.manager.tableOps.ManagerRepo; +import org.apache.accumulo.manager.tableOps.AbstractRepo; import org.apache.accumulo.manager.tableOps.compact.CompactionDriver; import org.apache.accumulo.manager.tableOps.merge.DeleteRows; import org.apache.accumulo.manager.tableOps.merge.MergeInfo; @@ -149,10 +149,10 @@ public void testNoWalsMergeRepos(MergeInfo.Operation operation) throws Exception // condition final MergeInfo mergeInfo = new MergeInfo(tableId, manager.getContext().getNamespaceId(tableId), null, null, operation); - final ManagerRepo repo = + final AbstractRepo repo = operation == Operation.MERGE ? new MergeTablets(mergeInfo) : new DeleteRows(mergeInfo); // Also test ReserveTablets isReady() - final ManagerRepo reserve = new ReserveTablets(mergeInfo); + final AbstractRepo reserve = new ReserveTablets(mergeInfo); // First, check no errors with the default case assertEquals(0, reserve.isReady(fateId, manager)); @@ -466,7 +466,7 @@ public void testCompactionDriverCleanup(Pair rangeText) throws Except var ctx = manager.getContext(); // Create the CompactionDriver to test with the given range passed into the method - final ManagerRepo repo = new CompactionDriver(ctx.getNamespaceId(tableId), tableId, + final AbstractRepo repo = new CompactionDriver(ctx.getNamespaceId(tableId), tableId, !range.isInfiniteStartKey() ? range.getStartKey().getRow().getBytes() : null, !range.isInfiniteStopKey() ? range.getEndKey().getRow().getBytes() : null); diff --git a/test/src/main/java/org/apache/accumulo/test/fate/SlowFateSplitManager.java b/test/src/main/java/org/apache/accumulo/test/fate/SlowFateSplitManager.java index ba2c96c69cd..635d500f310 100644 --- a/test/src/main/java/org/apache/accumulo/test/fate/SlowFateSplitManager.java +++ b/test/src/main/java/org/apache/accumulo/test/fate/SlowFateSplitManager.java @@ -24,6 +24,7 @@ import org.apache.accumulo.core.fate.Fate; import org.apache.accumulo.core.fate.FateStore; import org.apache.accumulo.manager.Manager; +import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TraceRepo; import org.apache.accumulo.server.ServerContext; import org.slf4j.Logger; @@ -44,7 +45,7 @@ protected SlowFateSplitManager(ConfigOpts opts, String[] args) throws IOExceptio } @Override - protected Fate initializeFateInstance(ServerContext context, FateStore store) { + protected Fate initializeFateInstance(ServerContext context, FateStore store) { log.info("Creating Slow Split Fate for {}", store.type()); return new SlowFateSplit<>(this, store, TraceRepo::toLogString, getConfiguration()); } From 777631226cbf8887fbd1e2a501cd58177a5adea3 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 30 Sep 2025 19:12:06 +0000 Subject: [PATCH 2/7] do TODO --- .../src/main/java/org/apache/accumulo/manager/Manager.java | 4 ++-- .../java/org/apache/accumulo/manager/tableOps/FateEnv.java | 3 +-- .../apache/accumulo/manager/tableOps/clone/CloneMetadata.java | 4 ++-- .../accumulo/manager/tableOps/create/PopulateMetadata.java | 2 +- .../manager/tableOps/tableImport/PopulateMetadataTable.java | 2 +- .../apache/accumulo/manager/tserverOps/ShutdownTServer.java | 4 ++-- .../apache/accumulo/manager/tableOps/ShutdownTServerTest.java | 2 +- 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index 6bc86b33dfb..ed92cceb51e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -1362,7 +1362,7 @@ private long remaining(long deadline) { return Math.max(1, deadline - System.currentTimeMillis()); } - public ServiceLock getManagerLock() { + public ServiceLock getServiceLock() { return managerLock; } @@ -1405,7 +1405,7 @@ private ServiceLockData getManagerLock(final ServiceLockPath zManagerLoc) sleepUninterruptibly(TIME_TO_WAIT_BETWEEN_LOCK_CHECKS, MILLISECONDS); } - this.getContext().setServiceLock(getManagerLock()); + this.getContext().setServiceLock(getServiceLock()); return sld; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java index 83815f75b16..954b2281df1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java @@ -49,8 +49,7 @@ public interface FateEnv { void removeBulkImportStatus(String sourceDir); - // TODO rename - ServiceLock getManagerLock(); + ServiceLock getServiceLock(); SteadyTime getSteadyTime(); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java index cb9ed1c0786..5c02d3e2e1c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java @@ -47,7 +47,7 @@ public Repo call(FateId fateId, FateEnv environment) throws Exception { // need to clear out any metadata entries for tableId just in case this // died before and is executing again MetadataTableUtil.deleteTable(cloneInfo.getTableId(), false, environment.getContext(), - environment.getManagerLock()); + environment.getServiceLock()); MetadataTableUtil.cloneTable(environment.getContext(), cloneInfo.getSrcTableId(), cloneInfo.getTableId()); return new FinishCloneTable(cloneInfo); @@ -56,7 +56,7 @@ public Repo call(FateId fateId, FateEnv environment) throws Exception { @Override public void undo(FateId fateId, FateEnv environment) throws Exception { MetadataTableUtil.deleteTable(cloneInfo.getTableId(), false, environment.getContext(), - environment.getManagerLock()); + environment.getServiceLock()); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java index 7bae4d16020..62857e239f5 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java @@ -115,7 +115,7 @@ private void writeSplitsToMetadataTable(ServerContext context, @Override public void undo(FateId fateId, FateEnv environment) throws Exception { MetadataTableUtil.deleteTable(tableInfo.getTableId(), false, environment.getContext(), - environment.getManagerLock()); + environment.getServiceLock()); } /** diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java index f1fbc8cf36f..baa6bd6a761 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java @@ -213,6 +213,6 @@ public Repo call(FateId fateId, FateEnv env) throws Exception { @Override public void undo(FateId fateId, FateEnv environment) throws Exception { MetadataTableUtil.deleteTable(tableInfo.tableId, false, environment.getContext(), - environment.getManagerLock()); + environment.getServiceLock()); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java index 16f1153c2ea..cd0e4ebef0b 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java @@ -63,7 +63,7 @@ public long isReady(FateId fateId, FateEnv env) { } // Inform the manager that we want this server to shutdown - Manager manager = (Manager) env; // TODO + Manager manager = (Manager) env; manager.shutdownTServer(server); if (manager.onlineTabletServers().contains(server)) { @@ -73,7 +73,7 @@ public long isReady(FateId fateId, FateEnv env) { TabletServerStatus status = connection.getTableMap(false); if (status.tableMap != null && status.tableMap.isEmpty()) { log.info("tablet server hosts no tablets {}", server); - connection.halt(manager.getManagerLock()); + connection.halt(manager.getServiceLock()); log.info("tablet server asked to halt {}", server); return 0; } else { diff --git a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java index 9761eea0405..8dbe53bf122 100644 --- a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java +++ b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/ShutdownTServerTest.java @@ -81,7 +81,7 @@ public void testSingleShutdown() throws Exception { EasyMock.expect(manager.onlineTabletServers()).andReturn(Collections.singleton(tserver)); EasyMock.expect(manager.getConnection(tserver)).andReturn(tserverCnxn); EasyMock.expect(tserverCnxn.getTableMap(false)).andReturn(status); - EasyMock.expect(manager.getManagerLock()).andReturn(null); + EasyMock.expect(manager.getServiceLock()).andReturn(null); tserverCnxn.halt(null); EasyMock.expectLastCall().once(); From ae309c91025c91099f9f85487a85fc3177c9c6e0 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 30 Sep 2025 19:21:50 +0000 Subject: [PATCH 3/7] add override annotations --- .../main/java/org/apache/accumulo/manager/Manager.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index ed92cceb51e..ca0a0e49d78 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -464,10 +464,12 @@ int displayUnassigned() { return result; } + @Override public TableManager getTableManager() { return getContext().getTableManager(); } + @Override public ThreadPoolExecutor getTabletRefreshThreadPool() { return tabletRefreshThreadPool; } @@ -549,6 +551,7 @@ ManagerGoalState getManagerGoalState() { private Splitter splitter; + @Override public Splitter getSplitter() { return splitter; } @@ -1362,6 +1365,7 @@ private long remaining(long deadline) { return Math.max(1, deadline - System.currentTimeMillis()); } + @Override public ServiceLock getServiceLock() { return managerLock; } @@ -1499,6 +1503,7 @@ public Set onlineTables() { return result; } + @Override public Set onlineTabletServers() { return tserverSet.getSnapshot().getTservers(); } @@ -1525,6 +1530,7 @@ public Events getEvents() { return nextEvent; } + @Override public VolumeManager getVolumeManager() { return getContext().getVolumeManager(); } @@ -1587,10 +1593,12 @@ public Set shutdownServers() { } } + @Override public void updateBulkImportStatus(String directory, BulkImportState state) { bulkImportStatus.updateBulkImportStatus(Collections.singletonList(directory), state); } + @Override public void removeBulkImportStatus(String directory) { bulkImportStatus.removeBulkImportStatus(Collections.singletonList(directory)); } @@ -1600,6 +1608,7 @@ public void removeBulkImportStatus(String directory) { * monotonic clock, which will be approximately consistent between different managers or different * runs of the same manager. SteadyTime supports both nanoseconds and milliseconds. */ + @Override public SteadyTime getSteadyTime() { return timeKeeper.getTime(); } @@ -1630,6 +1639,7 @@ public ServiceLock getLock() { * * @return {@link ExecutorService} */ + @Override public ExecutorService getRenamePool() { return this.renamePool; } From b899a83207acb951b62fd56a4210a7b7af4a75d1 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 30 Sep 2025 20:17:11 +0000 Subject: [PATCH 4/7] add override annotations --- .../org/apache/accumulo/manager/tableOps/AbstractRepo.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java index d988eca5b72..f850b2c5840 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java @@ -25,10 +25,12 @@ public abstract class AbstractRepo implements Repo { private static final long serialVersionUID = 1L; + @Override public long isReady(FateId fateId, FateEnv environment) throws Exception { return 0; } + @Override public void undo(FateId fateId, FateEnv environment) throws Exception {} @Override @@ -41,6 +43,7 @@ public String getReturn() { return null; } + @Override public abstract Repo call(FateId fateId, FateEnv environment) throws Exception; } From d5a63a872b49f4e89b3b7659bb795be77a63d1da Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 30 Sep 2025 21:00:54 +0000 Subject: [PATCH 5/7] code review update --- .../main/java/org/apache/accumulo/manager/Manager.java | 2 +- .../compaction/coordinator/commit/CommitCompaction.java | 4 ++-- .../compaction/coordinator/commit/PutGcCandidates.java | 6 +++--- .../compaction/coordinator/commit/RefreshTablet.java | 6 +++--- .../coordinator/commit/RenameCompactionFile.java | 4 ++-- .../{AbstractRepo.java => AbstractFateOperation.java} | 2 +- .../accumulo/manager/tableOps/ChangeTableState.java | 2 +- .../org/apache/accumulo/manager/tableOps/FateEnv.java | 2 +- .../accumulo/manager/tableOps/availability/LockTable.java | 4 ++-- .../tableOps/availability/SetTabletAvailability.java | 4 ++-- .../manager/tableOps/bulkVer2/BulkImportMove.java | 4 ++-- .../manager/tableOps/bulkVer2/CleanUpBulkImport.java | 4 ++-- .../manager/tableOps/bulkVer2/ComputeBulkRange.java | 4 ++-- .../accumulo/manager/tableOps/bulkVer2/LoadFiles.java | 4 ++-- .../manager/tableOps/bulkVer2/PrepBulkImport.java | 4 ++-- .../manager/tableOps/bulkVer2/RefreshTablets.java | 4 ++-- .../accumulo/manager/tableOps/clone/CloneMetadata.java | 4 ++-- .../accumulo/manager/tableOps/clone/ClonePermissions.java | 4 ++-- .../accumulo/manager/tableOps/clone/CloneTable.java | 4 ++-- .../accumulo/manager/tableOps/clone/CloneZookeeper.java | 4 ++-- .../accumulo/manager/tableOps/clone/FinishCloneTable.java | 4 ++-- .../apache/accumulo/manager/tableOps/compact/CleanUp.java | 4 ++-- .../accumulo/manager/tableOps/compact/CompactRange.java | 4 ++-- .../manager/tableOps/compact/CompactionDriver.java | 4 ++-- .../accumulo/manager/tableOps/compact/RefreshTablets.java | 4 ++-- .../tableOps/compact/cancel/CancelCompactions.java | 4 ++-- .../tableOps/compact/cancel/FinishCancelCompaction.java | 4 ++-- .../accumulo/manager/tableOps/create/ChooseDir.java | 4 ++-- .../accumulo/manager/tableOps/create/CreateTable.java | 4 ++-- .../manager/tableOps/create/FinishCreateTable.java | 4 ++-- .../manager/tableOps/create/PopulateMetadata.java | 4 ++-- .../manager/tableOps/create/PopulateZookeeper.java | 4 ++-- .../manager/tableOps/create/SetupPermissions.java | 4 ++-- .../apache/accumulo/manager/tableOps/delete/CleanUp.java | 4 ++-- .../accumulo/manager/tableOps/delete/DeleteTable.java | 4 ++-- .../accumulo/manager/tableOps/delete/PreDeleteTable.java | 4 ++-- .../accumulo/manager/tableOps/delete/ReserveTablets.java | 4 ++-- .../accumulo/manager/tableOps/merge/CountFiles.java | 4 ++-- .../accumulo/manager/tableOps/merge/DeleteRows.java | 4 ++-- .../accumulo/manager/tableOps/merge/DeleteTablets.java | 4 ++-- .../manager/tableOps/merge/FinishTableRangeOp.java | 4 ++-- .../accumulo/manager/tableOps/merge/MergeTablets.java | 4 ++-- .../accumulo/manager/tableOps/merge/ReserveTablets.java | 4 ++-- .../accumulo/manager/tableOps/merge/TableRangeOp.java | 4 ++-- .../manager/tableOps/merge/UnreserveAndError.java | 4 ++-- .../manager/tableOps/merge/UnreserveSystemMerge.java | 4 ++-- .../manager/tableOps/merge/VerifyMergeability.java | 4 ++-- .../tableOps/namespace/create/CreateNamespace.java | 4 ++-- .../tableOps/namespace/create/FinishCreateNamespace.java | 4 ++-- .../namespace/create/PopulateZookeeperWithNamespace.java | 4 ++-- .../namespace/create/SetupNamespacePermissions.java | 4 ++-- .../tableOps/namespace/delete/DeleteNamespace.java | 4 ++-- .../tableOps/namespace/delete/NamespaceCleanUp.java | 4 ++-- .../tableOps/namespace/rename/RenameNamespace.java | 4 ++-- .../accumulo/manager/tableOps/rename/RenameTable.java | 4 ++-- .../tableOps/split/AllocateDirsAndEnsureOnline.java | 4 ++-- .../manager/tableOps/split/DeleteOperationIds.java | 4 ++-- .../accumulo/manager/tableOps/split/FindSplits.java | 4 ++-- .../apache/accumulo/manager/tableOps/split/PreSplit.java | 4 ++-- .../accumulo/manager/tableOps/split/UpdateTablets.java | 4 ++-- .../manager/tableOps/tableExport/ExportTable.java | 4 ++-- .../manager/tableOps/tableExport/WriteExportFiles.java | 4 ++-- .../manager/tableOps/tableImport/CreateImportDir.java | 4 ++-- .../manager/tableOps/tableImport/FinishImportTable.java | 4 ++-- .../tableOps/tableImport/ImportPopulateZookeeper.java | 4 ++-- .../tableOps/tableImport/ImportSetupPermissions.java | 4 ++-- .../manager/tableOps/tableImport/ImportTable.java | 4 ++-- .../manager/tableOps/tableImport/MapImportFileNames.java | 4 ++-- .../manager/tableOps/tableImport/MoveExportedFiles.java | 4 ++-- .../tableOps/tableImport/PopulateMetadataTable.java | 4 ++-- .../accumulo/manager/tserverOps/ShutdownTServer.java | 4 ++-- .../accumulo/test/compaction/ExternalCompaction_1_IT.java | 6 +++--- .../accumulo/test/fate/ManagerRepoIT_SimpleSuite.java | 8 ++++---- 73 files changed, 147 insertions(+), 147 deletions(-) rename server/manager/src/main/java/org/apache/accumulo/manager/tableOps/{AbstractRepo.java => AbstractFateOperation.java} (95%) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index ca0a0e49d78..6dd594fa436 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -565,7 +565,7 @@ public CompactionCoordinator getCompactionCoordinator() { } @Override - public void recordCompletion(ExternalCompactionId ecid) { + public void recordCompactionCompletion(ExternalCompactionId ecid) { getCompactionCoordinator().recordCompletion(ecid); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java index bed7e04c18e..f16e9b9c085 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java @@ -47,7 +47,7 @@ import org.apache.accumulo.core.spi.compaction.CompactionKind; import org.apache.accumulo.core.tabletserver.thrift.TCompactionStats; import org.apache.accumulo.core.util.Retry; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.hadoop.fs.Path; @@ -56,7 +56,7 @@ import com.google.common.base.Preconditions; -public class CommitCompaction extends AbstractRepo { +public class CommitCompaction extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(CommitCompaction.class); private final CompactionCommitData commitData; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java index 1a5c016033a..3933a625048 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java @@ -21,10 +21,10 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.metadata.schema.ExternalCompactionId; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; -public class PutGcCandidates extends AbstractRepo { +public class PutGcCandidates extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final CompactionCommitData commitData; private final String refreshLocation; @@ -41,7 +41,7 @@ public Repo call(FateId fateId, FateEnv env) throws Exception { env.getContext().getAmple().putGcCandidates(commitData.getTableId(), commitData.getJobFiles()); if (refreshLocation == null) { - env.recordCompletion(ExternalCompactionId.of(commitData.ecid)); + env.recordCompactionCompletion(ExternalCompactionId.of(commitData.ecid)); return null; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java index b761c0cc985..d3be75c0128 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java @@ -29,13 +29,13 @@ import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.core.metadata.schema.ExternalCompactionId; import org.apache.accumulo.core.metadata.schema.TabletMetadata; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.bulkVer2.TabletRefresher; import com.google.common.util.concurrent.MoreExecutors; -public class RefreshTablet extends AbstractRepo { +public class RefreshTablet extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final TKeyExtent extent; private final String tserverInstance; @@ -63,7 +63,7 @@ public Repo call(FateId fateId, FateEnv env) throws Exception { executorService.shutdownNow(); } - env.recordCompletion(ExternalCompactionId.of(compactionId)); + env.recordCompactionCompletion(ExternalCompactionId.of(compactionId)); return null; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java index f50107e22aa..1c3cb9b8d74 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RenameCompactionFile.java @@ -23,14 +23,14 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.metadata.ReferencedTabletFile; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.tablets.TabletNameGenerator; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RenameCompactionFile extends AbstractRepo { +public class RenameCompactionFile extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(RenameCompactionFile.class); private static final long serialVersionUID = 1L; private final CompactionCommitData commitData; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractFateOperation.java similarity index 95% rename from server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java rename to server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractFateOperation.java index f850b2c5840..08a7ec4e9e2 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractRepo.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/AbstractFateOperation.java @@ -21,7 +21,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -public abstract class AbstractRepo implements Repo { +public abstract class AbstractFateOperation implements Repo { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java index 77583ce73c2..73c5ea9b2d1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java @@ -30,7 +30,7 @@ import org.apache.accumulo.core.manager.state.tables.TableState; import org.slf4j.LoggerFactory; -public class ChangeTableState extends AbstractRepo { +public class ChangeTableState extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final TableId tableId; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java index 954b2281df1..da459048eda 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java @@ -37,7 +37,7 @@ public interface FateEnv { Events getEvents(); - void recordCompletion(ExternalCompactionId ecid); + void recordCompactionCompletion(ExternalCompactionId ecid); Set onlineTabletServers(); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java index bec2e30d6c6..b8ab0aac5af 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/LockTable.java @@ -26,11 +26,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class LockTable extends AbstractRepo { +public class LockTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final TableId tableId; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java index b5cc45ff803..e31923444df 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/availability/SetTabletAvailability.java @@ -43,14 +43,14 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletsMetadata; import org.apache.accumulo.core.util.Timer; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class SetTabletAvailability extends AbstractRepo { +public class SetTabletAvailability extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(SetTabletAvailability.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java index 8766926d067..cc8a5a6238d 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java @@ -29,7 +29,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.manager.thrift.BulkImportState; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.hadoop.fs.Path; @@ -51,7 +51,7 @@ * about the request. To prevent problems like this, an Arbitrator is used. Before starting any new * request, the tablet server checks the Arbitrator to see if the request is still valid. */ -class BulkImportMove extends AbstractRepo { +class BulkImportMove extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java index 402a03f40c4..47110524f9e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java @@ -37,7 +37,7 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType; import org.apache.accumulo.core.util.Retry; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.fs.Path; @@ -45,7 +45,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CleanUpBulkImport extends AbstractRepo { +public class CleanUpBulkImport extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java index 8c0d3dc15e1..3eab86672af 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/ComputeBulkRange.java @@ -26,7 +26,7 @@ import org.apache.accumulo.core.dataImpl.KeyExtent; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.hadoop.fs.Path; @@ -34,7 +34,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ComputeBulkRange extends AbstractRepo { +public class ComputeBulkRange extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(ComputeBulkRange.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java index b2c6743b01e..9ec88f73920 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java @@ -66,7 +66,7 @@ import org.apache.accumulo.core.trace.TraceUtil; import org.apache.accumulo.core.util.PeekingIterator; import org.apache.accumulo.core.util.Timer; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.accumulo.server.tablets.TabletTime; @@ -83,7 +83,7 @@ * Make asynchronous load calls to each overlapping Tablet. This RepO does its work on the isReady * and will return a linear sleep value based on the largest number of Tablets on a TabletServer. */ -class LoadFiles extends AbstractRepo { +class LoadFiles extends AbstractFateOperation { // visible for testing interface TabletsMetadataFactory { diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java index 35a51276157..7619054a1c8 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java @@ -50,7 +50,7 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletsMetadata; import org.apache.accumulo.core.util.PeekingIterator; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.ServerContext; @@ -74,7 +74,7 @@ * * @since 2.0.0 */ -public class PrepBulkImport extends AbstractRepo { +public class PrepBulkImport extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java index c0aa34ad062..477eac19763 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/RefreshTablets.java @@ -20,7 +20,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; /** @@ -30,7 +30,7 @@ * location its ok. That means the tablet either unloaded before of after the snapshot. In either * case the tablet will see the bulk files the next time its hosted somewhere. */ -public class RefreshTablets extends AbstractRepo { +public class RefreshTablets extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java index 5c02d3e2e1c..9e0d38f0c6a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneMetadata.java @@ -20,12 +20,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.util.MetadataTableUtil; import org.slf4j.LoggerFactory; -class CloneMetadata extends AbstractRepo { +class CloneMetadata extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final CloneInfo cloneInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java index 737314ba5b7..c8b80a0b5ee 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/ClonePermissions.java @@ -26,11 +26,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.TablePermission; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.LoggerFactory; -class ClonePermissions extends AbstractRepo { +class ClonePermissions extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java index acff1463d00..5017f32ee91 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneTable.java @@ -27,11 +27,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class CloneTable extends AbstractRepo { +public class CloneTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final CloneInfo cloneInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java index 9874e0b21cd..c92a599d235 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/CloneZookeeper.java @@ -24,11 +24,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -class CloneZookeeper extends AbstractRepo { +class CloneZookeeper extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java index 2ad1e13118a..e5f623a69bc 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java @@ -24,12 +24,12 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -class FinishCloneTable extends AbstractRepo { +class FinishCloneTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final CloneInfo cloneInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java index 8e808368268..9b283fe7737 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CleanUp.java @@ -34,14 +34,14 @@ import org.apache.accumulo.core.metadata.schema.Ample; import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult.Status; import org.apache.accumulo.core.metadata.schema.TabletMetadata; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.compaction.CompactionConfigStorage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CleanUp extends AbstractRepo { +public class CleanUp extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(CleanUp.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java index 51751379200..e1d88a69cf7 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java @@ -34,7 +34,7 @@ import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.fate.zookeeper.LockRange; import org.apache.accumulo.core.util.TextUtil; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.compaction.CompactionConfigStorage; @@ -44,7 +44,7 @@ import com.google.common.base.Preconditions; -public class CompactRange extends AbstractRepo { +public class CompactRange extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(CompactRange.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java index 425a64d6e2e..dfb973cd00d 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java @@ -55,7 +55,7 @@ import org.apache.accumulo.core.metadata.schema.SelectedFiles; import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.util.Retry; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.bulkVer2.TabletRefresher; import org.apache.accumulo.manager.tableOps.delete.PreDeleteTable; @@ -69,7 +69,7 @@ import com.google.common.base.Preconditions; -public class CompactionDriver extends AbstractRepo { +public class CompactionDriver extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(CompactionDriver.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java index 6dd124e7d93..f642e49f645 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/RefreshTablets.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.data.TableId; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.bulkVer2.TabletRefresher; -public class RefreshTablets extends AbstractRepo { +public class RefreshTablets extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java index 6485a2cabce..dd47d24825c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java @@ -24,14 +24,14 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.compaction.CompactionConfigStorage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CancelCompactions extends AbstractRepo { +public class CancelCompactions extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final TableId tableId; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java index 34db9609025..3530b1154f4 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/FinishCancelCompaction.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -class FinishCancelCompaction extends AbstractRepo { +class FinishCancelCompaction extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final TableId tableId; private final NamespaceId namespaceId; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java index 12b3b0eb45f..19d421ce442 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/ChooseDir.java @@ -30,7 +30,7 @@ import org.apache.accumulo.core.client.admin.TabletMergeability; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; @@ -43,7 +43,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class ChooseDir extends AbstractRepo { +class ChooseDir extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final TableInfo tableInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java index c759d17581e..5806ccd8c27 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/CreateTable.java @@ -31,7 +31,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; @@ -40,7 +40,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CreateTable extends AbstractRepo { +public class CreateTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(CreateTable.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java index 80a93489349..1109830b093 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java @@ -26,7 +26,7 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; @@ -36,7 +36,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class FinishCreateTable extends AbstractRepo { +class FinishCreateTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(FinishCreateTable.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java index 62857e239f5..8242b4e944d 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateMetadata.java @@ -36,7 +36,7 @@ import org.apache.accumulo.core.metadata.schema.MetadataTime; import org.apache.accumulo.core.metadata.schema.TabletMergeabilityMetadata; import org.apache.accumulo.core.util.time.SteadyTime; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; @@ -46,7 +46,7 @@ import com.google.common.base.Preconditions; -class PopulateMetadata extends AbstractRepo { +class PopulateMetadata extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java index 3c7afda63f8..13fdc70e9c3 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/PopulateZookeeper.java @@ -24,14 +24,14 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.conf.store.TablePropKey; import org.apache.accumulo.server.util.PropUtil; -class PopulateZookeeper extends AbstractRepo { +class PopulateZookeeper extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java index db68cc1b3b1..4edc7d6622b 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/SetupPermissions.java @@ -22,12 +22,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.TablePermission; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.TableInfo; import org.slf4j.LoggerFactory; -class SetupPermissions extends AbstractRepo { +class SetupPermissions extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java index 8542932737c..3f8d6baabee 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/CleanUp.java @@ -40,7 +40,7 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily; import org.apache.accumulo.core.security.Authorizations; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.fs.VolumeManager; @@ -49,7 +49,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class CleanUp extends AbstractRepo { +class CleanUp extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(CleanUp.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java index 2de7d566e5c..41f2ff1efa2 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java @@ -27,11 +27,11 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class DeleteTable extends AbstractRepo { +public class DeleteTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java index abb5a84f65a..2b935cb4519 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java @@ -28,14 +28,14 @@ import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter; import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.compaction.CompactionConfigStorage; import org.apache.zookeeper.KeeperException; -public class PreDeleteTable extends AbstractRepo { +public class PreDeleteTable extends AbstractFateOperation { public static String createDeleteMarkerPath(InstanceId instanceId, TableId tableId) { return Constants.ZTABLES + "/" + tableId.canonical() + Constants.ZTABLE_DELETE_MARKER; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java index ac6681bae76..5757c622d6b 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/ReserveTablets.java @@ -32,12 +32,12 @@ import org.apache.accumulo.core.metadata.schema.Ample; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ReserveTablets extends AbstractRepo { +public class ReserveTablets extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(ReserveTablets.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java index 9ffea8b4374..70ff88b13a7 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/CountFiles.java @@ -24,14 +24,14 @@ import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -public class CountFiles extends AbstractRepo { +public class CountFiles extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(CountFiles.class); private static final long serialVersionUID = 1L; private final MergeInfo data; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java index 562f338e202..1cecca8fa54 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteRows.java @@ -45,7 +45,7 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.Pair; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.hadoop.io.Text; @@ -56,7 +56,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Sets; -public class DeleteRows extends AbstractRepo { +public class DeleteRows extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java index 22e4230e51f..37af6b75cda 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java @@ -29,7 +29,7 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.TextUtil; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.hadoop.io.Text; import org.slf4j.Logger; @@ -40,7 +40,7 @@ /** * Delete tablets that were merged into another tablet. */ -public class DeleteTablets extends AbstractRepo { +public class DeleteTablets extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java index a69cb2dd6af..495863e4a6f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java @@ -32,7 +32,7 @@ import org.apache.accumulo.core.metadata.schema.Ample; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.Logger; @@ -40,7 +40,7 @@ import com.google.common.base.Preconditions; -class FinishTableRangeOp extends AbstractRepo { +class FinishTableRangeOp extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(FinishTableRangeOp.class); private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java index 3d4c58fd8af..8e8241fb92d 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeTablets.java @@ -42,7 +42,7 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.gc.AllVolumesDirectory; import org.apache.accumulo.server.tablets.TabletTime; @@ -51,7 +51,7 @@ import com.google.common.base.Preconditions; -public class MergeTablets extends AbstractRepo { +public class MergeTablets extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java index fcfaff6b75c..b1679cc5d9e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java @@ -34,14 +34,14 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.Timer; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -public class ReserveTablets extends AbstractRepo { +public class ReserveTablets extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(ReserveTablets.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java index c108d6606c3..5be5efbbc80 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/TableRangeOp.java @@ -29,14 +29,14 @@ import org.apache.accumulo.core.fate.zookeeper.LockRange; import org.apache.accumulo.core.metadata.SystemTables; import org.apache.accumulo.core.util.TextUtil; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TableRangeOp extends AbstractRepo { +public class TableRangeOp extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(TableRangeOp.class); private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java index bf77c0b483b..eb647fef662 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveAndError.java @@ -23,12 +23,12 @@ import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class UnreserveAndError extends AbstractRepo { +public class UnreserveAndError extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(UnreserveAndError.class); private final MergeInfo mergeInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java index 9ff992f0053..de283569227 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/UnreserveSystemMerge.java @@ -24,12 +24,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.manager.merge.FindMergeableRangeTask.UnmergeableReason; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class UnreserveSystemMerge extends AbstractRepo { +public class UnreserveSystemMerge extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(UnreserveSystemMerge.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java index 2da2ab4c4b4..5ac281bfaa3 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/VerifyMergeability.java @@ -25,7 +25,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.manager.merge.FindMergeableRangeTask.MergeableRange; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.merge.MergeInfo.Operation; import org.slf4j.Logger; @@ -33,7 +33,7 @@ import com.google.common.base.Preconditions; -public class VerifyMergeability extends AbstractRepo { +public class VerifyMergeability extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(VerifyMergeability.class); private static final long serialVersionUID = 1L; private final MergeInfo data; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java index 21b15a1d4e5..16430c54b80 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/CreateNamespace.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.data.NamespaceId; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class CreateNamespace extends AbstractRepo { +public class CreateNamespace extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final NamespaceInfo namespaceInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java index 8aa382d4105..52781aedfdb 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java @@ -21,12 +21,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -class FinishCreateNamespace extends AbstractRepo { +class FinishCreateNamespace extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java index ee46bcb157a..320b65e5116 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java @@ -23,13 +23,13 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.conf.store.NamespacePropKey; import org.apache.accumulo.server.util.PropUtil; -class PopulateZookeeperWithNamespace extends AbstractRepo { +class PopulateZookeeperWithNamespace extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java index 0eb1fde2128..d54a858cbfc 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/SetupNamespacePermissions.java @@ -22,11 +22,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.NamespacePermission; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.LoggerFactory; -class SetupNamespacePermissions extends AbstractRepo { +class SetupNamespacePermissions extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java index 1a0ce531393..3f3d002d9f4 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java @@ -23,11 +23,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; -public class DeleteNamespace extends AbstractRepo { +public class DeleteNamespace extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java index 8fa96ef966c..46d1b88853c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/NamespaceCleanUp.java @@ -23,13 +23,13 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class NamespaceCleanUp extends AbstractRepo { +class NamespaceCleanUp extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(NamespaceCleanUp.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java index 25c0bbf2b31..f745ca22833 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java @@ -23,12 +23,12 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -public class RenameNamespace extends AbstractRepo { +public class RenameNamespace extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final NamespaceId namespaceId; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java index f5690303c6e..52fdaac67cb 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java @@ -27,12 +27,12 @@ import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.util.Pair; import org.apache.accumulo.core.util.tables.TableNameUtil; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.slf4j.LoggerFactory; -public class RenameTable extends AbstractRepo { +public class RenameTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final TableId tableId; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java index 32254222644..171106399ef 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/AllocateDirsAndEnsureOnline.java @@ -31,13 +31,13 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.tablets.TabletNameGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class AllocateDirsAndEnsureOnline extends AbstractRepo { +public class AllocateDirsAndEnsureOnline extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(PreSplit.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java index f8f7057b0da..8f50b9dc25e 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java @@ -28,10 +28,10 @@ import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult.Status; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; -public class DeleteOperationIds extends AbstractRepo { +public class DeleteOperationIds extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final SplitInfo splitInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java index 306ba6312be..a7036e9a21f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/FindSplits.java @@ -33,14 +33,14 @@ import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult; import org.apache.accumulo.core.metadata.schema.Ample.ConditionalResult.Status; import org.apache.accumulo.core.metadata.schema.UnSplittableMetadata; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.split.SplitUtils; import org.apache.hadoop.io.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class FindSplits extends AbstractRepo { +public class FindSplits extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java index 21ef63055e2..b1ea52689c5 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java @@ -39,7 +39,7 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata; import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.hadoop.io.Text; import org.slf4j.Logger; @@ -47,7 +47,7 @@ import com.google.common.base.Preconditions; -public class PreSplit extends AbstractRepo { +public class PreSplit extends AbstractFateOperation { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(PreSplit.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java index b2f43b7124b..f3147165b16 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/UpdateTablets.java @@ -42,7 +42,7 @@ import org.apache.accumulo.core.metadata.schema.TabletOperationId; import org.apache.accumulo.core.metadata.schema.TabletOperationType; import org.apache.accumulo.core.util.RowRangeUtil; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.hadoop.io.Text; @@ -53,7 +53,7 @@ import com.google.common.base.Preconditions; import com.google.common.base.Predicate; -public class UpdateTablets extends AbstractRepo { +public class UpdateTablets extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(UpdateTablets.class); private static final long serialVersionUID = 1L; private final SplitInfo splitInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java index a9406f37eb2..004cd16af7f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/ExportTable.java @@ -22,12 +22,12 @@ import org.apache.accumulo.core.data.TableId; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.fs.Path; -public class ExportTable extends AbstractRepo { +public class ExportTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final ExportInfo tableInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java index 98e6504c1e1..a70ffb32df6 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableExport/WriteExportFiles.java @@ -61,7 +61,7 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily; import org.apache.accumulo.core.security.Authorizations; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.AccumuloDataVersion; @@ -71,7 +71,7 @@ import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.Path; -class WriteExportFiles extends AbstractRepo { +class WriteExportFiles extends AbstractFateOperation { private static final long serialVersionUID = 1L; private final ExportInfo tableInfo; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java index 04a7d0affec..97b176396c7 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/CreateImportDir.java @@ -25,7 +25,7 @@ import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.tablets.UniqueNameAllocator; @@ -33,7 +33,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class CreateImportDir extends AbstractRepo { +class CreateImportDir extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(CreateImportDir.class); private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java index 44a8293d952..075286cc4b8 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java @@ -26,13 +26,13 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.hadoop.fs.Path; import org.slf4j.LoggerFactory; -class FinishImportTable extends AbstractRepo { +class FinishImportTable extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java index 731da2c338a..4c507c30641 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportPopulateZookeeper.java @@ -28,7 +28,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.server.conf.store.TablePropKey; @@ -37,7 +37,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; -class ImportPopulateZookeeper extends AbstractRepo { +class ImportPopulateZookeeper extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java index c077e43ede0..474e513d73b 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportSetupPermissions.java @@ -22,11 +22,11 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.security.TablePermission; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.slf4j.LoggerFactory; -class ImportSetupPermissions extends AbstractRepo { +class ImportSetupPermissions extends AbstractFateOperation { private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java index d3519ee980c..9608b6fd105 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/ImportTable.java @@ -42,7 +42,7 @@ import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.manager.tableOps.Utils; import org.apache.accumulo.manager.tableOps.tableExport.ExportTable; @@ -57,7 +57,7 @@ /** * Serialization updated for supporting multiple volumes in import table from 1L to 2L. */ -public class ImportTable extends AbstractRepo { +public class ImportTable extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(ImportTable.class); private static final long serialVersionUID = 2L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java index 9a2d6ed641e..0abf91afadc 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MapImportFileNames.java @@ -32,7 +32,7 @@ import org.apache.accumulo.core.fate.Repo; import org.apache.accumulo.core.file.FileOperations; import org.apache.accumulo.core.file.FilePrefix; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.accumulo.server.tablets.UniqueNameAllocator; @@ -41,7 +41,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class MapImportFileNames extends AbstractRepo { +class MapImportFileNames extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(MapImportFileNames.class); private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java index eb9c5e5a9ce..efcf9dd1023 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/MoveExportedFiles.java @@ -33,7 +33,7 @@ import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType; import org.apache.accumulo.core.fate.FateId; import org.apache.accumulo.core.fate.Repo; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.hadoop.fs.FileStatus; @@ -43,7 +43,7 @@ import com.google.common.collect.Sets; -class MoveExportedFiles extends AbstractRepo { +class MoveExportedFiles extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(MoveExportedFiles.class); private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java index baa6bd6a761..15c21acbfd7 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/PopulateMetadataTable.java @@ -52,7 +52,7 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily; import org.apache.accumulo.core.util.FastFormat; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.fs.VolumeManager; import org.apache.accumulo.server.util.MetadataTableUtil; @@ -62,7 +62,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class PopulateMetadataTable extends AbstractRepo { +class PopulateMetadataTable extends AbstractFateOperation { private static final Logger log = LoggerFactory.getLogger(PopulateMetadataTable.class); private static final long serialVersionUID = 1L; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java index cd0e4ebef0b..ff0e82a17f8 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java @@ -29,7 +29,7 @@ import org.apache.accumulo.core.manager.thrift.TabletServerStatus; import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.manager.Manager; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.server.manager.LiveTServerSet.TServerConnection; import org.apache.thrift.transport.TTransportException; @@ -38,7 +38,7 @@ import com.google.common.net.HostAndPort; -public class ShutdownTServer extends AbstractRepo { +public class ShutdownTServer extends AbstractFateOperation { private static final long serialVersionUID = 2L; private static final Logger log = LoggerFactory.getLogger(ShutdownTServer.class); diff --git a/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java b/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java index 62b6c9d80ff..2c84b7f4a5b 100644 --- a/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java +++ b/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompaction_1_IT.java @@ -108,7 +108,7 @@ import org.apache.accumulo.core.spi.compaction.SimpleCompactionDispatcher; import org.apache.accumulo.harness.MiniClusterConfigurationCallback; import org.apache.accumulo.harness.SharedMiniClusterBase; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.FateEnv; import org.apache.accumulo.minicluster.ServerType; import org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl; @@ -363,7 +363,7 @@ public void testCompactionCommitAndDeadDetectionAll() throws Exception { } } - public static class FakeRepo extends AbstractRepo { + public static class FakeFateOperation extends AbstractFateOperation { private static final long serialVersionUID = 1234L; @@ -391,7 +391,7 @@ private FateId createCompactionCommitAndDeadMetadata(AccumuloClient c, // Create a fate transaction for one of the compaction ids that is in the new state, it // should never run. Its purpose is to prevent the dead compaction detector // from deleting the id. - Repo repo = new FakeRepo(); + Repo repo = new FakeFateOperation(); var fateId = seedTransaction(fateStore, Fate.FateOperation.COMMIT_COMPACTION, FateKey.forCompactionCommit(allCids.get(tableId).get(0)), repo, true).orElseThrow(); diff --git a/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java b/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java index 7b33a79f904..1178f2d8ad8 100644 --- a/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java +++ b/test/src/main/java/org/apache/accumulo/test/fate/ManagerRepoIT_SimpleSuite.java @@ -77,7 +77,7 @@ import org.apache.accumulo.harness.SharedMiniClusterBase; import org.apache.accumulo.manager.Manager; import org.apache.accumulo.manager.merge.FindMergeableRangeTask.UnmergeableReason; -import org.apache.accumulo.manager.tableOps.AbstractRepo; +import org.apache.accumulo.manager.tableOps.AbstractFateOperation; import org.apache.accumulo.manager.tableOps.compact.CompactionDriver; import org.apache.accumulo.manager.tableOps.merge.DeleteRows; import org.apache.accumulo.manager.tableOps.merge.MergeInfo; @@ -149,10 +149,10 @@ public void testNoWalsMergeRepos(MergeInfo.Operation operation) throws Exception // condition final MergeInfo mergeInfo = new MergeInfo(tableId, manager.getContext().getNamespaceId(tableId), null, null, operation); - final AbstractRepo repo = + final AbstractFateOperation repo = operation == Operation.MERGE ? new MergeTablets(mergeInfo) : new DeleteRows(mergeInfo); // Also test ReserveTablets isReady() - final AbstractRepo reserve = new ReserveTablets(mergeInfo); + final AbstractFateOperation reserve = new ReserveTablets(mergeInfo); // First, check no errors with the default case assertEquals(0, reserve.isReady(fateId, manager)); @@ -466,7 +466,7 @@ public void testCompactionDriverCleanup(Pair rangeText) throws Except var ctx = manager.getContext(); // Create the CompactionDriver to test with the given range passed into the method - final AbstractRepo repo = new CompactionDriver(ctx.getNamespaceId(tableId), tableId, + final AbstractFateOperation repo = new CompactionDriver(ctx.getNamespaceId(tableId), tableId, !range.isInfiniteStartKey() ? range.getStartKey().getRow().getBytes() : null, !range.isInfiniteStopKey() ? range.getEndKey().getRow().getBytes() : null); From b6905d741a53f0a71e8a758387a0bda5dc9def79 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 30 Sep 2025 21:38:05 +0000 Subject: [PATCH 6/7] code review update --- .../java/org/apache/accumulo/manager/EventCoordinator.java | 2 +- .../accumulo/manager/{Events.java => EventPublisher.java} | 2 +- .../src/main/java/org/apache/accumulo/manager/Manager.java | 2 +- .../java/org/apache/accumulo/manager/tableOps/FateEnv.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename server/manager/src/main/java/org/apache/accumulo/manager/{Events.java => EventPublisher.java} (97%) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java b/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java index 27a60cb425d..5807cbfa40c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/EventCoordinator.java @@ -30,7 +30,7 @@ import com.google.common.base.Preconditions; -public class EventCoordinator implements Events { +public class EventCoordinator implements EventPublisher { private static final Logger log = LoggerFactory.getLogger(EventCoordinator.class); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Events.java b/server/manager/src/main/java/org/apache/accumulo/manager/EventPublisher.java similarity index 97% rename from server/manager/src/main/java/org/apache/accumulo/manager/Events.java rename to server/manager/src/main/java/org/apache/accumulo/manager/EventPublisher.java index f935deddfc6..e94a2abd3b7 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Events.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/EventPublisher.java @@ -24,7 +24,7 @@ import org.apache.accumulo.core.dataImpl.KeyExtent; import org.apache.accumulo.core.metadata.schema.Ample; -public interface Events { +public interface EventPublisher { void event(String msg, Object... args); void event(Ample.DataLevel level, String msg, Object... args); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index 6dd594fa436..0dfd0f14980 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -1526,7 +1526,7 @@ public EventCoordinator getEventCoordinator() { } @Override - public Events getEvents() { + public EventPublisher getEvents() { return nextEvent; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java index da459048eda..f80d2350474 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java @@ -26,7 +26,7 @@ import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.core.metadata.schema.ExternalCompactionId; import org.apache.accumulo.core.util.time.SteadyTime; -import org.apache.accumulo.manager.Events; +import org.apache.accumulo.manager.EventPublisher; import org.apache.accumulo.manager.split.Splitter; import org.apache.accumulo.server.ServerContext; import org.apache.accumulo.server.fs.VolumeManager; @@ -35,7 +35,7 @@ public interface FateEnv { ServerContext getContext(); - Events getEvents(); + EventPublisher getEvents(); void recordCompactionCompletion(ExternalCompactionId ecid); From d38f060d1659afde60a8c8de3cb9f1f6c0916e5c Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 30 Sep 2025 21:42:29 +0000 Subject: [PATCH 7/7] rename method --- .../src/main/java/org/apache/accumulo/manager/Manager.java | 2 +- .../compaction/coordinator/commit/CommitCompaction.java | 2 +- .../apache/accumulo/manager/tableOps/ChangeTableState.java | 2 +- .../java/org/apache/accumulo/manager/tableOps/FateEnv.java | 2 +- .../apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java | 2 +- .../accumulo/manager/tableOps/clone/FinishCloneTable.java | 2 +- .../accumulo/manager/tableOps/compact/CompactionDriver.java | 3 ++- .../accumulo/manager/tableOps/create/FinishCreateTable.java | 3 ++- .../apache/accumulo/manager/tableOps/delete/DeleteTable.java | 2 +- .../accumulo/manager/tableOps/merge/FinishTableRangeOp.java | 2 +- .../accumulo/manager/tableOps/merge/ReserveTablets.java | 4 ++-- .../tableOps/namespace/create/FinishCreateNamespace.java | 2 +- .../manager/tableOps/namespace/delete/DeleteNamespace.java | 2 +- .../accumulo/manager/tableOps/split/DeleteOperationIds.java | 2 +- .../org/apache/accumulo/manager/tableOps/split/PreSplit.java | 2 +- .../manager/tableOps/tableImport/FinishImportTable.java | 2 +- 16 files changed, 19 insertions(+), 17 deletions(-) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index 0dfd0f14980..894e5ead947 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -1526,7 +1526,7 @@ public EventCoordinator getEventCoordinator() { } @Override - public EventPublisher getEvents() { + public EventPublisher getEventPublisher() { return nextEvent; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java index f16e9b9c085..bf54f9b836f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java @@ -88,7 +88,7 @@ public Repo call(FateId fateId, FateEnv env) throws Exception { // This will causes the tablet to be reexamined to see if it needs any more compactions. var extent = KeyExtent.fromThrift(commitData.textent); - env.getEvents().event(extent, "Compaction completed %s", extent); + env.getEventPublisher().event(extent, "Compaction completed %s", extent); return new PutGcCandidates(commitData, loc); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java index 73c5ea9b2d1..406b046d528 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/ChangeTableState.java @@ -70,7 +70,7 @@ public Repo call(FateId fateId, FateEnv env) { Utils.unreserveNamespace(env.getContext(), namespaceId, fateId, LockType.READ); Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE); LoggerFactory.getLogger(ChangeTableState.class).debug("Changed table state {} {}", tableId, ts); - env.getEvents().event(tableId, "Set table state of %s to %s", tableId, ts); + env.getEventPublisher().event(tableId, "Set table state of %s to %s", tableId, ts); return null; } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java index f80d2350474..6b78e503e4c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java @@ -35,7 +35,7 @@ public interface FateEnv { ServerContext getContext(); - EventPublisher getEvents(); + EventPublisher getEventPublisher(); void recordCompactionCompletion(ExternalCompactionId ecid); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java index 9ec88f73920..88238036e38 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java @@ -351,7 +351,7 @@ long finish() { if (condResult.getStatus() == Status.ACCEPTED) { loadingFiles.get(extent).forEach(file -> TabletLogger.bulkImported(extent, file)); // Trigger a check for compaction now that new files were added via bulk load - env.getEvents().event(extent, "Bulk load completed on tablet %s", extent); + env.getEventPublisher().event(extent, "Bulk load completed on tablet %s", extent); } else { seenFailure.set(true); var metadata = condResult.readMetadata(); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java index e5f623a69bc..c74ce14f432 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/clone/FinishCloneTable.java @@ -72,7 +72,7 @@ public Repo call(FateId fateId, FateEnv environment) { LockType.READ); Utils.unreserveTable(environment.getContext(), cloneInfo.getTableId(), fateId, LockType.WRITE); - environment.getEvents().event(cloneInfo.getTableId(), "Cloned table %s from %s", + environment.getEventPublisher().event(cloneInfo.getTableId(), "Cloned table %s from %s", cloneInfo.getTableName(), cloneInfo.getSrcTableId()); LoggerFactory.getLogger(FinishCloneTable.class) diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java index dfb973cd00d..2a75361e938 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java @@ -334,7 +334,8 @@ public int updateAndCheckTablets(FateEnv env, FateId fateId) userCompactionRequested, userCompactionWaiting, opidsSeen, t2 - t1); if (selected > 0) { - env.getEvents().event(new KeyExtent(tableId, maxSelected.endRow(), minSelected.prevEndRow()), + env.getEventPublisher().event( + new KeyExtent(tableId, maxSelected.endRow(), minSelected.prevEndRow()), "%s selected files for compaction for %d tablets", fateId, selected); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java index 1109830b093..f45e3b23a63 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/create/FinishCreateTable.java @@ -67,7 +67,8 @@ public Repo call(FateId fateId, FateEnv env) throws Exception { Utils.unreserveNamespace(env.getContext(), tableInfo.getNamespaceId(), fateId, LockType.READ); Utils.unreserveTable(env.getContext(), tableInfo.getTableId(), fateId, LockType.WRITE); - env.getEvents().event(tableInfo.getTableId(), "Created table %s ", tableInfo.getTableName()); + env.getEventPublisher().event(tableInfo.getTableId(), "Created table %s ", + tableInfo.getTableName()); if (tableInfo.getInitialSplitSize() > 0) { cleanupSplitFiles(env.getContext()); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java index 41f2ff1efa2..dd39f83b043 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/DeleteTable.java @@ -56,7 +56,7 @@ public Repo call(FateId fateId, FateEnv env) { final EnumSet expectedCurrStates = EnumSet.of(TableState.ONLINE, TableState.OFFLINE); env.getTableManager().transitionTableState(tableId, TableState.DELETING, expectedCurrStates); - env.getEvents().event(tableId, "deleting table %s %s", tableId, fateId); + env.getEventPublisher().event(tableId, "deleting table %s %s", tableId, fateId); return new ReserveTablets(tableId, namespaceId); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java index 495863e4a6f..aa5ff0acfef 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/FinishTableRangeOp.java @@ -100,7 +100,7 @@ static void removeOperationIds(Logger log, MergeInfo data, FateId fateId, FateEn log.debug("{} deleted {}/{} opids out of {} tablets", fateId, acceptedCount.get(), submitted, count); - env.getEvents().event(range, "Merge or deleterows completed %s", fateId); + env.getEventPublisher().event(range, "Merge or deleterows completed %s", fateId); Preconditions.checkState(acceptedCount.get() == submitted && rejectedCount.get() == 0, "Failed to delete tablets accepted:%s != %s rejected:%s", acceptedCount.get(), submitted, diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java index b1679cc5d9e..32967a794a3 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/ReserveTablets.java @@ -115,8 +115,8 @@ public long isReady(FateId fateId, FateEnv env) throws Exception { if (locations > 0 && opsAccepted.get() > 0) { // operation ids were set and tablets have locations, so lets send a signal to get them // unassigned - env.getEvents().event(range, "Tablets %d were reserved for merge %s", opsAccepted.get(), - fateId); + env.getEventPublisher().event(range, "Tablets %d were reserved for merge %s", + opsAccepted.get(), fateId); } long sleepTime = Math.min(Math.max(1000, count), maxSleepTime); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java index 52781aedfdb..f29ea05e7bc 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/FinishCreateNamespace.java @@ -46,7 +46,7 @@ public Repo call(FateId fateId, FateEnv env) { Utils.unreserveNamespace(env.getContext(), namespaceInfo.namespaceId, fateId, LockType.WRITE); - env.getEvents().event("Created namespace %s ", namespaceInfo.namespaceName); + env.getEventPublisher().event("Created namespace %s ", namespaceInfo.namespaceName); LoggerFactory.getLogger(FinishCreateNamespace.class) .debug("Created table " + namespaceInfo.namespaceId + " " + namespaceInfo.namespaceName); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java index 3f3d002d9f4..41799908cdf 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/delete/DeleteNamespace.java @@ -45,7 +45,7 @@ public long isReady(FateId fateId, FateEnv environment) throws Exception { @Override public Repo call(FateId fateId, FateEnv environment) { - environment.getEvents().event("deleting namespace %s ", namespaceId); + environment.getEventPublisher().event("deleting namespace %s ", namespaceId); return new NamespaceCleanUp(namespaceId); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java index 8f50b9dc25e..1accc8ad18a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/DeleteOperationIds.java @@ -69,7 +69,7 @@ public Repo call(FateId fateId, FateEnv env) throws Exception { } // Get the tablets hosted ASAP if necessary. - env.getEvents().event(splitInfo.getOriginal(), "Added %d splits to %s", + env.getEventPublisher().event(splitInfo.getOriginal(), "Added %d splits to %s", splitInfo.getSplits().size(), splitInfo.getOriginal()); TabletLogger.split(splitInfo.getOriginal(), splitInfo.getSplits().navigableKeySet()); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java index b1ea52689c5..058fafcc79c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/PreSplit.java @@ -106,7 +106,7 @@ public long isReady(FateId fateId, FateEnv env) throws Exception { } else { // now that the operation id set, generate an event to unload the tablet or recover the // logs - env.getEvents().event(splitInfo.getOriginal(), + env.getEventPublisher().event(splitInfo.getOriginal(), "Set operation id %s on tablet for split", fateId); // the operation id was set, but a location is also set wait for it be unset return 1000; diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java index 075286cc4b8..17a33bacc82 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/tableImport/FinishImportTable.java @@ -67,7 +67,7 @@ public Repo call(FateId fateId, FateEnv env) throws Exception { Utils.unreserveHdfsDirectory(env.getContext(), new Path(dm.exportDir).toString(), fateId); } - env.getEvents().event(tableInfo.tableId, "Imported table %s ", tableInfo.tableName); + env.getEventPublisher().event(tableInfo.tableId, "Imported table %s ", tableInfo.tableName); LoggerFactory.getLogger(FinishImportTable.class) .debug("Imported table " + tableInfo.tableId + " " + tableInfo.tableName);