You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by az...@apache.org on 2023/05/23 02:23:33 UTC

[shardingsphere] branch master updated: Fix sonar issue: Remove Optional null check in ResultIterator (#25851)

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 <zh...@apache.org>
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);
             }
         }
     }