[ https://issues.apache.org/jira/browse/SOLR-12803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16627474#comment-16627474 ]
Erick Erickson commented on SOLR-12803: --------------------------------------- Nice find! I do question whether adding an if statement is the right thing to do here. It may fix this case, but having a method that takes a collection name then effectively ignores it seems like a broken interface to me. Is there a way to push the check down into add(doc, collection) instead so other code paths wouldn't have this problem? Or perhaps put a quick fix in here and open up a JIRA if pushing the check down into add involves lots of surgery. Mind you I haven't looked at the code so maybe this is totally off base... > ConcurrentUpdateSolrClient doesn't obey "collection" when streaming updates > --------------------------------------------------------------------------- > > Key: SOLR-12803 > URL: https://issues.apache.org/jira/browse/SOLR-12803 > Project: Solr > Issue Type: Test > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrJ > Affects Versions: 7.5 > Reporter: Jason Gerlowski > Priority: Major > > ConcurrentUpdateSolrClient spins up background threads that pull documents > from a queue and feed them into open HTTP connections. Before writing each > UpdateRequest on the connection, CUSC checks that the SolrParams match the > params used when originally opening the connection. But it doesn't check > that the collection is the same. > If a user is using the same ConcurrentUpdateSolrClient to send documents to > multiple collections simultaneously, each of their UpdateRequest might go to > the wrong collection entirely, based on what connections are already open. > The problem can be reproduced with the snippet below. The correct behavior > would be for 500 docs to go to each collection. But instead, on most runs > all 1000 go to collection1. > {code:java} > @Test > public void cusc_test() throws Exception { > try (SolrClient client = new > ConcurrentUpdateSolrClient.Builder("http://localhost:8983/solr").build()) { > for (int i = 0; i < 1000; i++) { > SolrInputDocument doc = new SolrInputDocument(); > doc.setField("id", "value" + i); > if (i%2 == 0) { > client.add("collection1", doc); > } else { > client.add("collection2", doc); > } > } > client.commit("collection1"); > client.commit("collection2"); > } > }{code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org