oleg-vlsk commented on code in PR #11317:
URL: https://github.com/apache/ignite/pull/11317#discussion_r1623822011


##########
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java:
##########
@@ -1499,6 +1502,79 @@ protected GridCloseableIterator scanQueryLocal(final 
GridCacheQueryAdapter qry,
         }
     }
 
+    /**
+     * Process local index query.
+     *
+     * @param qry Query.
+     * @return GridCloseableIterator.
+     */
+    @SuppressWarnings({"unchecked"})
+    public GridCloseableIterator indexQueryLocal(final GridCacheQueryAdapter 
qry) throws IgniteCheckedException {
+        if (!enterBusy())
+            throw new IllegalStateException("Failed to process query request 
(grid is stopping).");
+
+        try {
+            assert qry.type() == INDEX : "Wrong processing of query: " + 
qry.type();
+
+            cctx.checkSecurity(SecurityPermission.CACHE_READ);
+
+            GridDhtCacheAdapter<?, ?> cacheAdapter = cctx.isNear() ? 
cctx.near().dht() : cctx.dht();
+
+            Set<Integer> lostParts = cacheAdapter.topology().lostPartitions();
+
+            Integer part = qry.partition();
+
+            if (!lostParts.isEmpty()) {
+                if (part == null || lostParts.contains(part)) {
+                    throw new CacheException(new 
CacheInvalidStateException("Failed to execute query because cache partition " +
+                        "has been lost [cacheName=" + cctx.name() +
+                        ", part=" + (part == null ? 
lostParts.iterator().next() : part) + ']'));
+                }
+            }
+
+            if (qry.nodes().isEmpty())
+                throw new IgniteException(new ClusterGroupEmptyException());
+
+            if (cctx.deploymentEnabled())
+                cctx.deploy().registerClasses(qry.scanFilter());
+
+            if (log.isDebugEnabled())
+                log.debug("Running local index query: " + qry);
+
+            if (cctx.events().isRecordable(EVT_CACHE_QUERY_EXECUTED)) {
+                cctx.gridEvents().record(new CacheQueryExecutedEvent<>(
+                    cctx.localNode(),
+                    "Index query executed.",
+                    EVT_CACHE_QUERY_EXECUTED,
+                    CacheQueryType.INDEX.name(),
+                    cctx.name(),
+                    qry.queryClassName(),
+                    null,
+                    qry.scanFilter(),
+                    null,
+                    null,
+                    securitySubjectId(cctx),
+                    
cctx.kernalContext().task().resolveTaskName(qry.taskHash())));
+            }
+
+            int[] parts = null;
+
+            if (part != null)
+                parts = new int[] {part};
+
+            IndexQueryResult<K, V> idxQryRes = qryProc.queryIndex(cacheName, 
qry.queryClassName(), qry.idxQryDesc(),
+                qry.scanFilter(), filter(qry, parts, parts != null), 
qry.keepBinary(), qry.taskHash());
+
+            return new IndexQueryIterator(idxQryRes.iter());
+        }
+        catch (Exception e) {
+            throw e;

Review Comment:
   Catch section removed.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to