This is an automated email from the ASF dual-hosted git repository.
azexin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new bbf1848ae1a Fix sonar issue: Remove Optional null check in
ResultIterator (#25851)
bbf1848ae1a is described below
commit bbf1848ae1a487b7d2d21e00945bbf3a1e06343a
Author: Hongsheng Zhong <[email protected]>
AuthorDate: Tue May 23 10:23:26 2023 +0800
Fix sonar issue: Remove Optional null check in ResultIterator (#25851)
---
.../AbstractStreamingDataConsistencyCalculateAlgorithm.java | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/AbstractStreamingDataConsistencyCalculateAlgorithm.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/AbstractStreamingDataConsistencyCalculateAlgorithm.java
index 351810a6560..7929b5aea61 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/AbstractStreamingDataConsistencyCalculateAlgorithm.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/AbstractStreamingDataConsistencyCalculateAlgorithm.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.data.pipeline.api.check.consistency.DataConsist
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Optional;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -65,6 +66,8 @@ public abstract class
AbstractStreamingDataConsistencyCalculateAlgorithm extends
@RequiredArgsConstructor
private final class ResultIterator implements
Iterator<DataConsistencyCalculatedResult> {
+ private final AtomicBoolean currentChunkCalculated = new
AtomicBoolean();
+
private final
AtomicReference<Optional<DataConsistencyCalculatedResult>> nextResult = new
AtomicReference<>();
private final DataConsistencyCalculateParameter param;
@@ -78,14 +81,16 @@ public abstract class
AbstractStreamingDataConsistencyCalculateAlgorithm extends
@Override
public DataConsistencyCalculatedResult next() {
calculateIfNecessary();
- Optional<DataConsistencyCalculatedResult> nextCalculatedResult =
this.nextResult.get();
- this.nextResult.set(null);
- return
nextCalculatedResult.orElseThrow(NoSuchElementException::new);
+ Optional<DataConsistencyCalculatedResult> result =
nextResult.get();
+ nextResult.set(null);
+ currentChunkCalculated.set(false);
+ return result.orElseThrow(NoSuchElementException::new);
}
private void calculateIfNecessary() {
- if (null == nextResult.get()) {
+ if (!currentChunkCalculated.get()) {
nextResult.set(calculateChunk(param));
+ currentChunkCalculated.set(true);
}
}
}