From edff113e13f2a108d2f4177da3e88cf6f3402b23 Mon Sep 17 00:00:00 2001 From: Noble Paul Date: Thu, 27 Jul 2017 15:27:58 +0930 Subject: [PATCH] SOLR-10734: AtomicUpdateProcessorFactoryTest was not truly multithreaded --- .../processor/AtomicUpdateProcessorFactory.java | 4 ++-- .../processor/AtomicUpdateProcessorFactoryTest.java | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java index 2135fb76c5b..9badb02dfd2 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java +++ b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java @@ -63,7 +63,7 @@ public class AtomicUpdateProcessorFactory extends UpdateRequestProcessorFactory private final static String VERSION = "_version_"; public static final String NAME = "atomic"; public final static String ATOMIC_FIELD_PREFIX = "atomic."; - private final static int MAX_ATTEMPTS = 5; + private final static int MAX_ATTEMPTS = 25; private VersionInfo vinfo; @@ -165,7 +165,7 @@ public class AtomicUpdateProcessorFactory extends UpdateRequestProcessorFactory try { super.processAdd(cmd); } catch (SolrException e) { - if (attempts++ >= MAX_ATTEMPTS) {//maximum number of attempts allowed: 5 + if (attempts++ >= MAX_ATTEMPTS) {//maximum number of attempts allowed: 25 throw new SolrException(SERVER_ERROR, "Atomic update failed after multiple attempts due to " + e.getMessage()); } diff --git a/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java index 45349373f87..999d70b48c7 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java @@ -209,7 +209,10 @@ public class AtomicUpdateProcessorFactoryTest extends SolrTestCaseJ4 { List threads = new ArrayList<>(100); int finalCount = 0; //int_i - for (int i = 0; i < 100; i++) { + AtomicUpdateProcessorFactory factory = new AtomicUpdateProcessorFactory(); + factory.inform(h.getCore()); + + for (int i = 0; i < 10; i++) { int index = random().nextInt(5); Thread t = new Thread() { @Override @@ -229,8 +232,6 @@ public class AtomicUpdateProcessorFactoryTest extends SolrTestCaseJ4 { cmd.solrDoc.addField("int_i", index); try { - AtomicUpdateProcessorFactory factory = new AtomicUpdateProcessorFactory(); - factory.inform(h.getCore()); factory.getInstance(cmd.getReq(), new SolrQueryResponse(), new DistributedUpdateProcessor(cmd.getReq(), new SolrQueryResponse(), new RunUpdateProcessor(cmd.getReq(), null))).processAdd(cmd); @@ -238,14 +239,12 @@ public class AtomicUpdateProcessorFactoryTest extends SolrTestCaseJ4 { } } }; - t.run(); threads.add(t); + t.start(); finalCount += index; //int_i } - for (Thread thread: threads) { - thread.join(); - } + for (Thread thread: threads) thread.join(); assertU(commit());