gerlowskija commented on code in PR #3270:
URL: https://github.com/apache/solr/pull/3270#discussion_r2006039167


##########
solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java:
##########
@@ -256,12 +257,15 @@ public RequestWriter.ContentWriter 
getContentWriter(String expectedType) {
   public final T process(SolrClient client, String collection)
       throws SolrServerException, IOException {
     long startNanos = System.nanoTime();
-    T res = createResponse(client);
     var namedList = client.request(this, collection);
-    res.setResponse(namedList);
     long endNanos = System.nanoTime();
-    res.setElapsedTime(TimeUnit.NANOSECONDS.toMillis(endNanos - startNanos));
-    return res;
+    final T typedResponse = createResponse(namedList);
+    // SolrResponse is pre-V2 API
+    if (typedResponse instanceof SolrResponse res) {
+      res.setResponse(namedList); // TODO insist createResponse does this ?
+      res.setElapsedTime(TimeUnit.NANOSECONDS.toMillis(endNanos - startNanos));
+    }

Review Comment:
   There's nothing about v2 that makes "elapsed time" less relevant - that 
makes sense to have for all requests, seemingly.  And I'd bet that there are 
other concerns and methods in a similar position.
   
   Is there any argument to loosening the type bounds, but not entirely, and 
still bounding responses to implement some minimal interface with default 
method implementations for basic functionality like "elapsed time"?



##########
solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java:
##########
@@ -240,9 +241,9 @@ public RequestWriter.ContentWriter getContentWriter(String 
expectedType) {
   /**
    * Create a new SolrResponse to hold the response from the server
    *
-   * @param client the {@link SolrClient} the request will be sent to
+   * @param namedList the {@link SolrClient} the request will be sent to
    */
-  protected abstract T createResponse(SolrClient client);
+  protected abstract T createResponse(NamedList<Object> namedList);

Review Comment:
   At a glance I can't find a single implementation of this method that 
actually uses the provided NamedList?  Am I missing a few exceptions?  I know 
we'd love to cut down on NamedList usage - why include it in the signature at 
all?



##########
solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java:
##########
@@ -53,7 +53,7 @@ public RequestWriter.ContentWriter getContentWriter(String 
expectedType) {
   }
 
   @Override
-  public SolrResponse createResponse(SolrClient client) {
+  public SolrResponse createResponse(NamedList client) {

Review Comment:
   [0] You used `NamedList<Object>` everywhere else in this method sig - was it 
just oversight here?



-- 
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