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]