Skip to content

Commit 892d5e4

Browse files
author
Max Hniebergall
committed
Avoid use of GroupedActionListener when the group size is zero
1 parent 0ab79db commit 892d5e4

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

server/src/main/java/org/elasticsearch/action/support/GroupedActionListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ public final class GroupedActionListener<T> extends DelegatingActionListener<T,
3535
* Creates a new listener
3636
* @param groupSize the group size
3737
* @param delegate the delegate listener
38+
* @throws IllegalArgumentException if groupSize is less than or equal to 0
3839
*/
39-
public GroupedActionListener(int groupSize, ActionListener<Collection<T>> delegate) {
40+
public GroupedActionListener(int groupSize, ActionListener<Collection<T>> delegate) throws IllegalArgumentException {
4041
super(delegate);
4142
if (groupSize <= 0) {
4243
assert false : "illegal group size [" + groupSize + "]";

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportGetInferenceModelAction.java

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.elasticsearch.common.util.concurrent.EsExecutors;
1717
import org.elasticsearch.inference.InferenceServiceRegistry;
1818
import org.elasticsearch.inference.Model;
19+
import org.elasticsearch.inference.ModelConfigurations;
1920
import org.elasticsearch.inference.TaskType;
2021
import org.elasticsearch.inference.UnparsedModel;
2122
import org.elasticsearch.injection.guice.Inject;
@@ -148,25 +149,32 @@ private void parseModels(List<UnparsedModel> unparsedModels, ActionListener<GetI
148149
);
149150
}
150151

151-
var groupedListener = new GroupedActionListener<List<Model>>(
152-
parsedModelsByService.entrySet().size(),
153-
listener.delegateFailureAndWrap((delegate, listOfListOfModels) -> {
154-
var modifiable = new ArrayList<Model>();
155-
for (var l : listOfListOfModels) {
156-
modifiable.addAll(l);
157-
}
158-
modifiable.sort(Comparator.comparing(Model::getInferenceEntityId));
159-
delegate.onResponse(
160-
new GetInferenceModelAction.Response(modifiable.stream().map(Model::getConfigurations).collect(Collectors.toList()))
161-
);
162-
})
163-
);
164-
165-
for (var entry : parsedModelsByService.entrySet()) {
166-
serviceRegistry.getService(entry.getKey())
167-
.get() // must be non-null to get this far
168-
.updateModelsWithDynamicFields(entry.getValue(), groupedListener);
152+
if (parsedModelsByService.isEmpty() == false) {
153+
var groupedListener = new GroupedActionListener<List<Model>>(
154+
parsedModelsByService.entrySet().size(),
155+
listener.delegateFailureAndWrap((delegate, listOfListOfModels) -> {
156+
var modifiable = new ArrayList<Model>();
157+
for (var l : listOfListOfModels) {
158+
modifiable.addAll(l);
159+
}
160+
modifiable.sort(Comparator.comparing(Model::getInferenceEntityId));
161+
delegate.onResponse(
162+
new GetInferenceModelAction.Response(
163+
modifiable.stream().map(Model::getConfigurations).collect(Collectors.toList())
164+
)
165+
);
166+
})
167+
);
168+
169+
for (var entry : parsedModelsByService.entrySet()) {
170+
serviceRegistry.getService(entry.getKey())
171+
.get() // must be non-null to get this far
172+
.updateModelsWithDynamicFields(entry.getValue(), groupedListener);
173+
}
174+
} else {
175+
listener.onResponse(new GetInferenceModelAction.Response(new ArrayList<ModelConfigurations>(0)));
169176
}
177+
170178
} catch (Exception e) {
171179
listener.onFailure(e);
172180
}

0 commit comments

Comments
 (0)