/** * Processes cache query response. * * @param sndId Sender node id. * @param res Query response. */ @SuppressWarnings("unchecked") private void processQueryResponse(UUID sndId, GridCacheQueryResponse res) { if (log.isDebugEnabled()) log.debug("Received query response: " + res); GridCacheQueryFutureAdapter fut = getQueryFuture(res.requestId()); if (fut != null) if (res.fields()) ((GridCacheDistributedFieldsQueryFuture) fut) .onPage( sndId, res.metadata(), (Collection<Map<String, Object>>) ((Collection) res.data()), res.error(), res.isFinished()); else fut.onPage(sndId, res.data(), res.error(), res.isFinished()); else if (!cancelled.contains(res.requestId())) U.warn( log, "Received response for finished or unknown query [rmtNodeId=" + sndId + ", res=" + res + ']'); }
/** {@inheritDoc} */ @SuppressWarnings("ConstantConditions") @Override protected boolean onFieldsPageReady( boolean loc, GridCacheQueryInfo qryInfo, @Nullable List<GridQueryFieldMetadata> metadata, @Nullable Collection<?> entities, @Nullable Collection<?> data, boolean finished, @Nullable Throwable e) { assert qryInfo != null; if (e != null) { if (loc) { GridCacheLocalFieldsQueryFuture fut = (GridCacheLocalFieldsQueryFuture) qryInfo.localQueryFuture(); fut.onPage(null, null, null, e, true); } else sendQueryResponse( qryInfo.senderId(), new GridCacheQueryResponse(cctx.cacheId(), qryInfo.requestId(), e), qryInfo.query().timeout()); return true; } if (loc) { GridCacheLocalFieldsQueryFuture fut = (GridCacheLocalFieldsQueryFuture) qryInfo.localQueryFuture(); fut.onPage(null, metadata, data, null, finished); } else { GridCacheQueryResponse res = new GridCacheQueryResponse( cctx.cacheId(), qryInfo.requestId(), finished, qryInfo.reducer() == null); res.metadata(metadata); res.data(entities != null ? entities : data); if (!sendQueryResponse(qryInfo.senderId(), res, qryInfo.query().timeout())) return false; } return true; }