Skip to content

Commit 09bf858

Browse files
authored
Run the Get Connector request in a stashed threadcontext (opensearch-project#3492)
* Run the Get Connector request in a stashed threadcontext Signed-off-by: Craig Perkins <[email protected]> * Add restore context Signed-off-by: Craig Perkins <[email protected]> --------- Signed-off-by: Craig Perkins <[email protected]>
1 parent fd7776e commit 09bf858

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

plugin/src/main/java/org/opensearch/ml/model/MLModelManager.java

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2077,40 +2077,44 @@ public void getConnector(String connectorId, String tenantId, ActionListener<Con
20772077
.tenantId(tenantId)
20782078
.build();
20792079

2080-
sdkClient.getDataObjectAsync(getDataObjectRequest).whenComplete((r, throwable) -> {
2081-
log.debug("Completed Get Connector Request, id:{}", connectorId);
2082-
if (throwable != null) {
2083-
Exception cause = SdkClientUtils.unwrapAndConvertToException(throwable);
2084-
if (ExceptionsHelper.unwrap(cause, IndexNotFoundException.class) != null) {
2085-
log.error("Failed to get connector index", cause);
2086-
listener.onFailure(new OpenSearchStatusException("Failed to find connector", RestStatus.NOT_FOUND));
2080+
try (ThreadContext.StoredContext ctx = client.threadPool().getThreadContext().stashContext()) {
2081+
sdkClient.getDataObjectAsync(getDataObjectRequest).whenComplete((r, throwable) -> {
2082+
log.debug("Completed Get Connector Request, id:{}", connectorId);
2083+
ctx.restore();
2084+
if (throwable != null) {
2085+
Exception cause = SdkClientUtils.unwrapAndConvertToException(throwable);
2086+
if (ExceptionsHelper.unwrap(cause, IndexNotFoundException.class) != null) {
2087+
log.error("Failed to get connector index", cause);
2088+
listener.onFailure(new OpenSearchStatusException("Failed to find connector", RestStatus.NOT_FOUND));
2089+
} else {
2090+
log.error("Failed to get ML connector {}", connectorId, cause);
2091+
listener.onFailure(cause);
2092+
}
20872093
} else {
2088-
log.error("Failed to get ML connector {}", connectorId, cause);
2089-
listener.onFailure(cause);
2090-
}
2091-
} else {
2092-
try {
2093-
GetResponse gr = r.parser() == null ? null : GetResponse.fromXContent(r.parser());
2094-
if (gr != null && gr.isExists()) {
2095-
try (
2096-
XContentParser parser = MLNodeUtils
2097-
.createXContentParserFromRegistry(NamedXContentRegistry.EMPTY, gr.getSourceAsBytesRef())
2098-
) {
2099-
ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.nextToken(), parser);
2100-
Connector connector = Connector.createConnector(parser);
2101-
listener.onResponse(connector);
2102-
} catch (Exception e) {
2103-
log.error("Failed to parse connector:{}", connectorId);
2104-
listener.onFailure(e);
2094+
try {
2095+
GetResponse gr = r.parser() == null ? null : GetResponse.fromXContent(r.parser());
2096+
if (gr != null && gr.isExists()) {
2097+
try (
2098+
XContentParser parser = MLNodeUtils
2099+
.createXContentParserFromRegistry(NamedXContentRegistry.EMPTY, gr.getSourceAsBytesRef())
2100+
) {
2101+
ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.nextToken(), parser);
2102+
Connector connector = Connector.createConnector(parser);
2103+
listener.onResponse(connector);
2104+
} catch (Exception e) {
2105+
log.error("Failed to parse connector:{}", connectorId);
2106+
listener.onFailure(e);
2107+
}
2108+
} else {
2109+
listener
2110+
.onFailure(new OpenSearchStatusException("Failed to find connector:" + connectorId, RestStatus.NOT_FOUND));
21052111
}
2106-
} else {
2107-
listener.onFailure(new OpenSearchStatusException("Failed to find connector:" + connectorId, RestStatus.NOT_FOUND));
2112+
} catch (Exception e) {
2113+
listener.onFailure(e);
21082114
}
2109-
} catch (Exception e) {
2110-
listener.onFailure(e);
21112115
}
2112-
}
2113-
});
2116+
});
2117+
}
21142118
}
21152119

21162120
/**

0 commit comments

Comments
 (0)