1111
1212import org .apache .http .entity .ContentType ;
1313import org .apache .http .nio .entity .NByteArrayEntity ;
14- import org .elasticsearch .ExceptionsHelper ;
1514import org .elasticsearch .action .search .MultiSearchRequest ;
1615import org .elasticsearch .action .search .SearchRequest ;
1716import org .elasticsearch .client .Request ;
17+ import org .elasticsearch .search .ErrorTraceHelper ;
1818import org .elasticsearch .search .builder .SearchSourceBuilder ;
19- import org .elasticsearch .transport .TransportMessageListener ;
20- import org .elasticsearch .transport .TransportService ;
2119import org .elasticsearch .xcontent .XContentType ;
2220import org .junit .Before ;
2321
2422import java .io .IOException ;
2523import java .nio .charset .Charset ;
26- import java .util .Optional ;
27- import java .util .concurrent .atomic .AtomicBoolean ;
24+ import java .util .function .BooleanSupplier ;
2825
2926import static org .elasticsearch .index .query .QueryBuilders .simpleQueryStringQuery ;
3027
3128public class SearchErrorTraceIT extends HttpSmokeTestCase {
32- private AtomicBoolean hasStackTrace ;
29+ private BooleanSupplier hasStackTrace ;
3330
3431 @ Before
35- private void setupMessageListener () {
36- internalCluster ().getDataNodeInstances (TransportService .class ).forEach (ts -> {
37- ts .addMessageListener (new TransportMessageListener () {
38- @ Override
39- public void onResponseSent (long requestId , String action , Exception error ) {
40- TransportMessageListener .super .onResponseSent (requestId , action , error );
41- if (action .startsWith ("indices:data/read/search" )) {
42- Optional <Throwable > throwable = ExceptionsHelper .unwrapCausesAndSuppressed (
43- error ,
44- t -> t .getStackTrace ().length > 0
45- );
46- hasStackTrace .set (throwable .isPresent ());
47- }
48- }
49- });
50- });
32+ public void setupMessageListener () {
33+ hasStackTrace = ErrorTraceHelper .setupErrorTraceListener (internalCluster ());
5134 }
5235
5336 private void setupIndexWithDocs () {
@@ -61,7 +44,6 @@ private void setupIndexWithDocs() {
6144 }
6245
6346 public void testSearchFailingQueryErrorTraceDefault () throws IOException {
64- hasStackTrace = new AtomicBoolean ();
6547 setupIndexWithDocs ();
6648
6749 Request searchRequest = new Request ("POST" , "/_search" );
@@ -76,11 +58,10 @@ public void testSearchFailingQueryErrorTraceDefault() throws IOException {
7658 }
7759 """ );
7860 getRestClient ().performRequest (searchRequest );
79- assertFalse (hasStackTrace .get ());
61+ assertFalse (hasStackTrace .getAsBoolean ());
8062 }
8163
8264 public void testSearchFailingQueryErrorTraceTrue () throws IOException {
83- hasStackTrace = new AtomicBoolean ();
8465 setupIndexWithDocs ();
8566
8667 Request searchRequest = new Request ("POST" , "/_search" );
@@ -96,11 +77,10 @@ public void testSearchFailingQueryErrorTraceTrue() throws IOException {
9677 """ );
9778 searchRequest .addParameter ("error_trace" , "true" );
9879 getRestClient ().performRequest (searchRequest );
99- assertTrue (hasStackTrace .get ());
80+ assertTrue (hasStackTrace .getAsBoolean ());
10081 }
10182
10283 public void testSearchFailingQueryErrorTraceFalse () throws IOException {
103- hasStackTrace = new AtomicBoolean ();
10484 setupIndexWithDocs ();
10585
10686 Request searchRequest = new Request ("POST" , "/_search" );
@@ -116,11 +96,10 @@ public void testSearchFailingQueryErrorTraceFalse() throws IOException {
11696 """ );
11797 searchRequest .addParameter ("error_trace" , "false" );
11898 getRestClient ().performRequest (searchRequest );
119- assertFalse (hasStackTrace .get ());
99+ assertFalse (hasStackTrace .getAsBoolean ());
120100 }
121101
122102 public void testMultiSearchFailingQueryErrorTraceDefault () throws IOException {
123- hasStackTrace = new AtomicBoolean ();
124103 setupIndexWithDocs ();
125104
126105 XContentType contentType = XContentType .JSON ;
@@ -133,11 +112,10 @@ public void testMultiSearchFailingQueryErrorTraceDefault() throws IOException {
133112 new NByteArrayEntity (requestBody , ContentType .create (contentType .mediaTypeWithoutParameters (), (Charset ) null ))
134113 );
135114 getRestClient ().performRequest (searchRequest );
136- assertFalse (hasStackTrace .get ());
115+ assertFalse (hasStackTrace .getAsBoolean ());
137116 }
138117
139118 public void testMultiSearchFailingQueryErrorTraceTrue () throws IOException {
140- hasStackTrace = new AtomicBoolean ();
141119 setupIndexWithDocs ();
142120
143121 XContentType contentType = XContentType .JSON ;
@@ -151,11 +129,10 @@ public void testMultiSearchFailingQueryErrorTraceTrue() throws IOException {
151129 );
152130 searchRequest .addParameter ("error_trace" , "true" );
153131 getRestClient ().performRequest (searchRequest );
154- assertTrue (hasStackTrace .get ());
132+ assertTrue (hasStackTrace .getAsBoolean ());
155133 }
156134
157135 public void testMultiSearchFailingQueryErrorTraceFalse () throws IOException {
158- hasStackTrace = new AtomicBoolean ();
159136 setupIndexWithDocs ();
160137
161138 XContentType contentType = XContentType .JSON ;
@@ -170,6 +147,6 @@ public void testMultiSearchFailingQueryErrorTraceFalse() throws IOException {
170147 searchRequest .addParameter ("error_trace" , "false" );
171148 getRestClient ().performRequest (searchRequest );
172149
173- assertFalse (hasStackTrace .get ());
150+ assertFalse (hasStackTrace .getAsBoolean ());
174151 }
175152}
0 commit comments