sonatype-lift[bot] commented on code in PR #1691:
URL: https://github.com/apache/solr/pull/1691#discussion_r1251705464


##########
solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java:
##########
@@ -355,17 +377,114 @@ private static String resolveAlias(String fromIndex, 
ZkController zkController)
     }
   }
 
-  private static String findLocalReplicaForFromIndex(ZkController 
zkController, String fromIndex) {
-    String fromReplica = null;
+  private static String findLocalReplicaForFromIndex(
+      ZkController zkController,
+      String fromIndex,
+      SolrCore toCore,
+      String toField,
+      String fromField,
+      SolrParams localParams) {
+    final DocCollection fromCollection = 
zkController.getClusterState().getCollection(fromIndex);
+    final String nodeName = zkController.getNodeName();
+    if (fromCollection.getSlices().size() == 1) {
+      return getLocalSingleShard(zkController, fromIndex);
+    } else { // sharded from
+      final CloudDescriptor toCoreDescriptor = 
toCore.getCoreDescriptor().getCloudDescriptor();
+      final DocCollection toCollection =
+          
zkController.getClusterState().getCollection(toCoreDescriptor.getCollectionName());
+
+      boolean isFromSiteCheckRequired =
+          checkToSideRouter(toCore, toField, localParams, fromCollection, 
toCollection);
+
+      checkShardCount(toCollection, fromCollection);
+      return findCollocatedFromCore(
+          toCore, fromField, fromCollection, nodeName, 
isFromSiteCheckRequired);
+    }
+  }
 
-    String nodeName = zkController.getNodeName();
-    for (Slice slice :
-        
zkController.getClusterState().getCollection(fromIndex).getActiveSlicesArr()) {
-      if (fromReplica != null)
-        throw new SolrException(
-            SolrException.ErrorCode.BAD_REQUEST,
-            "SolrCloud join: To join with a sharded collection, use 
method=crossCollection.");
+  private static String findCollocatedFromCore(
+      SolrCore toCore,
+      String fromField,
+      DocCollection fromCollection,
+      String nodeName,
+      boolean isFromSiteCheckRequired) {
+    final CloudDescriptor toCoreDescriptor = 
toCore.getCoreDescriptor().getCloudDescriptor();
+    String toShardId = toCoreDescriptor.getShardId();
+    final Slice fromShardReplicas = 
fromCollection.getActiveSlicesMap().get(toShardId);
+    for (Replica collocatedFrom :
+        fromShardReplicas.getReplicas(r -> r.getNodeName().equals(nodeName))) {

Review Comment:
   <picture><img alt="7% of developers fix this issue" 
src="https://lift.sonatype.com/api/commentimage/fixrate/7/display.svg";></picture>
   
   <b>*NULLPTR_DEREFERENCE:</b>*  `fromShardReplicas` could be null (last 
assigned on line 413) and is dereferenced.
   
   ---
   
   <details><summary>ℹ️ Expand to see all <b>@sonatype-lift</b> 
commands</summary>
   
   You can reply with the following commands. For example, reply with 
***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this 
PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified 
`file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see 
its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) 
to add LiftBot to another repo.</sub></details>
   
   



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