mirror of https://github.com/apache/lucene.git
SOLR-13545: ContentStreamUpdateRequest to close file.
This commit is contained in:
parent
b3e759a658
commit
9137a0b0fe
|
@ -172,9 +172,11 @@ Bug Fixes
|
|||
* SOLR-13333: unleashing terms.ttf from terms.list when distrib=false (Munendra S N via Mikhail Khludnev)
|
||||
|
||||
* SOLR-13490: Fix CollectionStateWatcher/CollectionStatePredicate based APIs in ZkStateReader and
|
||||
CloudSolrClient to be triggered on liveNode changes. Also add Predicate<DocCollection> equivilents
|
||||
CloudSolrClient to be triggered on liveNode changes. Also add Predicate<DocCollection> equivalents
|
||||
for callers that don't care about liveNodes. (hossman)
|
||||
|
||||
* SOLR-13545: ContentStreamUpdateRequest refused to close file (Colvin Cowie, Mikhail Khludnev)
|
||||
|
||||
Other Changes
|
||||
----------------------
|
||||
|
||||
|
|
|
@ -61,7 +61,9 @@ public class ContentStreamUpdateRequest extends AbstractUpdateRequest {
|
|||
return new RequestWriter.ContentWriter() {
|
||||
@Override
|
||||
public void write(OutputStream os) throws IOException {
|
||||
IOUtils.copy(stream.getStream(), os);
|
||||
try(var inStream = stream.getStream()) {
|
||||
IOUtils.copy(inStream, os);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,11 +17,17 @@
|
|||
package org.apache.solr.client.solrj;
|
||||
|
||||
|
||||
import static org.apache.solr.common.params.UpdateParams.ASSUME_CONTENT_TYPE;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.core.StringContains.containsString;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
@ -31,8 +37,6 @@ import java.util.Locale;
|
|||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import junit.framework.Assert;
|
||||
import org.apache.lucene.util.TestUtil;
|
||||
import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
|
||||
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
|
||||
|
@ -68,17 +72,17 @@ import org.apache.solr.common.params.AnalysisParams;
|
|||
import org.apache.solr.common.params.CommonParams;
|
||||
import org.apache.solr.common.params.FacetParams;
|
||||
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||
import org.apache.solr.common.util.ContentStreamBase;
|
||||
import org.apache.solr.common.util.NamedList;
|
||||
import org.apache.solr.common.util.Pair;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.noggit.JSONParser;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static org.apache.solr.common.params.UpdateParams.ASSUME_CONTENT_TYPE;
|
||||
import static org.hamcrest.core.StringContains.containsString;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
/**
|
||||
* This should include tests against the example solr config
|
||||
|
@ -710,13 +714,45 @@ abstract public class SolrExampleTests extends SolrExampleTestsBase
|
|||
Assert.assertEquals(0, rsp.getResults().getNumFound());
|
||||
|
||||
ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update");
|
||||
up.addFile(getFile("solrj/books.csv"), "application/csv");
|
||||
var file = getFile("solrj/books.csv");
|
||||
final int opened[] = new int[] {0};
|
||||
final int closed[] = new int[] {0};
|
||||
|
||||
var assertClosed = random().nextBoolean();
|
||||
if (assertClosed) {
|
||||
var allBytes = Files.readAllBytes(file.toPath());
|
||||
|
||||
var contentStreamMock = new ContentStreamBase.ByteArrayStream(allBytes, "solrj/books.csv", "application/csv") {
|
||||
@Override
|
||||
public InputStream getStream() throws IOException {
|
||||
opened [0]++;
|
||||
return new ByteArrayInputStream( allBytes ) {
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
super.close();
|
||||
closed[0]++;
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
up.addContentStream(contentStreamMock);
|
||||
} else {
|
||||
up.addFile(file, "application/csv");
|
||||
}
|
||||
|
||||
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
|
||||
NamedList<Object> result = client.request(up);
|
||||
assertNotNull("Couldn't upload books.csv", result);
|
||||
|
||||
if (assertClosed) {
|
||||
assertEquals("open only once",1, opened[0]);
|
||||
assertEquals("close exactly once",1, closed[0]);
|
||||
}
|
||||
rsp = client.query( new SolrQuery( "*:*") );
|
||||
Assert.assertEquals( 10, rsp.getResults().getNumFound() );
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testStreamingRequest() throws Exception {
|
||||
SolrClient client = getSolrClient();
|
||||
|
|
Loading…
Reference in New Issue