HttpAsyncRequestExecutor에 문제가 있습니다.Elasticsearch Rest Client - performRequestAsync 호출시 ConnectionClosedException
나는 elasticsearch Java Rest Client를 사용하고 있는데 난 항상 (아래 참조) 나는 performRequestAsync
호출 할 때 ConnectionClosedException
받고 있어요 : 여기
// variables (all with valid format):
// endpoint is just a List<String> with "14655/_search"
// params is just a Map<String, String> with
// "pretty", "true"
// "search_type", "query_then_fetch"
// entity is just a HttpEntity entity with the Json body request
final int numRequests = endpoints.size();
final CountDownLatch latch = new CountDownLatch(numRequests);
try (Timer.Context ctx = this.requestTimer.time()) {
for (final String endpoint : endpoints) {
// ERROR hapens here:
restClient.performRequestAsync("GET", endpoint, params, entity,
new ResponseListener() {
@Override
public void onSuccess(final Response response) {
if (response != null) {
responses.add(response);
latch.countDown();
}
}
@Override
public void onFailure(final Exception exception) {
latch.countDown();
logger.error("could not get search results for....",exception);
exception.printStackTrace();
}
});
}
}
예외 :
org.apache.http.ConnectionClosedException: Connection closed
at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput(HttpAsyncRequestExecutor.java:341)
at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:263)
at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)
at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)
at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:116)
at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:164)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:339)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:317)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:278)
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:590)
at java.lang.Thread.run(Thread.java:745)
내가 무엇을 모르는 연결 닫기의 실제 원인입니다. 정확한 요청은 kopf에서 잘 작동하며 유효한 검색 결과를 반환합니다. 게다가, 나는 restClient.close()
또는 그와 비슷한 것을 부르지 않습니다.
어디에 문제가 있을지 생각해보십시오. 입력 끝이 닫힌 연결 상태를 가져 오는 원인입니까 (org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput(conn)
에 따른)? 그렇다면 입력은 무엇입니까?
감사
UPDATE :
이 코드는 통합 테스트에서 제대로 작동하기 때문에 문제가 (즉, 결과를 반환), Tomcat의 HttpClient
관련이 의심 ...하지만 그렇지 않습니다 나는 "바람둥이"배포 된 "인터페이스"를 통해 REST 요청을 할 때 같은 (ConnectionClosedException
)을 얻습니다.
어떤 표시등이 켜져 있습니까?