gerlowskija opened a new pull request, #3032:
URL: https://github.com/apache/solr/pull/3032

   https://issues.apache.org/jira/browse/SOLR-17562
   
   # Description
   
   Several v2 APIs return raw files or streams of data, including: 
ZooKeeperReadAPI, NodeFileStore, and CoreReplication.fetchFile.
   
   But the APIs vary slightly in how they support this: ZooKeeperReadAPI uses 
the deprecated "ContentStream" with "RawResponseWriter", NodeFileStore directly 
attaches a "SolrCore.RawWriter" to the underlying SolrQueryResponse, and 
CoreReplication follows the JAX-RS best practice of using the "StreamingOutput" 
interface.
   
   The biggest hurdle to aligning on a single approach is modifying the 
templates used by our SolrJ code generation to handle the new approach (and 
"big stream of data" style responses in general).
   
   # Solution
   
   This PR tackles this by introducing a new SolrResponse implementation, 
`InputStreamResponse`, to wrap the NamedList produced by the existing 
`InputStreamResponseParser`.  (InputStreamResponseParser creates a NamedList 
with two entries, "responseStatus" (an int) and "stream" (an InputStream)).  
The new SolrResponse type is used as the response type by our code-gen template 
for any "raw" responses annotated with a "rawOutput" tag introduced by this PR.
   
   Docs are added in `dev-docs/v2-api-conventions.adoc` to highlight this setup.
   
   NOTE: this PR provides a unified approach for "raw" API responses (e.g. 
index files returned by replication APIs, blobs stored in the filestore, etc.). 
 Callers of these APIs essentially get a glorified InputStream to work with on 
the client side.  The PR doesn't aim to handle other APIs that stream more 
structured data, e.g. the doc-stream returned by `/export`.  We can likely do 
better than a "glorified InputStream" in these cases, but this PR makes no 
attempt to provide that.
   
   # Tests
   
   Additional unit tests in `InputStreamResponseTest`.  Existing tests for the 
ZK and replication APIs continue to pass.
   
   # Checklist
   
   Please review the following and check all that apply:
   
   - [x] I have reviewed the guidelines for [How to 
Contribute](https://github.com/apache/solr/blob/main/CONTRIBUTING.md) and my 
code conforms to the standards described there to the best of my ability.
   - [x] I have created a Jira issue and added the issue ID to my pull request 
title.
   - [x] I have given Solr maintainers 
[access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)
 to contribute to my PR branch. (optional but recommended, not available for 
branches on forks living under an organisation)
   - [x] I have developed this patch against the `main` branch.
   - [ ] I have run `./gradlew check`.
   - [x] I have added tests for my changes.
   - [x] I have added documentation


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to