This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new 60607f5521 Added option to print Fate tx details in fate list cmd
(#6382)
60607f5521 is described below
commit 60607f5521b433ea5ef3f6d9ceafc9f617917f5b
Author: Dave Marion <[email protected]>
AuthorDate: Fri May 29 08:35:30 2026 -0400
Added option to print Fate tx details in fate list cmd (#6382)
This change adds an option to the `fate --list` command to print
transaction details to give more context about which objects are
being modified in the fate command. The addition of the `--info`
option will include an additional line in the output for each
fate transaction that includes the detail information.
Related to #6017
---
.../org/apache/accumulo/core/fate/AdminUtil.java | 40 +++++++++++++++-------
.../apache/accumulo/core/fate/ReadOnlyRepo.java | 8 +++++
.../org/apache/accumulo/core/fate/TraceRepo.java | 6 ++++
.../accumulo/server/util/adminCommand/Fate.java | 8 +++--
.../util/checkCommand/TableLocksCheckRunner.java | 2 +-
server/manager/pom.xml | 4 +++
.../coordinator/commit/CommitCompaction.java | 12 +++++++
.../coordinator/commit/CompactionCommitData.java | 32 +++++++++++++++++
.../coordinator/commit/PutGcCandidates.java | 14 ++++++++
.../coordinator/commit/RefreshTablet.java | 12 +++++++
.../coordinator/commit/RenameCompactionFile.java | 8 +++++
.../manager/tableOps/ChangeTableState.java | 14 ++++++++
.../manager/tableOps/availability/LockTable.java | 15 ++++++++
.../availability/SetTabletAvailability.java | 14 ++++++++
.../bulkVer2/AbstractBulkFateOperation.java | 8 +++++
.../manager/tableOps/bulkVer2/BulkInfo.java | 31 +++++++++++++++++
.../manager/tableOps/clone/CloneMetadata.java | 6 ++++
.../manager/tableOps/clone/ClonePermissions.java | 7 ++++
.../manager/tableOps/clone/CloneTable.java | 6 ++++
.../manager/tableOps/clone/CloneZookeeper.java | 6 ++++
.../manager/tableOps/clone/FinishCloneTable.java | 6 ++++
.../accumulo/manager/tableOps/compact/CleanUp.java | 14 ++++++++
.../manager/tableOps/compact/CompactRange.java | 11 ++++++
.../manager/tableOps/compact/CompactionDriver.java | 11 ++++++
.../manager/tableOps/compact/RefreshTablets.java | 15 ++++++++
.../tableOps/compact/cancel/CancelCompactions.java | 11 ++++++
.../compact/cancel/FinishCancelCompaction.java | 12 +++++++
.../manager/tableOps/create/ChooseDir.java | 5 +++
.../manager/tableOps/create/CreateTable.java | 5 +++
.../manager/tableOps/create/FinishCreateTable.java | 6 ++++
.../manager/tableOps/create/PopulateMetadata.java | 7 ++++
.../manager/tableOps/create/PopulateZookeeper.java | 6 ++++
.../manager/tableOps/create/SetupPermissions.java | 6 ++++
.../accumulo/manager/tableOps/delete/CleanUp.java | 11 ++++++
.../manager/tableOps/delete/DeleteTable.java | 12 +++++++
.../manager/tableOps/delete/PreDeleteTable.java | 11 ++++++
.../manager/tableOps/delete/ReserveTablets.java | 11 ++++++
.../manager/tableOps/merge/CountFiles.java | 6 ++++
.../manager/tableOps/merge/DeleteRows.java | 6 ++++
.../manager/tableOps/merge/DeleteTablets.java | 13 +++++++
.../manager/tableOps/merge/FinishTableRangeOp.java | 5 +++
.../accumulo/manager/tableOps/merge/MergeInfo.java | 27 +++++++++++++++
.../manager/tableOps/merge/MergeTablets.java | 6 ++++
.../manager/tableOps/merge/ReserveTablets.java | 6 ++++
.../manager/tableOps/merge/TableRangeOp.java | 6 ++++
.../manager/tableOps/merge/UnreserveAndError.java | 14 ++++++++
.../tableOps/merge/UnreserveSystemMerge.java | 15 ++++++++
.../manager/tableOps/merge/VerifyMergeability.java | 5 +++
.../tableOps/namespace/create/CreateNamespace.java | 5 +++
.../namespace/create/FinishCreateNamespace.java | 6 ++++
.../create/PopulateZookeeperWithNamespace.java | 6 ++++
.../create/SetupNamespacePermissions.java | 7 ++++
.../tableOps/namespace/delete/DeleteNamespace.java | 10 ++++++
.../namespace/delete/NamespaceCleanUp.java | 10 ++++++
.../tableOps/namespace/rename/RenameNamespace.java | 12 +++++++
.../manager/tableOps/rename/RenameTable.java | 13 +++++++
.../split/AllocateDirsAndEnsureOnline.java | 7 ++++
.../manager/tableOps/split/DeleteOperationIds.java | 7 ++++
.../manager/tableOps/split/FindSplits.java | 5 +++
.../accumulo/manager/tableOps/split/PreSplit.java | 6 ++++
.../accumulo/manager/tableOps/split/SplitInfo.java | 31 ++++++++++++++++-
.../manager/tableOps/split/UpdateTablets.java | 16 +++++++++
.../manager/tableOps/tableExport/ExportTable.java | 6 ++++
.../tableOps/tableExport/WriteExportFiles.java | 6 ++++
.../tableOps/tableImport/CreateImportDir.java | 7 ++++
.../tableOps/tableImport/FinishImportTable.java | 5 +++
.../tableImport/ImportPopulateZookeeper.java | 7 ++++
.../tableImport/ImportSetupPermissions.java | 7 ++++
.../manager/tableOps/tableImport/ImportTable.java | 6 ++++
.../tableOps/tableImport/MapImportFileNames.java | 6 ++++
.../tableOps/tableImport/MoveExportedFiles.java | 7 ++++
.../tableImport/PopulateMetadataTable.java | 6 ++++
.../manager/tserverOps/BeginTserverShutdown.java | 13 +++++++
.../manager/tserverOps/ShutdownTServer.java | 12 +++++++
.../accumulo/monitor/next/InformationFetcher.java | 2 +-
.../org/apache/accumulo/monitor/templates/fate.ftl | 2 +-
.../test/compaction/ExternalCompaction_1_IT.java | 6 ++++
.../test/fate/FateExecutionOrderITBase.java | 5 +++
.../org/apache/accumulo/test/fate/FateITBase.java | 30 ++++++++++++++++
.../accumulo/test/fate/FateOpsCommandsITBase.java | 2 +-
.../accumulo/test/fate/FatePoolsWatcherITBase.java | 5 +++
.../accumulo/test/fate/MultipleStoresITBase.java | 10 ++++++
.../test/functional/FateConcurrencyIT.java | 7 ++--
.../test/functional/FunctionalTestUtils.java | 2 +-
84 files changed, 800 insertions(+), 22 deletions(-)
diff --git a/core/src/main/java/org/apache/accumulo/core/fate/AdminUtil.java
b/core/src/main/java/org/apache/accumulo/core/fate/AdminUtil.java
index df2d72f4d1..d9a9650e5f 100644
--- a/core/src/main/java/org/apache/accumulo/core/fate/AdminUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/fate/AdminUtil.java
@@ -74,10 +74,11 @@ public class AdminUtil<T> {
private final String top;
private final long timeCreated;
private final LockRange lockRange;
+ private final String details;
private TransactionStatus(FateId fateId, FateInstanceType instanceType,
TStatus status,
Fate.FateOperation fateOp, List<String> hlocks, List<String> wlocks,
String top,
- Long timeCreated, LockRange lockRange) {
+ Long timeCreated, LockRange lockRange, String details) {
this.fateId = fateId;
this.instanceType = instanceType;
@@ -88,7 +89,7 @@ public class AdminUtil<T> {
this.top = top;
this.timeCreated = timeCreated;
this.lockRange = lockRange;
-
+ this.details = details;
}
/**
@@ -153,6 +154,13 @@ public class AdminUtil<T> {
public LockRange getLockRange() {
return lockRange;
}
+
+ /**
+ * @return details of transaction, may contain protected information
+ */
+ public String getDetails() {
+ return details;
+ }
}
public static class FateStatus {
@@ -214,7 +222,7 @@ public class AdminUtil<T> {
FateStatus status = getTransactionStatus(readOnlyFateStores, fateIdFilter,
statusFilter,
typesFilter, Collections.<FateId,List<String>>emptyMap(),
- Collections.<FateId,List<String>>emptyMap(), Map.of());
+ Collections.<FateId,List<String>>emptyMap(), Map.of(), false);
return status.getTransactions();
}
@@ -243,7 +251,7 @@ public class AdminUtil<T> {
findLocks(zk, lockPath, heldLocks, waitingLocks, lockRanges);
return getTransactionStatus(Map.of(FateInstanceType.META, readOnlyMFS),
fateIdFilter,
- statusFilter, typesFilter, heldLocks, waitingLocks, lockRanges);
+ statusFilter, typesFilter, heldLocks, waitingLocks, lockRanges, false);
}
public FateStatus getStatus(ReadOnlyFateStore<T> readOnlyUFS, Set<FateId>
fateIdFilter,
@@ -251,12 +259,12 @@ public class AdminUtil<T> {
throws KeeperException, InterruptedException {
return getTransactionStatus(Map.of(FateInstanceType.USER, readOnlyUFS),
fateIdFilter,
- statusFilter, typesFilter, new HashMap<>(), new HashMap<>(), Map.of());
+ statusFilter, typesFilter, new HashMap<>(), new HashMap<>(), Map.of(),
false);
}
public FateStatus getStatus(Map<FateInstanceType,ReadOnlyFateStore<T>>
readOnlyFateStores,
ZooSession zk, ServiceLockPath lockPath, Set<FateId> fateIdFilter,
- EnumSet<TStatus> statusFilter, EnumSet<FateInstanceType> typesFilter)
+ EnumSet<TStatus> statusFilter, EnumSet<FateInstanceType> typesFilter,
boolean includeDetails)
throws KeeperException, InterruptedException {
Map<FateId,List<String>> heldLocks = new HashMap<>();
Map<FateId,List<String>> waitingLocks = new HashMap<>();
@@ -265,7 +273,7 @@ public class AdminUtil<T> {
findLocks(zk, lockPath, heldLocks, waitingLocks, lockRanges);
return getTransactionStatus(readOnlyFateStores, fateIdFilter,
statusFilter, typesFilter,
- heldLocks, waitingLocks, lockRanges);
+ heldLocks, waitingLocks, lockRanges, includeDetails);
}
/**
@@ -363,7 +371,7 @@ public class AdminUtil<T> {
Map<FateInstanceType,ReadOnlyFateStore<T>> readOnlyFateStores,
Set<FateId> fateIdFilter,
EnumSet<TStatus> statusFilter, EnumSet<FateInstanceType> typesFilter,
Map<FateId,List<String>> heldLocks, Map<FateId,List<String>>
waitingLocks,
- Map<FateId,LockRange> lockRanges) {
+ Map<FateId,LockRange> lockRanges, boolean includeDetails) {
final List<TransactionStatus> statuses = new ArrayList<>();
readOnlyFateStores.forEach((type, store) -> {
@@ -388,9 +396,13 @@ public class AdminUtil<T> {
}
String top = null;
+ String details = null;
ReadOnlyRepo<T> repo = txStore.top();
if (repo != null) {
top = repo.getName();
+ if (includeDetails) {
+ details = repo.getDetails();
+ }
}
TStatus status = txStore.getStatus();
@@ -400,7 +412,7 @@ public class AdminUtil<T> {
if (includeByStatus(status, statusFilter) && includeByFateId(fateId,
fateIdFilter)
&& includeByInstanceType(fateId.getType(), typesFilter)) {
statuses.add(new TransactionStatus(fateId, type, status, fateOp,
hlocks, wlocks, top,
- timeCreated, lockRanges.getOrDefault(fateId,
LockRange.infinite())));
+ timeCreated, lockRanges.getOrDefault(fateId,
LockRange.infinite()), details));
}
});
}
@@ -423,10 +435,10 @@ public class AdminUtil<T> {
public void print(Map<FateInstanceType,ReadOnlyFateStore<T>>
readOnlyFateStores, ZooSession zk,
ServiceLockPath tableLocksPath, Formatter fmt, Set<FateId> fateIdFilter,
- EnumSet<TStatus> statusFilter, EnumSet<FateInstanceType> typesFilter)
+ EnumSet<TStatus> statusFilter, EnumSet<FateInstanceType> typesFilter,
boolean includeDetails)
throws KeeperException, InterruptedException {
- FateStatus fateStatus =
- getStatus(readOnlyFateStores, zk, tableLocksPath, fateIdFilter,
statusFilter, typesFilter);
+ FateStatus fateStatus = getStatus(readOnlyFateStores, zk, tableLocksPath,
fateIdFilter,
+ statusFilter, typesFilter, includeDetails);
for (TransactionStatus txStatus : fateStatus.getTransactions()) {
fmt.format(
@@ -434,6 +446,10 @@ public class AdminUtil<T> {
txStatus.getFateOp(), txStatus.getFateId(), txStatus.getStatus(),
txStatus.getHeldLocks(),
txStatus.getWaitingLocks(), txStatus.getTop(),
txStatus.getTimeCreatedFormatted(),
txStatus.getLockRange());
+ if (includeDetails) {
+ fmt.format("\t Transaction details: %s%n",
+ txStatus.getDetails() == null ? "" : txStatus.getDetails());
+ }
}
fmt.format(" %s transactions", fateStatus.getTransactions().size());
}
diff --git a/core/src/main/java/org/apache/accumulo/core/fate/ReadOnlyRepo.java
b/core/src/main/java/org/apache/accumulo/core/fate/ReadOnlyRepo.java
index 79d7b70fd0..5643869a50 100644
--- a/core/src/main/java/org/apache/accumulo/core/fate/ReadOnlyRepo.java
+++ b/core/src/main/java/org/apache/accumulo/core/fate/ReadOnlyRepo.java
@@ -29,4 +29,12 @@ public interface ReadOnlyRepo<T> {
String getName();
+ /**
+ * Returns detailed information about the transaction. This information may
include protected
+ * information and should only be used in server-side tools (not the
Monitor).
+ *
+ * @return json details
+ */
+ String getDetails();
+
}
diff --git a/core/src/main/java/org/apache/accumulo/core/fate/TraceRepo.java
b/core/src/main/java/org/apache/accumulo/core/fate/TraceRepo.java
index f9c709eb23..64693e68b8 100644
--- a/core/src/main/java/org/apache/accumulo/core/fate/TraceRepo.java
+++ b/core/src/main/java/org/apache/accumulo/core/fate/TraceRepo.java
@@ -119,4 +119,10 @@ public class TraceRepo<T> implements Repo<T> {
return repo.getClass() + " " + repo.getName();
}
+
+ @Override
+ public String getDetails() {
+ return repo.getDetails();
+ }
+
}
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
index 588a654dde..a3caf0f975 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
@@ -148,6 +148,10 @@ public class Fate extends
ServerKeywordExecutable<FateOpts> {
@Parameter(names = {"-t", "--type"},
description = "<type>... Print transactions of fate instance type(s)
{USER, META}")
List<String> instanceTypes = new ArrayList<>();
+
+ @Parameter(names = {"-i", "--info"},
+ description = "Includes detailed transaction information when
printing")
+ boolean printDetails;
}
private final CountDownLatch lockAcquiredLatch = new CountDownLatch(1);
@@ -245,7 +249,7 @@ public class Fate extends ServerKeywordExecutable<FateOpts>
{
getCmdLineInstanceTypeFilters(options.instanceTypes);
readOnlyFateStores = createReadOnlyFateStores(context, zk);
admin.print(readOnlyFateStores, zk, zTableLocksPath, new
Formatter(System.out),
- fateIdFilter, statusFilter, typesFilter);
+ fateIdFilter, statusFilter, typesFilter, options.printDetails);
// print line break at the end
System.out.println();
}
@@ -354,7 +358,7 @@ public class Fate extends ServerKeywordExecutable<FateOpts>
{
NamespaceNotFoundException {
var zk = context.getZooSession();
- var transactions = admin.getStatus(fateStores, zk, tableLocksPath, null,
null, null);
+ var transactions = admin.getStatus(fateStores, zk, tableLocksPath, null,
null, null, false);
// build id map - relies on unique ids for tables and namespaces
// used to look up the names of either table or namespace by id.
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/checkCommand/TableLocksCheckRunner.java
b/server/base/src/main/java/org/apache/accumulo/server/util/checkCommand/TableLocksCheckRunner.java
index 72d1a4d4d6..b06d254777 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/checkCommand/TableLocksCheckRunner.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/checkCommand/TableLocksCheckRunner.java
@@ -87,7 +87,7 @@ public class TableLocksCheckRunner implements CheckRunner {
if (locksExist) {
final var fateStatus =
admin.getStatus(Map.of(FateInstanceType.META, mfs,
FateInstanceType.USER, ufs), zk,
- zTableLocksPath, null, null, null);
+ zTableLocksPath, null, null, null, false);
if (!fateStatus.getDanglingHeldLocks().isEmpty()
|| !fateStatus.getDanglingWaitingLocks().isEmpty()) {
status &= false;
diff --git a/server/manager/pom.xml b/server/manager/pom.xml
index b29ad745aa..72913eb111 100644
--- a/server/manager/pom.xml
+++ b/server/manager/pom.xml
@@ -38,6 +38,10 @@
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
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 bf54f9b836..a1eb21efc9 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
@@ -24,6 +24,7 @@ import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.LOCATION;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.OPID;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.SELECTED;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.time.Duration;
import java.util.HashSet;
@@ -55,6 +56,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
public class CommitCompaction extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -280,4 +283,13 @@ public class CommitCompaction extends
AbstractFateOperation {
return true;
}
+
+ @Override
+ public String getDetails() {
+ Gson gson = GSON.get();
+ JsonObject details = gson.toJsonTree(commitData).getAsJsonObject();
+ details.addProperty("NewDataFile", newDatafile);
+ return gson.toJson(details);
+ }
+
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CompactionCommitData.java
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CompactionCommitData.java
index 6a2270f4fc..60f233ac02 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CompactionCommitData.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CompactionCommitData.java
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.compaction.coordinator.commit;
import java.io.Serializable;
+import java.lang.reflect.Type;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
@@ -31,8 +32,39 @@ import
org.apache.accumulo.core.metadata.schema.CompactionMetadata;
import org.apache.accumulo.core.metadata.schema.ExternalCompactionId;
import org.apache.accumulo.core.spi.compaction.CompactionKind;
import org.apache.accumulo.core.tabletserver.thrift.TCompactionStats;
+import
org.apache.accumulo.manager.compaction.coordinator.commit.CompactionCommitData.CompactionCommitDataSerializer;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import com.google.gson.annotations.JsonAdapter;
+
+@JsonAdapter(CompactionCommitDataSerializer.class)
public class CompactionCommitData implements Serializable {
+
+ public static class CompactionCommitDataSerializer
+ implements JsonSerializer<CompactionCommitData> {
+
+ @Override
+ public JsonElement serialize(CompactionCommitData src, Type typeOfSrc,
+ JsonSerializationContext context) {
+ JsonObject obj = new JsonObject();
+ obj.addProperty("kind", src.kind.name());
+ obj.addProperty("ecid", src.ecid);
+ obj.addProperty("extent", src.textent.toString());
+ obj.addProperty("outputTmpPath", src.outputTmpPath);
+ obj.addProperty("entriesRead", src.stats.entriesRead);
+ obj.addProperty("entriesWritten", src.stats.entriesWritten);
+ obj.addProperty("fileSize", src.stats.fileSize);
+ JsonArray arr = new JsonArray();
+ src.inputPaths.forEach(arr::add);
+ obj.add("inputs", arr);
+ return obj;
+ }
+ }
+
private static final long serialVersionUID = 1L;
final CompactionKind kind;
final HashSet<String> inputPaths; // type must be serializable
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 b7c1dc53d6..e764037c8e 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
@@ -18,11 +18,16 @@
*/
package org.apache.accumulo.manager.compaction.coordinator.commit;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.fate.FateId;
import org.apache.accumulo.core.fate.Repo;
import org.apache.accumulo.manager.tableOps.AbstractFateOperation;
import org.apache.accumulo.manager.tableOps.FateEnv;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+
public class PutGcCandidates extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
private final CompactionCommitData commitData;
@@ -47,4 +52,13 @@ public class PutGcCandidates extends AbstractFateOperation {
// refresh as part of this compaction commit as it may run sooner.
return new RefreshTablet(commitData.textent, refreshLocation);
}
+
+ @Override
+ public String getDetails() {
+ Gson gson = GSON.get();
+ JsonObject details = gson.toJsonTree(commitData).getAsJsonObject();
+ details.addProperty("refreshLocation", refreshLocation);
+ return gson.toJson(details);
+ }
+
}
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 c193a3736b..9680ec3e1b 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.compaction.coordinator.commit;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
@@ -33,6 +35,7 @@ import org.apache.accumulo.manager.tableOps.FateEnv;
import org.apache.accumulo.manager.tableOps.bulkVer2.TabletRefresher;
import com.google.common.util.concurrent.MoreExecutors;
+import com.google.gson.JsonObject;
public class RefreshTablet extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -62,4 +65,13 @@ public class RefreshTablet extends AbstractFateOperation {
return null;
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("extent", extent.toString());
+ details.addProperty("TServerInstance", tserverInstance);
+ return GSON.get().toJson(details);
+ }
+
}
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 35846463c5..404196a694 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.compaction.coordinator.commit;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.io.IOException;
import org.apache.accumulo.core.dataImpl.KeyExtent;
@@ -96,4 +98,10 @@ public class RenameCompactionFile extends
AbstractFateOperation {
return new CommitCompaction(commitData,
newDatafile == null ? null : newDatafile.getNormalizedPathStr());
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(commitData);
+ }
+
}
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 406b046d52..850a9ad88c 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.EnumSet;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
@@ -30,6 +32,8 @@ import org.apache.accumulo.core.fate.zookeeper.LockRange;
import org.apache.accumulo.core.manager.state.tables.TableState;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class ChangeTableState extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -79,4 +83,14 @@ public class ChangeTableState extends AbstractFateOperation {
Utils.unreserveNamespace(env.getContext(), namespaceId, fateId,
LockType.READ);
Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE);
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("newState", top.name());
+ return GSON.get().toJson(details);
+ }
+
}
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 7b5abfa3ad..82bdffa58a 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.availability;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.client.admin.TabletAvailability;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.data.NamespaceId;
@@ -37,6 +39,8 @@ import org.apache.hadoop.io.Text;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class LockTable extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
private static final Logger LOG = LoggerFactory.getLogger(LockTable.class);
@@ -110,4 +114,15 @@ public class LockTable extends AbstractFateOperation {
return LockRange.infinite();
}
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("availability", tabletAvailability.name());
+ details.addProperty("tabletRange", tRange.toString());
+ return GSON.get().toJson(details);
+ }
+
}
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 e31923444d..187ea8c6fd 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.availability;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicLong;
@@ -50,6 +51,8 @@ import org.apache.hadoop.io.Text;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class SetTabletAvailability extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -154,4 +157,15 @@ public class SetTabletAvailability extends
AbstractFateOperation {
Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE);
return null;
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("availability", tabletAvailability.name());
+ details.addProperty("tabletRange", tRange.toString());
+ return GSON.get().toJson(details);
+ }
+
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/AbstractBulkFateOperation.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/AbstractBulkFateOperation.java
index a91520ad7d..64aa9a9231 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/AbstractBulkFateOperation.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/AbstractBulkFateOperation.java
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.bulkVer2;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.time.Instant;
import org.apache.accumulo.core.data.TableId;
@@ -56,4 +58,10 @@ public abstract class AbstractBulkFateOperation extends
AbstractFateOperation
public Instant getCreationTime() {
return creation;
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(bulkInfo);
+ }
+
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkInfo.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkInfo.java
index 47bfc4c432..e96198850c 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkInfo.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkInfo.java
@@ -19,13 +19,44 @@
package org.apache.accumulo.manager.tableOps.bulkVer2;
import java.io.Serializable;
+import java.lang.reflect.Type;
import org.apache.accumulo.core.data.TableId;
+import
org.apache.accumulo.manager.tableOps.bulkVer2.BulkInfo.BulkInfoSerializer;
+import org.apache.hadoop.io.Text;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import com.google.gson.annotations.JsonAdapter;
/**
* Package private class to hold all the information used for bulk import2
*/
+@JsonAdapter(BulkInfoSerializer.class)
class BulkInfo implements Serializable {
+
+ public static class BulkInfoSerializer implements JsonSerializer<BulkInfo> {
+
+ @Override
+ public JsonElement serialize(BulkInfo src, Type typeOfSrc,
JsonSerializationContext context) {
+ JsonObject obj = new JsonObject();
+ obj.addProperty("tableId", src.tableId.canonical());
+ obj.addProperty("sourceDir", src.sourceDir);
+ obj.addProperty("bulkDir", src.bulkDir);
+ obj.addProperty("setTime", src.setTime);
+ if (src.firstSplit != null) {
+ obj.addProperty("firstSplit", new Text(src.firstSplit).toString());
+ }
+ if (src.lastSplit != null) {
+ obj.addProperty("lastSplit", new Text(src.lastSplit).toString());
+ }
+ return obj;
+ }
+
+ }
+
private static final long serialVersionUID = 1L;
TableId tableId;
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 9e0d38f0c6..656b4b99fd 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.clone;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.fate.FateId;
import org.apache.accumulo.core.fate.Repo;
import org.apache.accumulo.manager.tableOps.AbstractFateOperation;
@@ -59,4 +61,8 @@ class CloneMetadata extends AbstractFateOperation {
environment.getServiceLock());
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 c8b80a0b5e..9bcd72d7c3 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.clone;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.client.NamespaceNotFoundException;
import
org.apache.accumulo.core.clientImpl.AcceptableThriftTableOperationException;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
@@ -76,4 +78,9 @@ class ClonePermissions extends AbstractFateOperation {
environment.getContext().getSecurityOperation().deleteTable(environment.getContext().rpcCreds(),
cloneInfo.getTableId(), cloneInfo.getNamespaceId());
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(cloneInfo);
+ }
}
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 5017f32ee9..d112f86049 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.clone;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.Map;
import java.util.Set;
@@ -68,4 +70,8 @@ public class CloneTable extends AbstractFateOperation {
LockType.READ);
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 c92a599d23..dd87c7c21c 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.clone;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.client.NamespaceNotFoundException;
import org.apache.accumulo.core.clientImpl.ClientContext;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
@@ -76,4 +78,8 @@ class CloneZookeeper extends AbstractFateOperation {
environment.getContext().clearTableListCache();
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(cloneInfo);
+ }
}
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 c74ce14f43..65f32f7214 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.clone;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.EnumSet;
import org.apache.accumulo.core.fate.FateId;
@@ -85,4 +87,8 @@ class FinishCloneTable extends AbstractFateOperation {
@Override
public void undo(FateId fateId, FateEnv environment) {}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 d7ce8f7882..7b9a2fe9a5 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
@@ -21,6 +21,7 @@ package org.apache.accumulo.manager.tableOps.compact;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.COMPACTED;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.USER_COMPACTION_REQUESTED;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
@@ -39,9 +40,12 @@ 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.apache.hadoop.io.Text;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class CleanUp extends AbstractFateOperation {
private static final Logger log = LoggerFactory.getLogger(CleanUp.class);
@@ -123,4 +127,14 @@ public class CleanUp extends AbstractFateOperation {
Utils.getReadLock(env.getContext(), namespaceId, fateId,
LockRange.infinite()).unlock();
return null;
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("startRow", startRow == null ? null : new
Text(startRow).toString());
+ details.addProperty("endRow", endRow == null ? null : new
Text(endRow).toString());
+ return GSON.get().toJson(details);
+ }
}
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 e1d88a69cf..a19fb7de8a 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.compact;
import static java.util.Objects.requireNonNull;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.Optional;
@@ -43,6 +44,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
+import com.google.gson.JsonObject;
public class CompactRange extends AbstractFateOperation {
@@ -115,4 +117,13 @@ public class CompactRange extends AbstractFateOperation {
}
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("startRow", startRow == null ? null : new
Text(startRow).toString());
+ details.addProperty("endRow", endRow == null ? null : new
Text(endRow).toString());
+ return GSON.get().toJson(details);
+ }
}
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 2a75361e93..543797dd51 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
@@ -25,6 +25,7 @@ import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.SELECTED;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.USER_COMPACTION_REQUESTED;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.time.Duration;
import java.util.Set;
@@ -68,6 +69,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
+import com.google.gson.JsonObject;
public class CompactionDriver extends AbstractFateOperation {
@@ -419,4 +421,13 @@ public class CompactionDriver extends
AbstractFateOperation {
}
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("startRow", startRow == null ? null : new
Text(startRow).toString());
+ details.addProperty("endRow", endRow == null ? null : new
Text(endRow).toString());
+ return GSON.get().toJson(details);
+ }
}
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 f642e49f64..8ba54647a2 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
@@ -19,6 +19,8 @@
package org.apache.accumulo.manager.tableOps.compact;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.FateId;
@@ -26,6 +28,9 @@ import org.apache.accumulo.core.fate.Repo;
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.hadoop.io.Text;
+
+import com.google.gson.JsonObject;
public class RefreshTablets extends AbstractFateOperation {
@@ -49,4 +54,14 @@ public class RefreshTablets extends AbstractFateOperation {
return new CleanUp(tableId, namespaceId, startRow, endRow);
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("startRow", startRow == null ? null : new
Text(startRow).toString());
+ details.addProperty("endRow", endRow == null ? null : new
Text(endRow).toString());
+ return GSON.get().toJson(details);
+ }
}
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 dd47d24825..4a2230417b 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.compact.cancel;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
@@ -31,6 +33,8 @@ import
org.apache.accumulo.server.compaction.CompactionConfigStorage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class CancelCompactions extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -70,4 +74,11 @@ public class CancelCompactions extends AbstractFateOperation
{
Utils.unreserveNamespace(env.getContext(), namespaceId, fateId,
LockType.READ);
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 3530b1154f..08d8ab273b 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.compact.cancel;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.FateId;
@@ -27,6 +29,8 @@ import
org.apache.accumulo.manager.tableOps.AbstractFateOperation;
import org.apache.accumulo.manager.tableOps.FateEnv;
import org.apache.accumulo.manager.tableOps.Utils;
+import com.google.gson.JsonObject;
+
class FinishCancelCompaction extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
private final TableId tableId;
@@ -48,4 +52,12 @@ class FinishCancelCompaction extends AbstractFateOperation {
public void undo(FateId fateId, FateEnv environment) {
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 19d421ce44..787268983e 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.create;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.io.IOException;
import java.util.Iterator;
@@ -127,4 +128,8 @@ class ChooseDir extends AbstractFateOperation {
}
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 6609c8f7f3..885837e346 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.create;
import static java.util.Objects.requireNonNull;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.io.IOException;
import java.util.HashMap;
@@ -102,4 +103,8 @@ public class CreateTable extends AbstractFateOperation {
}
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 f45e3b23a6..b15f9a18cc 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.create;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.io.IOException;
import java.util.EnumSet;
@@ -97,4 +99,8 @@ class FinishCreateTable extends AbstractFateOperation {
@Override
public void undo(FateId fateId, FateEnv env) {}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 8242b4e944..ebaa78b0a3 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.create;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.AbstractMap.SimpleImmutableEntry;
import java.util.HashMap;
import java.util.Iterator;
@@ -132,4 +134,9 @@ class PopulateMetadata extends AbstractFateOperation {
}
return data;
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 13fdc70e9c..a8dfa90430 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.create;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
import
org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
@@ -78,4 +80,8 @@ class PopulateZookeeper extends AbstractFateOperation {
env.getContext().clearTableListCache();
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 4edc7d6622..e21168786c 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.create;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.fate.FateId;
import org.apache.accumulo.core.fate.Repo;
@@ -66,4 +68,8 @@ class SetupPermissions extends AbstractFateOperation {
tableInfo.getTableId(), tableInfo.getNamespaceId());
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 a2b4ddb40a..8f628948c4 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.delete;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Arrays;
@@ -49,6 +51,8 @@ import org.apache.hadoop.fs.Path;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
class CleanUp extends AbstractFateOperation {
private static final Logger log = LoggerFactory.getLogger(CleanUp.class);
@@ -160,4 +164,11 @@ class CleanUp extends AbstractFateOperation {
// nothing to do
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 dd39f83b04..6eef3cfbc6 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.delete;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.EnumSet;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
@@ -31,6 +33,8 @@ import
org.apache.accumulo.manager.tableOps.AbstractFateOperation;
import org.apache.accumulo.manager.tableOps.FateEnv;
import org.apache.accumulo.manager.tableOps.Utils;
+import com.google.gson.JsonObject;
+
public class DeleteTable extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -65,4 +69,12 @@ public class DeleteTable extends AbstractFateOperation {
Utils.unreserveTable(env.getContext(), tableId, fateId, LockType.WRITE);
Utils.unreserveNamespace(env.getContext(), namespaceId, fateId,
LockType.READ);
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 2b935cb451..7bd38f179c 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.delete;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.data.InstanceId;
@@ -35,6 +37,8 @@ import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.compaction.CompactionConfigStorage;
import org.apache.zookeeper.KeeperException;
+import com.google.gson.JsonObject;
+
public class PreDeleteTable extends AbstractFateOperation {
public static String createDeleteMarkerPath(InstanceId instanceId, TableId
tableId) {
@@ -90,4 +94,11 @@ public class PreDeleteTable extends AbstractFateOperation {
Utils.unreserveNamespace(env.getContext(), namespaceId, fateId,
LockType.READ);
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 5757c622d6..5fb0c03250 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
@@ -21,6 +21,7 @@ package org.apache.accumulo.manager.tableOps.delete;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.LOCATION;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.OPID;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
@@ -37,6 +38,8 @@ import org.apache.accumulo.manager.tableOps.FateEnv;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class ReserveTablets extends AbstractFateOperation {
private static final Logger log =
LoggerFactory.getLogger(ReserveTablets.class);
@@ -120,4 +123,12 @@ public class ReserveTablets extends AbstractFateOperation {
public Repo<FateEnv> call(FateId fateId, FateEnv env) throws Exception {
return new CleanUp(tableId, namespaceId);
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 70ff88b13a..fccc8eb524 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.merge;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.FILES;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import static
org.apache.accumulo.manager.tableOps.merge.MergeInfo.Operation.SYSTEM_MERGE;
import org.apache.accumulo.core.conf.Property;
@@ -88,4 +89,9 @@ public class CountFiles extends AbstractFateOperation {
};
}
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 8b709bab03..33b1d43d26 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
@@ -18,6 +18,7 @@
*/
package org.apache.accumulo.manager.tableOps.merge;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import static
org.apache.accumulo.manager.tableOps.merge.MergeTablets.validateTablet;
import java.util.ArrayList;
@@ -313,4 +314,9 @@ public class DeleteRows extends AbstractFateOperation {
return ranges;
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(data);
+ }
}
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 37af6b75cd..7887b1b656 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.merge;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.Objects;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
@@ -36,6 +38,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
/**
* Delete tablets that were merged into another tablet.
@@ -124,4 +128,13 @@ public class DeleteTablets extends AbstractFateOperation {
return new FinishTableRangeOp(data);
}
+
+ @Override
+ public String getDetails() {
+ Gson gson = GSON.get();
+ JsonObject details = gson.toJsonTree(data).getAsJsonObject();
+ details.addProperty("lastTabletEndRow",
+ lastTabletEndRow == null ? null : new
Text(lastTabletEndRow).toString());
+ return gson.toJson(details);
+ }
}
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 aa5ff0acfe..4aa0c59a32 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
@@ -21,6 +21,7 @@ package org.apache.accumulo.manager.tableOps.merge;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.LOCATION;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.OPID;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
@@ -107,4 +108,8 @@ class FinishTableRangeOp extends AbstractFateOperation {
rejectedCount.get());
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(data);
+ }
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeInfo.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeInfo.java
index 6b84e16e7f..2861974177 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeInfo.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/MergeInfo.java
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.merge;
import java.io.Serializable;
+import java.lang.reflect.Type;
import java.util.Objects;
import
org.apache.accumulo.core.clientImpl.AcceptableThriftTableOperationException;
@@ -30,11 +31,37 @@ import org.apache.accumulo.core.data.PartialKey;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.util.TextUtil;
+import
org.apache.accumulo.manager.tableOps.merge.MergeInfo.MergeInfoSerializer;
import org.apache.hadoop.io.Text;
import com.google.common.base.Preconditions;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import com.google.gson.annotations.JsonAdapter;
+@JsonAdapter(MergeInfoSerializer.class)
public class MergeInfo implements Serializable {
+
+ public static class MergeInfoSerializer implements JsonSerializer<MergeInfo>
{
+
+ @Override
+ public JsonElement serialize(MergeInfo src, Type typeOfSrc,
JsonSerializationContext context) {
+ JsonObject obj = new JsonObject();
+ obj.addProperty("namespaceId", src.namespaceId.canonical());
+ obj.addProperty("tableId", src.tableId.canonical());
+ obj.addProperty("operation", src.op.name());
+ obj.addProperty("startRow", new Text(src.startRow).toString());
+ obj.addProperty("endRow", new Text(src.endRow).toString());
+ if (src.mergeRangeSet) {
+ obj.addProperty("mergeStartRow", new
Text(src.mergeStartRow).toString());
+ obj.addProperty("mergeEndRow", new Text(src.mergeEndRow).toString());
+ }
+ return obj;
+ }
+ }
+
private static final long serialVersionUID = 1L;
public enum Operation {
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 d184b39cb4..de3484c4fa 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
@@ -18,6 +18,7 @@
*/
package org.apache.accumulo.manager.tableOps.merge;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import static
org.apache.accumulo.manager.tableOps.merge.DeleteRows.verifyAccepted;
import java.util.ArrayList;
@@ -296,4 +297,9 @@ public class MergeTablets extends AbstractFateOperation {
fenced = file.hasRange() ? file.getRange().clip(fenced) : fenced;
return StoredTabletFile.of(file.getPath(), fenced);
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(data);
+ }
}
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 32967a794a..d43249af58 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
@@ -23,6 +23,7 @@ import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.LOGS;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.OPID;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
@@ -137,4 +138,9 @@ public class ReserveTablets extends AbstractFateOperation {
case MERGE, DELETE -> new CountFiles(data);
};
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 5be5efbbc8..481b5d245d 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,7 @@
*/
package org.apache.accumulo.manager.tableOps.merge;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import static
org.apache.accumulo.manager.ManagerClientServiceHandler.mustBeOnline;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
@@ -78,4 +79,9 @@ public class TableRangeOp extends AbstractFateOperation {
Utils.unreserveNamespace(env.getContext(), data.namespaceId, fateId,
LockType.READ);
Utils.unreserveTable(env.getContext(), data.tableId, fateId,
LockType.WRITE);
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(data);
+ }
}
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 eb647fef66..47eb8e2647 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.merge;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import
org.apache.accumulo.core.clientImpl.AcceptableThriftTableOperationException;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
@@ -28,6 +30,9 @@ import org.apache.accumulo.manager.tableOps.FateEnv;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+
public class UnreserveAndError extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
private static final Logger log =
LoggerFactory.getLogger(UnreserveAndError.class);
@@ -51,4 +56,13 @@ public class UnreserveAndError extends AbstractFateOperation
{
"Aborted merge because it would produce a tablets with more files than
the configured limit of "
+ maxFiles + ". Observed " + totalFiles + " files in the merge
range.");
}
+
+ @Override
+ public String getDetails() {
+ Gson gson = GSON.get();
+ JsonObject details = gson.toJsonTree(mergeInfo).getAsJsonObject();
+ details.addProperty("totalFiles", totalFiles);
+ details.addProperty("maxFiles", maxFiles);
+ return gson.toJson(details);
+ }
}
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 de28356922..50bca95c26 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.merge;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import
org.apache.accumulo.core.clientImpl.AcceptableThriftTableOperationException;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
@@ -29,6 +31,9 @@ import org.apache.accumulo.manager.tableOps.FateEnv;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+
public class UnreserveSystemMerge extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -75,4 +80,14 @@ public class UnreserveSystemMerge extends
AbstractFateOperation {
};
}
+
+ @Override
+ public String getDetails() {
+ Gson gson = GSON.get();
+ JsonObject details = gson.toJsonTree(mergeInfo).getAsJsonObject();
+ details.addProperty("maxTotalSize", maxTotalSize);
+ details.addProperty("maxFiles", maxFileCount);
+ details.addProperty("reason", reason.name());
+ return gson.toJson(details);
+ }
}
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 5ac281bfaa..d1345c84aa 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
@@ -20,6 +20,7 @@ package org.apache.accumulo.manager.tableOps.merge;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.FILES;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.MERGEABILITY;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.fate.FateId;
@@ -77,4 +78,8 @@ public class VerifyMergeability extends AbstractFateOperation
{
return new MergeTablets(data);
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 b44e2d308c..90a8209afb 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.namespace.create;
import static java.util.Objects.requireNonNull;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.HashMap;
import java.util.Map;
@@ -60,4 +61,8 @@ public class CreateNamespace extends AbstractFateOperation {
// nothing to do, the namespace id was allocated!
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 f29ea05e7b..0836eafb96 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.namespace.create;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.fate.FateId;
import org.apache.accumulo.core.fate.Repo;
import
org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType;
@@ -62,4 +64,8 @@ class FinishCreateNamespace extends AbstractFateOperation {
@Override
public void undo(FateId fateId, FateEnv env) {}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(namespaceInfo);
+ }
}
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 320b65e511..3fd6f50206 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.namespace.create;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.fate.FateId;
import org.apache.accumulo.core.fate.Repo;
@@ -68,4 +70,8 @@ class PopulateZookeeperWithNamespace extends
AbstractFateOperation {
Utils.unreserveNamespace(env.getContext(), namespaceInfo.namespaceId,
fateId, LockType.WRITE);
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(namespaceInfo);
+ }
}
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 d54a858cbf..c0f0c4723c 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.namespace.create;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.fate.FateId;
import org.apache.accumulo.core.fate.Repo;
@@ -57,4 +59,9 @@ class SetupNamespacePermissions extends AbstractFateOperation
{
// error
return new PopulateZookeeperWithNamespace(namespaceInfo);
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(namespaceInfo);
+ }
}
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 41799908cd..1f21805968 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.namespace.delete;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.fate.FateId;
@@ -27,6 +29,8 @@ import
org.apache.accumulo.manager.tableOps.AbstractFateOperation;
import org.apache.accumulo.manager.tableOps.FateEnv;
import org.apache.accumulo.manager.tableOps.Utils;
+import com.google.gson.JsonObject;
+
public class DeleteNamespace extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -54,4 +58,10 @@ public class DeleteNamespace extends AbstractFateOperation {
Utils.unreserveNamespace(environment.getContext(), namespaceId, fateId,
LockType.WRITE);
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 46d1b88853..0bbbab3c49 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.namespace.delete;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.fate.FateId;
@@ -29,6 +31,8 @@ import org.apache.accumulo.manager.tableOps.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
class NamespaceCleanUp extends AbstractFateOperation {
private static final Logger log =
LoggerFactory.getLogger(NamespaceCleanUp.class);
@@ -77,4 +81,10 @@ class NamespaceCleanUp extends AbstractFateOperation {
// nothing to do
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ return GSON.get().toJson(details);
+ }
}
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 f745ca2283..effddf77bc 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.namespace.rename;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.fate.FateId;
@@ -28,6 +30,8 @@ import org.apache.accumulo.manager.tableOps.FateEnv;
import org.apache.accumulo.manager.tableOps.Utils;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class RenameNamespace extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -68,4 +72,12 @@ public class RenameNamespace extends AbstractFateOperation {
Utils.unreserveNamespace(env.getContext(), namespaceId, fateId,
LockType.WRITE);
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("oldName", oldName);
+ details.addProperty("newName", newName);
+ return GSON.get().toJson(details);
+ }
}
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 b80a682dee..1ba4034743 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.rename;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.client.NamespaceNotFoundException;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.data.NamespaceId;
@@ -32,6 +34,8 @@ import org.apache.accumulo.manager.tableOps.FateEnv;
import org.apache.accumulo.manager.tableOps.Utils;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public class RenameTable extends AbstractFateOperation {
private static final long serialVersionUID = 1L;
@@ -85,4 +89,13 @@ public class RenameTable extends AbstractFateOperation {
Utils.unreserveNamespace(env.getContext(), namespaceId, fateId,
LockType.READ);
}
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("namespaceId", namespaceId.canonical());
+ details.addProperty("tableId", tableId.canonical());
+ details.addProperty("oldName", oldTableName);
+ details.addProperty("newName", newTableName);
+ return GSON.get().toJson(details);
+ }
}
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 e6bba8e6e3..cf57134def 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.split;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.ArrayList;
import
org.apache.accumulo.core.clientImpl.AcceptableThriftTableOperationException;
@@ -105,4 +107,9 @@ public class AllocateDirsAndEnsureOnline extends
AbstractFateOperation {
return new UpdateTablets(splitInfo, dirs);
}
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(splitInfo);
+ }
}
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 1accc8ad18..a20909b977 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.split;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.stream.Collectors;
import org.apache.accumulo.core.clientImpl.TableOperationsImpl;
@@ -82,4 +84,9 @@ public class DeleteOperationIds extends AbstractFateOperation
{
public String getReturn() {
return TableOperationsImpl.SPLIT_SUCCESS_MSG;
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 a7036e9a21..2e55d4905c 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
@@ -20,6 +20,7 @@ package org.apache.accumulo.manager.tableOps.split;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.FILES;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.UNSPLITTABLE;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.Optional;
import java.util.SortedSet;
@@ -159,4 +160,8 @@ public class FindSplits extends AbstractFateOperation {
return new PreSplit(extent, splits);
}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(splitInfo);
+ }
}
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 ed6879eaff..c1c82d01c4 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
@@ -22,6 +22,7 @@ import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.LOGS;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.OPID;
import static
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.Map;
import java.util.Objects;
@@ -153,4 +154,9 @@ public class PreSplit extends AbstractFateOperation {
@Override
public void undo(FateId fateId, FateEnv env) throws Exception {}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(splitInfo);
+ }
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/SplitInfo.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/SplitInfo.java
index c13862905c..c2c76238aa 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/SplitInfo.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/split/SplitInfo.java
@@ -21,6 +21,7 @@ package org.apache.accumulo.manager.tableOps.split;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.Serializable;
+import java.lang.reflect.Type;
import java.nio.ByteBuffer;
import java.util.NavigableMap;
import java.util.SortedMap;
@@ -31,11 +32,39 @@ import
org.apache.accumulo.core.clientImpl.TabletMergeabilityUtil;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.util.TextUtil;
+import
org.apache.accumulo.manager.tableOps.split.SplitInfo.SplitInfoSerializer;
import org.apache.hadoop.io.Text;
import com.google.common.base.Preconditions;
-
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import com.google.gson.annotations.JsonAdapter;
+
+@JsonAdapter(SplitInfoSerializer.class)
public class SplitInfo implements Serializable {
+
+ public static class SplitInfoSerializer implements JsonSerializer<SplitInfo>
{
+
+ @Override
+ public JsonElement serialize(SplitInfo src, Type typeOfSrc,
JsonSerializationContext context) {
+ JsonObject obj = new JsonObject();
+ obj.addProperty("tableId", src.tableId.canonical());
+ obj.addProperty("prevEndRow", new Text(src.prevEndRow).toString());
+ obj.addProperty("endRow", new Text(src.endRow).toString());
+ if (src.splits.length > 0) {
+ JsonArray arr = new JsonArray();
+ for (byte[] split : src.splits) {
+ arr.add(new Text(split).toString());
+ }
+ obj.add("splits", arr);
+ }
+ return obj;
+ }
+ }
+
private static final long serialVersionUID = 1L;
private final TableId tableId;
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 f4d2d6df00..81df0f8d50 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.split;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -52,6 +54,9 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
public class UpdateTablets extends AbstractFateOperation {
private static final Logger log =
LoggerFactory.getLogger(UpdateTablets.class);
@@ -360,4 +365,15 @@ public class UpdateTablets extends AbstractFateOperation {
result.getExtent());
}
}
+
+ @Override
+ public String getDetails() {
+ Gson gson = GSON.get();
+ JsonObject details = gson.toJsonTree(splitInfo).getAsJsonObject();
+ JsonArray dirs = new JsonArray(dirNames.size());
+ dirNames.forEach(dirs::add);
+ details.add("dirs", dirs);
+ return gson.toJson(details);
+ }
+
}
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 004cd16af7..4ff76cd04b 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.tableExport;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.FateId;
@@ -70,4 +72,8 @@ public class ExportTable extends AbstractFateOperation {
public static final String DATA_VERSION_PROP = "srcDataVersion";
public static final String EXPORT_VERSION_PROP = "exportVersion";
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 a70ffb32df..d9b89a5dc1 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.tableExport;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
@@ -298,4 +299,9 @@ class WriteExportFiles extends AbstractFateOperation {
osw.flush();
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 97b176396c..ca00130317 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.tableImport;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.io.IOException;
import java.util.Iterator;
import java.util.Set;
@@ -85,4 +87,9 @@ class CreateImportDir extends AbstractFateOperation {
log.info("Using import dir: {}", dm.importDir);
}
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(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 17a33bacc8..9a5d08f87e 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tableOps.tableImport;
import static org.apache.accumulo.core.Constants.IMPORT_MAPPINGS_FILE;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.util.EnumSet;
@@ -83,4 +84,8 @@ class FinishImportTable extends AbstractFateOperation {
@Override
public void undo(FateId fateId, FateEnv env) {}
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 4c507c3064..bb016a559a 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.tableImport;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.io.IOException;
import java.util.Map;
@@ -98,4 +100,9 @@ class ImportPopulateZookeeper extends AbstractFateOperation {
Utils.unreserveTable(env.getContext(), tableInfo.tableId, fateId,
LockType.WRITE);
context.clearTableListCache();
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 474e513d73..70fc382bd9 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.tableImport;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.fate.FateId;
import org.apache.accumulo.core.fate.Repo;
@@ -66,4 +68,9 @@ class ImportSetupPermissions extends AbstractFateOperation {
env.getContext().getSecurityOperation().deleteTable(env.getContext().rpcCreds(),
tableInfo.tableId, tableInfo.namespaceId);
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 c464a0c16a..7986385366 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
@@ -20,6 +20,7 @@ package org.apache.accumulo.manager.tableOps.tableImport;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.function.Predicate.not;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.io.BufferedReader;
import java.io.IOException;
@@ -172,4 +173,9 @@ public class ImportTable extends AbstractFateOperation {
.map(ImportedTableInfo.DirectoryMapping::new)
.collect(Collectors.toCollection(ArrayList::new));
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 0abf91afad..8ae5cfd28d 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
@@ -20,6 +20,7 @@ package org.apache.accumulo.manager.tableOps.tableImport;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.accumulo.core.Constants.IMPORT_MAPPINGS_FILE;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import java.io.BufferedWriter;
import java.io.IOException;
@@ -125,4 +126,9 @@ class MapImportFileNames extends AbstractFateOperation {
env.getVolumeManager().deleteRecursively(new Path(dm.importDir));
}
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 efcf9dd102..34cdcadf53 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
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tableOps.tableImport;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
@@ -116,4 +118,9 @@ class MoveExportedFiles extends AbstractFateOperation {
return new FinishImportTable(tableInfo);
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
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 15c21acbfd..3e82783015 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
@@ -20,6 +20,7 @@ package org.apache.accumulo.manager.tableOps.tableImport;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.accumulo.core.Constants.IMPORT_MAPPINGS_FILE;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import static
org.apache.accumulo.manager.tableOps.tableExport.ExportTable.VERSION_2;
import java.io.BufferedInputStream;
@@ -215,4 +216,9 @@ class PopulateMetadataTable extends AbstractFateOperation {
MetadataTableUtil.deleteTable(tableInfo.tableId, false,
environment.getContext(),
environment.getServiceLock());
}
+
+ @Override
+ public String getDetails() {
+ return GSON.get().toJson(tableInfo);
+ }
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/BeginTserverShutdown.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/BeginTserverShutdown.java
index 358595ebca..3e9f4bb4a7 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/BeginTserverShutdown.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/BeginTserverShutdown.java
@@ -18,6 +18,8 @@
*/
package org.apache.accumulo.manager.tserverOps;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
+
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.data.ResourceGroupId;
import org.apache.accumulo.core.fate.FateId;
@@ -30,6 +32,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.net.HostAndPort;
+import com.google.gson.JsonObject;
public class BeginTserverShutdown extends AbstractFateOperation {
@@ -77,4 +80,14 @@ public class BeginTserverShutdown extends
AbstractFateOperation {
log.trace("{} removed {}", fateId, path);
}
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("resourceGroup", resourceGroup.canonical());
+ details.addProperty("hostAndPort", hostAndPort.toString());
+ details.addProperty("serverSession", serverSession);
+ details.addProperty("force", force);
+ return GSON.get().toJson(details);
+ }
}
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 eb456a8a3c..6858ce5e92 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
@@ -19,6 +19,7 @@
package org.apache.accumulo.manager.tserverOps;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import static
org.apache.accumulo.manager.tserverOps.BeginTserverShutdown.createPath;
import org.apache.accumulo.core.data.ResourceGroupId;
@@ -40,6 +41,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.net.HostAndPort;
+import com.google.gson.JsonObject;
public class ShutdownTServer extends AbstractFateOperation {
@@ -126,4 +128,14 @@ public class ShutdownTServer extends AbstractFateOperation
{
@Override
public void undo(FateId fateId, FateEnv env) {}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("resourceGroup", resourceGroup.canonical());
+ details.addProperty("hostAndPort", hostAndPort.toString());
+ details.addProperty("serverSession", serverSession);
+ details.addProperty("force", force);
+ return GSON.get().toJson(details);
+ }
}
diff --git
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
index 3014993ac0..8d2d7ea34a 100644
---
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
+++
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
@@ -434,7 +434,7 @@ public class InformationFetcher implements
RemovalListener<ServerId,MetricRespon
AdminUtil<Fate> admin = new AdminUtil<>();
var zTableLocksPath = ctx.getServerPaths().createTableLocksPath();
var zk = ctx.getZooSession();
- FateStatus status = admin.getStatus(stores, zk, zTableLocksPath, null,
null, null);
+ FateStatus status = admin.getStatus(stores, zk, zTableLocksPath, null,
null, null, false);
summary.processFateTransactions(status.getTransactions());
} catch (KeeperException | InterruptedException e) {
throw new IllegalStateException(e);
diff --git
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/fate.ftl
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/fate.ftl
index b460c4a947..3041a0fbbc 100644
---
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/fate.ftl
+++
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/fate.ftl
@@ -22,7 +22,7 @@
<div class="col-xs-12">
<table id="fateTable" class="table caption-top table-bordered
table-striped table-condensed">
<caption><span class="table-caption">Fate Transaction
Details</span><br />
- <span class="table-subcaption">The table contains the last known
Fate transaction status.</span><br />
+ <span class="table-subcaption">Use the <strong>accumulo inst
fate</strong> server-side utility with the <strong>-l</strong> and
<strong>-i</strong> options to see detailed information about a
transaction.</span><br />
</caption>
<#include "table_loading.ftl" >
</table>
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 264011fc7e..6cd9c977b1 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
@@ -377,6 +377,12 @@ public class ExternalCompaction_1_IT extends
SharedMiniClusterBase {
public Repo<FateEnv> call(FateId fateId, FateEnv environment) throws
Exception {
return null;
}
+
+ @Override
+ public String getDetails() {
+ return null;
+ }
+
}
private FateId createCompactionCommitAndDeadMetadata(AccumuloClient c,
diff --git
a/test/src/main/java/org/apache/accumulo/test/fate/FateExecutionOrderITBase.java
b/test/src/main/java/org/apache/accumulo/test/fate/FateExecutionOrderITBase.java
index 4bbf06e0a1..375f35ff67 100644
---
a/test/src/main/java/org/apache/accumulo/test/fate/FateExecutionOrderITBase.java
+++
b/test/src/main/java/org/apache/accumulo/test/fate/FateExecutionOrderITBase.java
@@ -141,6 +141,11 @@ public abstract class FateExecutionOrderITBase extends
SharedMiniClusterBase
public String getReturn() {
return "";
}
+
+ @Override
+ public String getDetails() {
+ return null;
+ }
}
public static class SecondOp extends FirstOp {
diff --git a/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java
b/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java
index 1f79505ff2..2535e2cadc 100644
--- a/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java
+++ b/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java
@@ -26,6 +26,7 @@ import static
org.apache.accumulo.core.fate.ReadOnlyFateStore.TStatus.NEW;
import static
org.apache.accumulo.core.fate.ReadOnlyFateStore.TStatus.SUBMITTED;
import static
org.apache.accumulo.core.fate.ReadOnlyFateStore.TStatus.SUCCESSFUL;
import static org.apache.accumulo.core.fate.ReadOnlyFateStore.TStatus.UNKNOWN;
+import static org.apache.accumulo.core.util.LazySingletons.GSON;
import static org.apache.accumulo.test.fate.FateTestUtil.TEST_FATE_OP;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -67,6 +68,8 @@ import org.junit.jupiter.api.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonObject;
+
public abstract class FateITBase extends SharedMiniClusterBase implements
FateTestRunner<TestEnv> {
private static final Logger LOG = LoggerFactory.getLogger(FateITBase.class);
@@ -123,6 +126,13 @@ public abstract class FateITBase extends
SharedMiniClusterBase implements FateTe
public String getReturn() {
return data + "_ret";
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("data", data);
+ return GSON.get().toJson(details);
+ }
}
public static class TestOperationFails implements Repo<TestEnv> {
@@ -184,6 +194,14 @@ public abstract class FateITBase extends
SharedMiniClusterBase implements FateTe
public String getReturn() {
return "none";
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("opName", opName);
+ details.addProperty("opNum", opNum);
+ return GSON.get().toJson(details);
+ }
}
/**
@@ -231,6 +249,13 @@ public abstract class FateITBase extends
SharedMiniClusterBase implements FateTe
public String getReturn() {
return data + "_ret";
}
+
+ @Override
+ public String getDetails() {
+ JsonObject details = new JsonObject();
+ details.addProperty("data", data);
+ return GSON.get().toJson(details);
+ }
}
@Test
@@ -666,6 +691,11 @@ public abstract class FateITBase extends
SharedMiniClusterBase implements FateTe
public String getName() {
return "none";
}
+
+ @Override
+ public String getDetails() {
+ return null;
+ }
}
@Test
diff --git
a/test/src/main/java/org/apache/accumulo/test/fate/FateOpsCommandsITBase.java
b/test/src/main/java/org/apache/accumulo/test/fate/FateOpsCommandsITBase.java
index 15b4798bb0..5fb90e60c8 100644
---
a/test/src/main/java/org/apache/accumulo/test/fate/FateOpsCommandsITBase.java
+++
b/test/src/main/java/org/apache/accumulo/test/fate/FateOpsCommandsITBase.java
@@ -813,7 +813,7 @@ public abstract class FateOpsCommandsITBase extends
SharedMiniClusterBase
AdminUtil.FateStatus status = null;
try {
status = AdminUtil.getTransactionStatus(Map.of(store.type(),
mockedStore), null, null, null,
- new HashMap<>(), new HashMap<>(), Map.of());
+ new HashMap<>(), new HashMap<>(), Map.of(), false);
} catch (Exception e) {
fail("An unexpected error occurred in getTransactionStatus():\n" + e);
}
diff --git
a/test/src/main/java/org/apache/accumulo/test/fate/FatePoolsWatcherITBase.java
b/test/src/main/java/org/apache/accumulo/test/fate/FatePoolsWatcherITBase.java
index c09a1ee737..9141e379f5 100644
---
a/test/src/main/java/org/apache/accumulo/test/fate/FatePoolsWatcherITBase.java
+++
b/test/src/main/java/org/apache/accumulo/test/fate/FatePoolsWatcherITBase.java
@@ -809,6 +809,11 @@ public abstract class FatePoolsWatcherITBase extends
SharedMiniClusterBase
public String getReturn() {
return null;
}
+
+ @Override
+ public String getDetails() {
+ return null;
+ }
}
public static class PoolResizeTestEnv extends FateTestRunner.TestEnv {
diff --git
a/test/src/main/java/org/apache/accumulo/test/fate/MultipleStoresITBase.java
b/test/src/main/java/org/apache/accumulo/test/fate/MultipleStoresITBase.java
index 5a5a773450..cfea22cd6f 100644
--- a/test/src/main/java/org/apache/accumulo/test/fate/MultipleStoresITBase.java
+++ b/test/src/main/java/org/apache/accumulo/test/fate/MultipleStoresITBase.java
@@ -428,6 +428,11 @@ public abstract class MultipleStoresITBase extends
SharedMiniClusterBase {
public String getReturn() {
return null;
}
+
+ @Override
+ public String getDetails() {
+ return null;
+ }
}
public static class SleepingTestEnv extends MultipleStoresTestEnv {
@@ -471,6 +476,11 @@ public abstract class MultipleStoresITBase extends
SharedMiniClusterBase {
public String getReturn() {
return null;
}
+
+ @Override
+ public String getDetails() {
+ return null;
+ }
}
public static class LatchTestEnv extends MultipleStoresTestEnv {
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java
index f051ba8927..d7dff6be44 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java
@@ -264,7 +264,7 @@ public class FateConcurrencyIT extends
AccumuloClusterHarness {
Map<FateInstanceType,ReadOnlyFateStore<String>> readOnlyFateStores =
Map.of(FateInstanceType.META, readOnlyMFS, FateInstanceType.USER,
readOnlyUFS);
- withLocks = admin.getStatus(readOnlyFateStores, zk, lockPath, null,
null, null);
+ withLocks = admin.getStatus(readOnlyFateStores, zk, lockPath, null,
null, null, true);
// call method that does not use locks.
noLocks = admin.getTransactionStatus(readOnlyFateStores, null, null,
null);
@@ -299,7 +299,10 @@ public class FateConcurrencyIT extends
AccumuloClusterHarness {
if (isCompaction(tx)) {
- log.trace("Fate id: {}, status: {}", tx.getFateId(), tx.getStatus());
+ log.info("Fate id: {}, status: {}, details: {}", tx.getFateId(),
tx.getStatus(),
+ tx.getDetails());
+
+ assertNotNull(tx.getDetails());
for (AdminUtil.TransactionStatus tx2 : noLocks) {
if (tx2.getFateId().equals(tx.getFateId())) {
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
b/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
index 0779149edc..e0f3b3ddc4 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
@@ -226,7 +226,7 @@ public class FunctionalTestUtils {
Map<FateInstanceType,ReadOnlyFateStore<String>> readOnlyFateStores =
Map.of(FateInstanceType.META, readOnlyMFS, FateInstanceType.USER,
readOnlyUFS);
var lockPath = context.getServerPaths().createTableLocksPath();
- return admin.getStatus(readOnlyFateStores, zk, lockPath, null, null,
null);
+ return admin.getStatus(readOnlyFateStores, zk, lockPath, null, null,
null, false);
} catch (KeeperException | InterruptedException e) {
throw new RuntimeException(e);
}