This is an automated email from the ASF dual-hosted git repository.

hutran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new 4045e68  [GOBBLIN-1188] fix log message for SFDC iterators[]
4045e68 is described below

commit 4045e6853943d1d57ea4813df7a744e7a38d1ae9
Author: Alex Li <[email protected]>
AuthorDate: Wed Jun 10 11:38:53 2020 -0700

    [GOBBLIN-1188] fix log message for SFDC iterators[]
    
    Closes #3036 from arekusuri/GOBBLIN-1188
---
 .../apache/gobblin/salesforce/QueryResultIterator.java | 11 ++++-------
 .../gobblin/salesforce/ResultChainingIterator.java     | 18 +++++++++---------
 2 files changed, 13 insertions(+), 16 deletions(-)

diff --git 
a/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/QueryResultIterator.java
 
b/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/QueryResultIterator.java
index 56c76ea..8ddd934 100644
--- 
a/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/QueryResultIterator.java
+++ 
b/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/QueryResultIterator.java
@@ -65,10 +65,6 @@ public class QueryResultIterator implements 
Iterator<JsonElement> {
     if (queryResultIter == null) {
       initQueryResultIter();
     }
-    if (!queryResultIter.hasNext()) {
-      // no more data, print out total
-      log.info("Rest API query records total:{}", recordCount);
-    }
     return queryResultIter.hasNext();
   }
 
@@ -85,11 +81,12 @@ public class QueryResultIterator implements 
Iterator<JsonElement> {
     if (queryResultIter == null) {
       initQueryResultIter();
     }
+    JsonElement jsonElement = queryResultIter.next();
     recordCount ++;
     if (!queryResultIter.hasNext()) {
-      // no more data, print out total
-      log.info("Rest API query records total:{}", recordCount);
+      // variable `jsonElement` has last record. no more data, print out total
+      log.info("----Rest API query records total:{}----", recordCount);
     }
-    return queryResultIter.next();
+    return jsonElement;
   }
 }
diff --git 
a/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/ResultChainingIterator.java
 
b/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/ResultChainingIterator.java
index bab77e5..cb77a2a 100644
--- 
a/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/ResultChainingIterator.java
+++ 
b/gobblin-salesforce/src/main/java/org/apache/gobblin/salesforce/ResultChainingIterator.java
@@ -19,6 +19,7 @@ package org.apache.gobblin.salesforce;
 
 import com.google.common.collect.Iterators;
 import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
 import com.sforce.async.BulkConnection;
 import java.util.Iterator;
 import java.util.List;
@@ -34,6 +35,7 @@ import lombok.extern.slf4j.Slf4j;
 public class ResultChainingIterator implements Iterator<JsonElement> {
   private Iterator<JsonElement> iter;
   private int recordCount = 0;
+  private int isDeletedRecordCount = 0;
 
   public ResultChainingIterator(BulkConnection conn, List<FileIdVO> 
fileIdList, int retryLimit,
       long retryInterval, long retryExceedQuotaInterval) {
@@ -54,11 +56,6 @@ public class ResultChainingIterator implements 
Iterator<JsonElement> {
 
   @Override
   public boolean hasNext() {
-    if (!iter.hasNext()) {
-      // hasNext is false, means all data in this iterator was fetched
-      // we can print out record total.
-      log.info("====Total records: [{}] ====", recordCount);
-    }
     return iter.hasNext();
   }
 
@@ -66,11 +63,14 @@ public class ResultChainingIterator implements 
Iterator<JsonElement> {
   public JsonElement next() {
     JsonElement jsonElement = iter.next();
     recordCount ++;
+    JsonElement isDeletedElement = 
jsonElement.getAsJsonObject().get("IsDeleted");
+    if (isDeletedElement != null && isDeletedElement.getAsBoolean()) {
+      isDeletedRecordCount ++;
+    }
     if (!iter.hasNext()) {
-      // see hasNext.
-      //In case caller may not check hasNext and use next() == null as end of 
the interator
-      // we can print out total here.
-      log.info("====Total records: [{}] ====", recordCount);
+      // `jsonElement` has last record, print out total and isDeleted=true 
records(soft deleted) total
+      log.info("====Total records: [{}] isDeleted=true records: [{}]====", 
recordCount, isDeletedRecordCount);
+      return null;
     }
     return jsonElement;
   }

Reply via email to