@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); int size = in.readVInt(); locations = new IntArrayList(size); responses = new ArrayList<>(size); failures = new ArrayList<>(size); for (int i = 0; i < size; i++) { locations.add(in.readVInt()); if (in.readBoolean()) { GetResponse response = new GetResponse(); response.readFrom(in); responses.add(response); } else { responses.add(null); } if (in.readBoolean()) { failures.add(MultiGetResponse.Failure.readFailure(in)); } else { failures.add(null); } } }
@Override public void singleFailure(Failure failure) { log.error("Failure {} retrieving configuration for {} (index={})", failure==null?null:failure.getMessage(), Arrays.toString(events), searchguardIndex); }
MultiGetRequest.Item item = shardRequest.items.get(i); responses.set(shardRequest.locations.get(i), new MultiGetItemResponse(null, new MultiGetResponse.Failure(shardRequest.index(), item.type(), item.id(), e)));
return new MultiGetItemResponse(null, new Failure(index, type, id, exception)); } else { GetResponse getResponse = new GetResponse(getResult);
return new MultiGetItemResponse(null, new Failure(index, type, id, exception)); } else { GetResponse getResponse = new GetResponse(getResult);
logger.error("Get failed: " + response.getFailure().getMessage());
@Override protected MultiGetShardResponse shardOperation(MultiGetShardRequest request, ShardId shardId) { IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex()); IndexShard indexShard = indexService.getShard(shardId.id()); if (request.refresh() && !request.realtime()) { indexShard.refresh("refresh_flag_mget"); } MultiGetShardResponse response = new MultiGetShardResponse(); for (int i = 0; i < request.locations.size(); i++) { MultiGetRequest.Item item = request.items.get(i); try { GetResult getResult = indexShard.getService().get(item.type(), item.id(), item.storedFields(), request.realtime(), item.version(), item.versionType(), item.fetchSourceContext()); response.add(request.locations.get(i), new GetResponse(getResult)); } catch (Exception e) { if (TransportActions.isShardNotAvailableException(e)) { throw (ElasticsearchException) e; } else { logger.debug((Supplier<?>) () -> new ParameterizedMessage("{} failed to execute multi_get for [{}]/[{}]", shardId, item.type(), item.id()), e); response.add(request.locations.get(i), new MultiGetResponse.Failure(request.index(), item.type(), item.id(), e)); } } } return response; } }
@Override protected MultiGetShardResponse shardOperation(MultiGetShardRequest request, ShardId shardId) { IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex()); IndexShard indexShard = indexService.getShard(shardId.id()); if (request.refresh() && !request.realtime()) { indexShard.refresh("refresh_flag_mget"); } MultiGetShardResponse response = new MultiGetShardResponse(); for (int i = 0; i < request.locations.size(); i++) { MultiGetRequest.Item item = request.items.get(i); try { GetResult getResult = indexShard.getService().get(item.type(), item.id(), item.storedFields(), request.realtime(), item.version(), item.versionType(), item.fetchSourceContext()); response.add(request.locations.get(i), new GetResponse(getResult)); } catch (RuntimeException e) { if (TransportActions.isShardNotAvailableException(e)) { throw e; } else { logger.debug(() -> new ParameterizedMessage("{} failed to execute multi_get for [{}]/[{}]", shardId, item.type(), item.id()), e); response.add(request.locations.get(i), new MultiGetResponse.Failure(request.index(), item.type(), item.id(), e)); } } } return response; } }
@Override protected MultiGetShardResponse shardOperation(MultiGetShardRequest request, ShardId shardId) { IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex()); IndexShard indexShard = indexService.getShard(shardId.id()); if (request.refresh() && !request.realtime()) { indexShard.refresh("refresh_flag_mget"); } MultiGetShardResponse response = new MultiGetShardResponse(); for (int i = 0; i < request.locations.size(); i++) { MultiGetRequest.Item item = request.items.get(i); try { GetResult getResult = indexShard.getService().get(item.type(), item.id(), item.storedFields(), request.realtime(), item.version(), item.versionType(), item.fetchSourceContext()); response.add(request.locations.get(i), new GetResponse(getResult)); } catch (RuntimeException e) { if (TransportActions.isShardNotAvailableException(e)) { throw e; } else { logger.debug(() -> new ParameterizedMessage("{} failed to execute multi_get for [{}]/[{}]", shardId, item.type(), item.id()), e); response.add(request.locations.get(i), new MultiGetResponse.Failure(request.index(), item.type(), item.id(), e)); } } } return response; }
@Override protected MultiGetShardResponse shardOperation(MultiGetShardRequest request, ShardId shardId) { IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex()); IndexShard indexShard = indexService.shardSafe(shardId.id()); if (request.refresh() && !request.realtime()) { indexShard.refresh("refresh_flag_mget"); } MultiGetShardResponse response = new MultiGetShardResponse(); for (int i = 0; i < request.locations.size(); i++) { MultiGetRequest.Item item = request.items.get(i); try { GetResult getResult = indexShard.getService().get(item.type(), item.id(), item.fields(), request.realtime(), item.version(), item.versionType(), item.fetchSourceContext(), request.ignoreErrorsOnGeneratedFields()); response.add(request.locations.get(i), new GetResponse(getResult)); } catch (Throwable t) { if (TransportActions.isShardNotAvailableException(t)) { throw (ElasticsearchException) t; } else { logger.debug("{} failed to execute multi_get for [{}]/[{}]", t, shardId, item.type(), item.id()); response.add(request.locations.get(i), new MultiGetResponse.Failure(request.index(), item.type(), item.id(), t)); } } } return response; } }
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); int size = in.readVInt(); locations = new IntArrayList(size); responses = new ArrayList<>(size); failures = new ArrayList<>(size); for (int i = 0; i < size; i++) { locations.add(in.readVInt()); if (in.readBoolean()) { GetResponse response = new GetResponse(); response.readFrom(in); responses.add(response); } else { responses.add(null); } if (in.readBoolean()) { failures.add(MultiGetResponse.Failure.readFailure(in)); } else { failures.add(null); } } }
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeVInt(locations.size()); for (int i = 0; i < locations.size(); i++) { out.writeVInt(locations.get(i)); if (responses.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); responses.get(i).writeTo(out); } if (failures.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); failures.get(i).writeTo(out); } } } }
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); int size = in.readVInt(); locations = new IntArrayList(size); responses = new ArrayList<>(size); failures = new ArrayList<>(size); for (int i = 0; i < size; i++) { locations.add(in.readVInt()); if (in.readBoolean()) { GetResponse response = new GetResponse(); response.readFrom(in); responses.add(response); } else { responses.add(null); } if (in.readBoolean()) { failures.add(MultiGetResponse.Failure.readFailure(in)); } else { failures.add(null); } } }
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); int size = in.readVInt(); locations = new IntArrayList(size); responses = new ArrayList<>(size); failures = new ArrayList<>(size); for (int i = 0; i < size; i++) { locations.add(in.readVInt()); if (in.readBoolean()) { GetResponse response = new GetResponse(); response.readFrom(in); responses.add(response); } else { responses.add(null); } if (in.readBoolean()) { failures.add(MultiGetResponse.Failure.readFailure(in)); } else { failures.add(null); } } }
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); int size = in.readVInt(); locations = new IntArrayList(size); responses = new ArrayList<>(size); failures = new ArrayList<>(size); for (int i = 0; i < size; i++) { locations.add(in.readVInt()); if (in.readBoolean()) { GetResponse response = new GetResponse(); response.readFrom(in); responses.add(response); } else { responses.add(null); } if (in.readBoolean()) { failures.add(MultiGetResponse.Failure.readFailure(in)); } else { failures.add(null); } } }
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeVInt(locations.size()); for (int i = 0; i < locations.size(); i++) { out.writeVInt(locations.get(i)); if (responses.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); responses.get(i).writeTo(out); } if (failures.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); failures.get(i).writeTo(out); } } } }
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeVInt(locations.size()); for (int i = 0; i < locations.size(); i++) { out.writeVInt(locations.get(i)); if (responses.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); responses.get(i).writeTo(out); } if (failures.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); failures.get(i).writeTo(out); } } } }
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startArray(Fields.DOCS); for (MultiGetItemResponse response : responses) { if (response.isFailed()) { builder.startObject(); Failure failure = response.getFailure(); builder.field(Fields._INDEX, failure.getIndex()); builder.field(Fields._TYPE, failure.getType()); builder.field(Fields._ID, failure.getId()); ElasticsearchException.renderThrowable(builder, params, failure.getFailure()); builder.endObject(); } else { GetResponse getResponse = response.getResponse(); builder.startObject(); getResponse.toXContent(builder, params); builder.endObject(); } } builder.endArray(); return builder; }
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeVInt(locations.size()); for (int i = 0; i < locations.size(); i++) { out.writeVInt(locations.get(i)); if (responses.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); responses.get(i).writeTo(out); } if (failures.get(i) == null) { out.writeBoolean(false); } else { out.writeBoolean(true); failures.get(i).writeTo(out); } } } }
public void execute() { if (executed) return; timing.start("lazyMultiGet"); MultiGetResponse multiGetItemResponses = client.multiGet(multiGetRequest).actionGet(); timing.stop("lazyMultiGet"); multiGetItemResponses.forEach(response -> { if (response.isFailed() || !response.getResponse().isExists()) { System.out.println(response.getFailure().getMessage()); return; } List<BaseVertex> vertices = idToVertices.get(response.getId()); if (vertices == null) return; vertices.forEach(vertex -> vertex.applyLazyFields(response)); }); executed = true; multiGetRequest = null; idToVertices = null; client = null; } }