Skip to content

Commit 1b0512e

Browse files
committed
rework nodetool command to use table builder
1 parent 565db25 commit 1b0512e

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

src/java/org/apache/cassandra/tools/nodetool/TrainCompressionDictionary.java

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626

2727
import org.apache.cassandra.db.compression.ICompressionDictionaryTrainer.TrainingStatus;
2828
import org.apache.cassandra.db.compression.ManualTrainingOptions;
29+
import org.apache.cassandra.io.util.FileUtils;
2930
import org.apache.cassandra.tools.NodeProbe;
31+
import org.apache.cassandra.tools.nodetool.formatter.TableBuilder;
3032
import org.apache.cassandra.utils.Clock;
3133
import picocli.CommandLine.Command;
3234
import picocli.CommandLine.Option;
@@ -43,7 +45,7 @@ public class TrainCompressionDictionary extends AbstractCommand
4345
private String table;
4446

4547
@Option(names = {"-d", "--max-sampling-duration"},
46-
description = "Maximum time to collect samples before training dictionary (default: 600 seconds)")
48+
description = "Maximum time to collect samples before training dictionary, in seconds. (default: 600)")
4749
private int maxSamplingDurationSeconds = 600;
4850

4951
@Option(names = {"-r", "--sampling-rate"},
@@ -173,44 +175,46 @@ private void showTrainingStatus(NodeProbe probe)
173175
}
174176

175177
TrainingStatus status = TrainingStatus.valueOf(statusStr);
178+
176179
switch (status)
177180
{
178181
case NOT_STARTED:
179-
out.printf("Trainer is not running for %s.%s%n", keyspace, table);
180-
break;
181182
case SAMPLING:
182-
out.printf("Trainer is collecting sample data for %s.%s%n", keyspace, table);
183-
showStatistics(probe, out);
184-
break;
185183
case TRAINING:
186-
out.printf("Training is in progress for %s.%s%n", keyspace, table);
187-
showStatistics(probe, out);
188-
break;
189184
case COMPLETED:
190-
out.printf("Training is completed for %s.%s%n", keyspace, table);
185+
showStatistics(probe, out, status);
191186
break;
192187
case FAILED:
193-
err.printf("Training failed for %s.%s%n", keyspace, table);
188+
showStatistics(probe, err, status);
194189
break;
195190
default:
196191
err.printf("Encountered unexpected training status for %s.%s: %s%n", keyspace, table, status);
197192
}
198193
}
199194

200-
private void showStatistics(NodeProbe probe, PrintStream out)
195+
private void showStatistics(NodeProbe probe, PrintStream out, TrainingStatus status)
201196
{
202197
try
203198
{
204-
long sampleCount = probe.getCompressionDictionaryTrainingSampleCount(keyspace, table);
205-
long totalSampleSize = probe.getCompressionDictionaryTrainingTotalSampleSize(keyspace, table);
206-
double sampleSizeMB = totalSampleSize / (1024.0 * 1024.0);
199+
TableBuilder tableBuilder = new TableBuilder();
200+
tableBuilder.add("keyspace", keyspace);
201+
tableBuilder.add("table", table);
202+
tableBuilder.add("status", status.name());
203+
204+
if (status == TrainingStatus.SAMPLING || status == TrainingStatus.TRAINING)
205+
{
206+
long sampleCount = probe.getCompressionDictionaryTrainingSampleCount(keyspace, table);
207+
long totalSampleSize = probe.getCompressionDictionaryTrainingTotalSampleSize(keyspace, table);
208+
209+
tableBuilder.add("samples collected", String.format("%d", sampleCount));
210+
tableBuilder.add("total sample size", FileUtils.stringifyFileSize(totalSampleSize));
211+
}
207212

208-
out.printf(" Samples collected: %d%n", sampleCount);
209-
out.printf(" Total sample size: %.2f MiB%n", sampleSizeMB);
213+
tableBuilder.printTo(out);
210214
}
211215
catch (Exception e)
212216
{
213-
out.printf(" Unable to retrieve training statistics: %s%n", e.getMessage());
217+
out.printf("Unable to retrieve training statistics: %s%n", e.getMessage());
214218
}
215219
}
216220
}

0 commit comments

Comments
 (0)