nikhilkumawat03 commented on code in PR #4228:
URL: https://github.com/apache/cassandra/pull/4228#discussion_r2193402233


##########
src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java:
##########
@@ -600,6 +606,22 @@ public static Map<String, String> 
validateOptions(Map<String, String> options) t
             throw new ConfigurationException(String.format("%s is not a 
parsable int (base10) for %s", size, LEVEL_FANOUT_SIZE_OPTION), ex);
         }
 
+        // Validate max Bytes for a level
+        try
+        {
+            long maxSSTableSizeInBytes = Math.multiplyExact(ssSize, 1024L * 
1024L); // Convert MB to Bytes
+            BigInteger fanoutPower = 
BigInteger.valueOf(fanoutSize).pow(MAX_LEVEL_COUNT);
+            BigInteger maxBytes = 
fanoutPower.multiply(BigInteger.valueOf(maxSSTableSizeInBytes));
+            BigInteger longMaxValue = BigInteger.valueOf(Long.MAX_VALUE);
+            if (maxBytes.compareTo(longMaxValue) > 0)
+                throw new ConfigurationException(String.format("At most %s 
bytes may be in a compaction level; " +
+                        "your maxSSTableSize must be absurdly high to compute 
%s", Long.MAX_VALUE, maxBytes));
+        }
+        catch (ArithmeticException ex)
+        {
+            throw new 
ConfigurationException(String.format("sstable_size_in_mb=%d is too large; 
resulting bytes exceed Long.MAX_VALUE (%d)", ssSize, Long.MAX_VALUE), ex);

Review Comment:
   @Maxwell-Guo I considered merging the three try-catch blocks into one to 
reduce code length, but kept them separate for more specific error messages 
(e.g., distinguishing invalid sstable_size_in_mb vs. fanout_size vs. overflow). 
Happy to merge into a single try-catch if you prefer a more concise 
approach—please let me know!



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org
For additional commands, e-mail: pr-h...@cassandra.apache.org

Reply via email to