adoroszlai commented on code in PR #6508:
URL: https://github.com/apache/ozone/pull/6508#discussion_r1567441714
##########
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/CachingSpaceUsageSource.java:
##########
@@ -94,7 +95,16 @@ public void incrementUsedSpace(long usedSpace) {
}
public void decrementUsedSpace(long reclaimedSpace) {
- cachedValue.addAndGet(-1 * reclaimedSpace);
+ long current = cachedValue.get();
+ long newValue = current - reclaimedSpace;
+ if (newValue < 0) {
+ LOG.warn(
+ "Attempted to decrement used space to a negative value. Current: {},
Decrement: {}",
+ current, reclaimedSpace);
+ cachedValue.set(current); // Retain the previous value
+ } else {
+ cachedValue.set(newValue);
+ }
Review Comment:
Please use `updateAndGet` to atomically get and set the value. Otherwise
concurrent writes may update to the wrong value.
--
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]