You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/09/04 13:24:06 UTC

[lucene-solr] branch reference_impl_dev updated (447d954 -> 3d09ebc)

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

markrmiller pushed a change to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


    from 447d954  @733 Complete on send exception.
     new df647405 @734 Close stream in test.
     new 7ee9163  @735 Tweak about, rare UpdateLog leak issue.
     new 07dff79  @736 Use the waitFor method we use and trust more.
     new 3d09ebc  @737 Fix the fix.

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 solr/core/src/java/org/apache/solr/cloud/ZkController.java     |  8 ++++----
 .../src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java |  9 +++++++++
 .../src/java/org/apache/solr/update/DirectUpdateHandler2.java  | 10 +---------
 .../src/java/org/apache/solr/update/SolrCmdDistributor.java    |  2 +-
 solr/core/src/java/org/apache/solr/update/UpdateLog.java       |  5 ++++-
 .../solr/client/solrj/io/stream/StreamDecoratorTest.java       |  3 +++
 solr/test-framework/src/java/org/apache/solr/SolrTestCase.java |  2 +-
 7 files changed, 23 insertions(+), 16 deletions(-)


[lucene-solr] 03/04: @736 Use the waitFor method we use and trust more.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 07dff79f34b826777287d48252cda1ce52929de2
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Fri Sep 4 08:17:19 2020 -0500

    @736 Use the waitFor method we use and trust more.
