in src/java/org/apache/cassandra/tools/NodeTool.java [91:320]
public int execute(String... args)
{
List<Class<? extends NodeToolCmdRunnable>> commands = newArrayList(
AbortBootstrap.class,
AlterTopology.class,
Assassinate.class,
AutoRepairStatus.class,
CassHelp.class,
CIDRFilteringStats.class,
Cleanup.class,
ClearSnapshot.class,
ClientStats.class,
Compact.class,
CompactionHistory.class,
CompactionStats.class,
DataPaths.class,
Decommission.class,
Decommission.Abort.class,
DescribeCluster.class,
DescribeRing.class,
DisableAuditLog.class,
DisableAutoCompaction.class,
DisableBackup.class,
DisableBinary.class,
DisableFullQueryLog.class,
DisableGossip.class,
DisableHandoff.class,
DisableHintsForDC.class,
DisableOldProtocolVersions.class,
Drain.class,
DropCIDRGroup.class,
EnableAuditLog.class,
EnableAutoCompaction.class,
EnableBackup.class,
EnableBinary.class,
EnableFullQueryLog.class,
EnableGossip.class,
EnableHandoff.class,
EnableHintsForDC.class,
EnableOldProtocolVersions.class,
FailureDetectorInfo.class,
Flush.class,
GarbageCollect.class,
GcStats.class,
GetAuditLog.class,
GetAuthCacheConfig.class,
GetAutoRepairConfig.class,
GetBatchlogReplayTrottle.class,
GetCIDRGroupsOfIP.class,
GetColumnIndexSize.class,
GetCompactionThreshold.class,
GetCompactionThroughput.class,
GetConcurrency.class,
GetConcurrentCompactors.class,
GetConcurrentViewBuilders.class,
GetDefaultKeyspaceRF.class,
GetEndpoints.class,
GetFullQueryLog.class,
GetInterDCStreamThroughput.class,
GetLoggingLevels.class,
GetMaxHintWindow.class,
GetSSTables.class,
GetSeeds.class,
GetSnapshotThrottle.class,
GetStreamThroughput.class,
GetTimeout.class,
GetTraceProbability.class,
GossipInfo.class,
Import.class,
Info.class,
InvalidateCIDRPermissionsCache.class,
InvalidateCounterCache.class,
InvalidateCredentialsCache.class,
InvalidateJmxPermissionsCache.class,
ReloadCIDRGroupsCache.class,
InvalidateKeyCache.class,
InvalidateNetworkPermissionsCache.class,
InvalidatePermissionsCache.class,
InvalidateRolesCache.class,
InvalidateRowCache.class,
Join.class,
ListCIDRGroups.class,
ListPendingHints.class,
ListSnapshots.class,
Move.class,
Move.Abort.class,
NetStats.class,
PauseHandoff.class,
ProfileLoad.class,
ProxyHistograms.class,
RangeKeySample.class,
Rebuild.class,
RebuildIndex.class,
RecompressSSTables.class,
Refresh.class,
RefreshSizeEstimates.class,
ReloadLocalSchema.class,
ReloadSeeds.class,
ReloadSslCertificates.class,
ReloadTriggers.class,
RelocateSSTables.class,
RemoveNode.class,
RemoveNode.Abort.class,
Repair.class,
ReplayBatchlog.class,
ResetFullQueryLog.class,
ResetLocalSchema.class,
ResumeHandoff.class,
Ring.class,
Scrub.class,
SetAuthCacheConfig.class,
SetAutoRepairConfig.class,
SetBatchlogReplayThrottle.class,
SetCacheCapacity.class,
SetCacheKeysToSave.class,
SetColumnIndexSize.class,
SetCompactionThreshold.class,
SetCompactionThroughput.class,
SetConcurrency.class,
SetConcurrentCompactors.class,
SetConcurrentViewBuilders.class,
SetDefaultKeyspaceRF.class,
SetHintedHandoffThrottleInKB.class,
SetInterDCStreamThroughput.class,
SetLoggingLevel.class,
SetMaxHintWindow.class,
SetSnapshotThrottle.class,
SetStreamThroughput.class,
SetTimeout.class,
SetTraceProbability.class,
Sjk.class,
Snapshot.class,
SSTableRepairedSet.class,
Status.class,
StatusAutoCompaction.class,
StatusBackup.class,
StatusBinary.class,
StatusGossip.class,
StatusHandoff.class,
Stop.class,
StopDaemon.class,
TableHistograms.class,
TableStats.class,
TopPartitions.class,
TpStats.class,
TruncateHints.class,
UpdateCIDRGroup.class,
UpgradeSSTable.class,
Verify.class,
Version.class,
ViewBuildStatus.class,
ForceCompact.class
);
Cli.CliBuilder<NodeToolCmdRunnable> builder = Cli.builder("nodetool");
builder.withDescription("Manage your Cassandra cluster")
.withDefaultCommand(CassHelp.class)
.withCommands(commands);
// bootstrap commands
builder.withGroup("bootstrap")
.withDescription("Monitor/manage node's bootstrap process")
.withDefaultCommand(CassHelp.class)
.withCommand(BootstrapResume.class);
builder.withGroup("repair_admin")
.withDescription("list and fail incremental repair sessions")
.withDefaultCommand(RepairAdmin.ListCmd.class)
.withCommand(RepairAdmin.ListCmd.class)
.withCommand(RepairAdmin.CancelCmd.class)
.withCommand(RepairAdmin.CleanupDataCmd.class)
.withCommand(RepairAdmin.SummarizePendingCmd.class)
.withCommand(RepairAdmin.SummarizeRepairedCmd.class);
builder.withGroup("cms")
.withDescription("Manage cluster metadata")
.withDefaultCommand(CMSAdmin.DescribeCMS.class)
.withCommand(CMSAdmin.DescribeCMS.class)
.withCommand(CMSAdmin.InitializeCMS.class)
.withCommand(CMSAdmin.ReconfigureCMS.class)
.withCommand(CMSAdmin.Snapshot.class)
.withCommand(CMSAdmin.Unregister.class)
.withCommand(CMSAdmin.AbortInitialization.class)
.withCommand(CMSAdmin.DumpDirectory.class)
.withCommand(CMSAdmin.DumpLog.class)
.withCommand(CMSAdmin.ResumeDropAccordTable.class);
builder.withGroup("consensus_admin")
.withDescription("List and mark ranges as migrating between consensus protocols")
.withDefaultCommand(CassHelp.class)
.withCommand(ConsensusMigrationAdmin.BeginMigration.class)
.withCommands(ConsensusMigrationAdmin.ListCmd.class)
.withCommands(ConsensusMigrationAdmin.FinishMigration.class);
builder.withGroup("accord")
.withDescription("Manage the operation of Accord")
.withDefaultCommand(AccordAdmin.Describe.class)
.withCommand(AccordAdmin.Describe.class)
.withCommand(AccordAdmin.MarkStale.class)
.withCommand(AccordAdmin.MarkRejoining.class);
Cli<NodeToolCmdRunnable> parser = builder.build();
int status = 0;
try
{
NodeToolCmdRunnable parse = parser.parse(args);
printHistory(args);
parse.run(nodeProbeFactory, output);
} catch (IllegalArgumentException |
IllegalStateException |
ParseArgumentsMissingException |
ParseArgumentsUnexpectedException |
ParseOptionConversionException |
ParseOptionMissingException |
ParseOptionMissingValueException |
ParseCommandMissingException |
ParseCommandUnrecognizedException e)
{
badUse(e);
status = 1;
} catch (Throwable throwable)
{
err(Throwables.getRootCause(throwable));
status = 2;
}
return status;
}