You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Amrit Sarkar (JIRA)" <ji...@apache.org> on 2017/08/04 04:47:00 UTC
[jira] [Updated] (SOLR-10734) Multithreaded test/support for
AtomicURP broken
[ https://issues.apache.org/jira/browse/SOLR-10734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Amrit Sarkar updated SOLR-10734:
--------------------------------
Attachment: testMaster_2500
testResults7_10
testResultsMaster_10
SOLR-10734.patch
I ran local beasts on system for master: 10 and 2500 rounds and branch_7x: 100 for the patch uploaded recently in JIRA and it ran successfully. I am attaching the beast results too.
Changes done as explained above:
{code}
// there is no gurantee of all the threads getting executed, even if one passes, concurrency works.
public void testMultipleThreads() throws Exception {
clearIndex();
String[] strings = new String[5];
for (int i=0; i<5; i++) {
strings[i] = generateRandomString();
}
List<Thread> threads = new ArrayList<>(100);
int finalCount = 0; //int_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
public void run() {
AddUpdateCommand cmd = new AddUpdateCommand(new LocalSolrQueryRequest(h.getCore(),
new ModifiableSolrParams()
.add("processor", "atomic")
.add("atomic.cat", "add")
.add("atomic.int_i", "inc")
.add("commit","true")
));
cmd.solrDoc = new SolrInputDocument();
cmd.solrDoc.addField("id", 10); //hardcoded id=2
cmd.solrDoc.addField("cat", strings[index]);
cmd.solrDoc.addField("int_i", index);
try {
factory.getInstance(cmd.getReq(), new SolrQueryResponse(),
new DistributedUpdateProcessor(cmd.getReq(), new SolrQueryResponse(),
new RunUpdateProcessor(cmd.getReq(), null))).processAdd(cmd);
} catch (IOException e) {
}
}
};
threads.add(t);
t.start();
finalCount += index; //int_i
}
for (Thread thread: threads) thread.join();
assertU(commit());
assertQ("Check the total number of docs",
req("q", "id:10"), "//result[@numFound=1]");
StringJoiner queryString = new StringJoiner(" OR ");
for(String string: strings) {
queryString.add(string);
}
assertQ("Check the total number of docs",
req("q", "cat:(" + queryString.toString()+")")
, "//result[@numFound=1]");
assertQ("Check the total number of docs",
req("q", "int_i:[* TO " + finalCount+"]")
, "//result[@numFound=1]");
}
{code}
significant changes:
cat:(A OR B OR C OR D) // proper parenthesized OR seperated query terms
int_i:[* to max_possible_sum] // range query for int_i, practically 0 to max_possible_sum
{code}
StringJoiner queryString = new StringJoiner(" OR ");
for(String string: strings) {
queryString.add(string);
}
assertQ("Check the total number of docs",
req("q", "cat:(" + queryString.toString()+")")
, "//result[@numFound=1]");
assertQ("Check the total number of docs",
req("q", "int_i:[* TO " + finalCount+"]")
, "//result[@numFound=1]");
{code}
the thought process for the above is atleast one of the threads should execute for multiple seeds and multiple test configurations, heavy or light. This is the best I got, please let me know if anything else can be done in this regard. I understand we are approaching 7.0 release and we have this fixed in later version.
> Multithreaded test/support for AtomicURP broken
> -----------------------------------------------
>
> Key: SOLR-10734
> URL: https://issues.apache.org/jira/browse/SOLR-10734
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: Ishan Chattopadhyaya
> Assignee: Noble Paul
> Fix For: master (8.0), 7.1
>
> Attachments: log-snippet, Screen Shot 2017-05-31 at 4.50.23 PM.png, SOLR-10734.patch, SOLR-10734.patch, SOLR-10734.patch, testMaster_2500, testResults7_10, testResultsMaster_10
>
>
> The multithreaded test doesn't actually start the threads, but only invokes the run directly. The join afterwards doesn't do anything, hence.
> {code}
> 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 f3f833d..10b7770 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
> @@ -238,7 +238,7 @@ public class AtomicUpdateProcessorFactoryTest extends SolrTestCaseJ4 {
> }
> }
> };
> - t.run();
> + t.run(); // red flag, shouldn't this be t.start?
> threads.add(t);
> finalCount += index; //int_i
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org