---
 solr/core/src/java/org/apache/solr/cloud/ZkController.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index 82d1df3..f619f01 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -2191,11 +2191,11 @@ public class ZkController implements Closeable {
       if (cloudDesc.getShardId() == null) {
         throw new SolrException(ErrorCode.SERVER_ERROR, "No shard id for " + cd);
       }
-
+      StringBuilder sb = new StringBuilder(256);
       AtomicReference<String> errorMessage = new AtomicReference<>();
       AtomicReference<DocCollection> collectionState = new AtomicReference<>();
       try {
-        zkStateReader.waitForState(cd.getCollectionName(), WAIT_FOR_STATE, TimeUnit.SECONDS, (c) -> {
+        zkStateReader.waitForState(cd.getCollectionName(), WAIT_FOR_STATE, TimeUnit.SECONDS, (l, c) -> {
           collectionState.set(c);
           if (c == null)
             return false;
@@ -2206,7 +2206,7 @@ public class ZkController implements Closeable {
           }
           Replica replica = slice.getReplica(coreNodeName);
           if (replica == null) {
-            StringBuilder sb = new StringBuilder();
+            sb.setLength(0);
             slice.getReplicas().stream().forEach(replica1 -> sb.append(replica1.getName() + " "));
             errorMessage.set("coreNodeName " + coreNodeName + " does not exist in shard " + cloudDesc.getShardId() +
                 ", ignore the exception if the replica was deleted. Found: " + sb.toString());
@@ -2220,7 +2220,7 @@ public class ZkController implements Closeable {
           error = "coreNodeName " + coreNodeName + " does not exist in shard " + cloudDesc.getShardId() +
               ", ignore the exception if the replica was deleted" ;
 
-        throw new NotInClusterStateException(ErrorCode.SERVER_ERROR, error + "\n" + getZkStateReader().getClusterState().getCollection(cd.getCollectionName()));
+        throw new NotInClusterStateException(ErrorCode.SERVER_ERROR, error + "\n" + collectionState.get());
       }
     }
   }


[lucene-solr] 04/04: @737 Fix the fix.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 3d09ebccc94614e739ef777d853155850db1af66
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Fri Sep 4 08:17:34 2020 -0500

    @737 Fix the fix.
---
 .../src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java   | 9 +++++++++
 solr/test-framework/src/java/org/apache/solr/SolrTestCase.java   | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
index cf99221..6cfecb5 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
@@ -38,6 +38,7 @@ import javax.print.Doc;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Deque;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -178,6 +179,14 @@ public class ZkStateWriter {
             c.getSlicesMap().forEach((sliceId, slice) -> {
               if (finalColl.getSlice(sliceId) != null) {
                 Map<String,Replica> newReplicas = new HashMap<>();
+
+                // start with existing state unless it's a replica that has been removed
+                Collection<Replica> nReplicas = finalC.getSlice(sliceId).getReplicas();
+                for (Replica oReplica : slice.getReplicas()) {
+                  if (nReplicas.contains(oReplica)) {
+                    newReplicas.put(oReplica.getName(), oReplica);
+                  }
+                }
                 
                 finalC.getSlice(sliceId).getReplicas().forEach((replica) -> {
                   newReplicas.put(replica.getName(), replica);
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
index 00c8153..b91e73e 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
@@ -329,7 +329,7 @@ public class SolrTestCase extends LuceneTestCase {
       System.setProperty("solr.cloud.wait-for-updates-with-stale-state-pause", "0");
       System.setProperty("solr.cloud.starting-recovery-delay-milli-seconds", "500");
 
-      System.setProperty("solr.waitForState", "5"); // secs
+      System.setProperty("solr.waitForState", "10"); // secs
 
       System.setProperty("solr.default.collection_op_timeout", "10000");
 


[lucene-solr] 01/04: @734 Close stream in test.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit df6474054119a59304f7986d32b5947f3edbf36e
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Fri Sep 4 07:07:58 2020 -0500

    @734 Close stream in test.
---
 .../org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java    | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java
index 4abfd7b..64dd5af 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java
@@ -2771,6 +2771,9 @@ public class StreamDecoratorTest extends SolrCloudTestCase {
       }
 
       assertEquals(cluster.getJettySolrRunners().size(), workersComplete);
+
+      parallelUpdateStream.close();
+
       //Ensure that destinationCollection actually has the new docs.
       expression = StreamExpressionParser.parse("search(parallelDestinationCollection1, q=*:*, fl=\"id,a_s,a_i,a_f,s_multi,i_multi\", sort=\"a_i asc\")");
       stream = new CloudSolrStream(expression, factory);


[lucene-solr] 02/04: @735 Tweak about, rare UpdateLog leak issue.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 7ee9163fe5c0e37d08c6311f2485cf17a7176abe
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Fri Sep 4 08:16:48 2020 -0500

    @735 Tweak about, rare UpdateLog leak issue.
---
 .../src/java/org/apache/solr/update/DirectUpdateHandler2.java  | 10 +---------
 .../src/java/org/apache/solr/update/SolrCmdDistributor.java    |  2 +-
 solr/core/src/java/org/apache/solr/update/UpdateLog.java       |  5 ++++-
 3 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
index 68262eb..99dabc2 100644
--- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
+++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
@@ -806,19 +806,11 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
   @Override
   public void close() throws IOException {
     log.debug("closing {}", this);
-
     try (ParWork closer = new ParWork(this, true)) {
       closer.collect(commitTracker);
       closer.collect(softCommitTracker);
-
-      closer.collect("superClose", ()->{
-        try {
-          super.close();
-        } catch (IOException e) {
-          log.error("", e);
-        }
-      });
     }
+    super.close();
     numDocsPending.reset();
     ObjectReleaseTracker.release(this);
   }
diff --git a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
index cd23463..4ee36d8 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
@@ -150,7 +150,7 @@ public class SolrCmdDistributor implements Closeable {
       if (cmd.isDeleteById()) {
         uReq.deleteById(cmd.getId(), cmd.getRoute(), cmd.getVersion());
       } else {
-        blockAndDoRetries();
+        solrClient.waitForOutstandingRequests();
 
         uReq.deleteByQuery(cmd.query);
       }
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
index e5c9069..e27732d 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
@@ -443,8 +443,11 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer {
 
       }
       core.getCoreMetricManager().registerMetricProducer(SolrInfoBean.Category.TLOG.toString(), this);
-    } catch (Exception e) {
+    } catch (Throwable e) {
       ParWork.propegateInterrupt(e);
+      if (e instanceof Error) {
+        throw e;
+      }
       ObjectReleaseTracker.release(this);
     }
   }