jacek-lewandowski commented on code in PR #1488:
URL: https://github.com/apache/cassandra/pull/1488#discussion_r1082208962


##########
src/java/org/apache/cassandra/io/util/PathUtils.java:
##########
@@ -64,14 +64,16 @@
     private static final Set<StandardOpenOption> READ_WRITE_OPTIONS = 
unmodifiableSet(EnumSet.of(READ, WRITE, CREATE));
     private static final FileAttribute<?>[] NO_ATTRIBUTES = new 
FileAttribute[0];
 
+    private static final boolean USE_NIX_RECURSIVE_DELETE = 
CassandraRelevantProperties.USE_NIX_RECURSIVE_DELETE.getBoolean();
+
     private static final Logger logger = 
LoggerFactory.getLogger(PathUtils.class);
     private static final NoSpamLogger nospam1m = 
NoSpamLogger.getLogger(logger, 1, TimeUnit.MINUTES);
 
     private static Consumer<Path> onDeletion = path -> {
         if (StorageService.instance.isDaemonSetupCompleted())
             setDeletionListener(ignore -> {});
-        else
-            logger.info("Deleting file during startup: {}", path);
+        else if (logger.isTraceEnabled())

Review Comment:
   Obviously this is not needed in this case.
   
   However, in general case we should use `if` when:
   ```java
   log.trace("message {}", someHeavyToString());
   ```
   
   if we go with a method like `logIfTrace` we would have to either evaluate 
that `someHeavyToString()` before going to that method regardless trace is 
enable or not (which undermine the existence of `if` at all) or we would have 
to pass a lambda, which is also much heavier than just checking 
`logger.isTraceEnabled`.
   
   I think the rules should be clear there - unless we do explicit string 
concatenation (which enforces calling `toString()` for each element) or we call 
something more than just trivial getters, we should have `if`, otherwise we can 
skip it because it brings nothing.
   
   On the other hand, `Logger` has methods with signatures:
   ```java
   trace(String msg, Object ... paramas);
   trace(String msg, Throwable t);
   ```
   so basically if we want to pass a throwable we cannot make use of passing 
string format parameters as objects without the need to early call their 
`toString()` and actually doing manual string concatenation. 
   
   in particular, there is lack of a method like:
   ```java
   trace(String msg, Throwable t, Object ... params)
   ```
   
   Such a method could be useful in that context.
   



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to