[
https://issues.apache.org/jira/browse/SOLR-13545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16869915#comment-16869915
]
ASF subversion and git services commented on SOLR-13545:
--------------------------------------------------------
Commit 2d60b69636a554006b82d90d4c2e7188ea7058e9 in lucene-solr's branch
refs/heads/branch_8x from David Wayne Smiley
[ https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=2d60b69 ]
SOLR-13545: Fix for Java 8 (no var)
> ContentStreamUpdateRequest no longer closes stream
> --------------------------------------------------
>
> Key: SOLR-13545
> URL: https://issues.apache.org/jira/browse/SOLR-13545
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: SolrJ
> Affects Versions: 7.4, 7.5, 7.6, 7.7, 7.7.1, 7.7.2, 8.0, 8.1, 8.1.1
> Environment: Windows - file locking may not cause a visible failure
> on Linux?
> Reporter: Colvin Cowie
> Priority: Major
> Attachments: ContentStreamUpdateRequestBug.java, SOLR-13545.patch,
> SOLR-13545.patch, SOLR-13545.patch
>
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> Since the change made in SOLR-12142 _ContentStreamUpdateRequest_ no longer
> closes the stream that it opens. Therefore if streaming a file, it cannot be
> deleted until the process exits.
>
> {code:java}
> @Override
> public RequestWriter.ContentWriter getContentWriter(String expectedType) {
> if (contentStreams == null || contentStreams.isEmpty() ||
> contentStreams.size() > 1) return null;
> ContentStream stream = contentStreams.get(0);
> return new RequestWriter.ContentWriter() {
> @Override
> public void write(OutputStream os) throws IOException {
> IOUtils.copy(stream.getStream(), os);
> }
> @Override
> public String getContentType() {
> return stream.getContentType();
> }
> };
> }
> {code}
> IOUtils.copy will not close the stream. Adding a close to the write(), is
> enough to "fix" it for the test case I've attached, e.g.
>
> {code:java}
> @Override
> public void write(OutputStream os) throws IOException {
> final InputStream innerStream = stream.getStream();
> try {
> IOUtils.copy(innerStream, os);
> } finally {
> IOUtils.closeQuietly(innerStream);
> }
> }
> {code}
>
> I don't know whether any other streaming classes have similar issues
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]