since scylla 5.4, the sstables are named with a uuid-based identifier instead of integer-based one. so the java tools inherited from cassandra 3.x branch do not support it, and throw an
UnsupportedOperationException when parsing a sstable name with the integer-based generation. like:
$ sstablemetadata me-3gbp_1glu_4e6g020ns4px173el0-big-Data.db
Exception in thread "main" java.lang.NumberFormatException: For input string: "3gbp_1glu_4e6g020ns4px173el0"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:280)
at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:228)
at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:217)
at org.apache.cassandra.tools.SSTableMetadataViewer.main(SSTableMetadataViewer.java:150)
the user experience is poor when seeing this exception.
after this change, if the sstable's identifier is UUID-based, the tool would print a more user-friendly message in the stderr:
since scylla 5.4, the sstables are named with a uuid-based identifier instead of integer-based one. so the java tools inherited from cassandra 3.x branch do not support it, and throw an
UnsupportedOperationException
when parsing a sstable name with the integer-based generation. like:the user experience is poor when seeing this exception.
after this change, if the sstable's identifier is UUID-based, the tool would print a more user-friendly message in the stderr:
Fixes #360 Signed-off-by: Kefu Chai kefu.chai@scylladb.com