Skip to content

Commit f736b37

Browse files
authored
Support for tracing the callbacks of async methods in elastiicsearch-6.x/7.x-plugin (#694)
1 parent ffbd90c commit f736b37

File tree

32 files changed

+1223
-160
lines changed

32 files changed

+1223
-160
lines changed

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Release Notes.
1616
* Fix NPE in Redisson plugin since Redisson 3.20.0.
1717
* Support for showing batch command details and ignoring PING commands in Redisson plugin.
1818
* Fix peer value of Master-Slave mode in Redisson plugin.
19+
* Support for tracing the callbacks of asynchronous methods in elasticsearch-6.x-plugin/elasticsearch-7.x-plugin.
1920

2021
All issues and pull requests are [here](https://github.com/apache/skywalking/milestone/213?closed=1)
2122

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/define/IndicesClientInstrumentation.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public String getMethodsInterceptor() {
6868

6969
@Override
7070
public boolean isOverrideArgs() {
71-
return false;
71+
return true;
7272
}
7373
},
7474
new InstanceMethodsInterceptPoint() {
@@ -85,7 +85,7 @@ public String getMethodsInterceptor() {
8585

8686
@Override
8787
public boolean isOverrideArgs() {
88-
return false;
88+
return true;
8989
}
9090
},
9191
new InstanceMethodsInterceptPoint() {
@@ -102,7 +102,7 @@ public String getMethodsInterceptor() {
102102

103103
@Override
104104
public boolean isOverrideArgs() {
105-
return false;
105+
return true;
106106
}
107107
},
108108
new InstanceMethodsInterceptPoint() {
@@ -119,7 +119,7 @@ public String getMethodsInterceptor() {
119119

120120
@Override
121121
public boolean isOverrideArgs() {
122-
return false;
122+
return true;
123123
}
124124
}
125125
};

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/define/RestHighLevelClientInstrumentation.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public String getMethodsInterceptor() {
8686

8787
@Override
8888
public boolean isOverrideArgs() {
89-
return false;
89+
return true;
9090
}
9191
},
9292
new InstanceMethodsInterceptPoint() {
@@ -102,7 +102,7 @@ public String getMethodsInterceptor() {
102102

103103
@Override
104104
public boolean isOverrideArgs() {
105-
return false;
105+
return true;
106106
}
107107
},
108108
new InstanceMethodsInterceptPoint() {
@@ -118,7 +118,7 @@ public String getMethodsInterceptor() {
118118

119119
@Override
120120
public boolean isOverrideArgs() {
121-
return false;
121+
return true;
122122
}
123123
},
124124
new InstanceMethodsInterceptPoint() {
@@ -134,7 +134,7 @@ public String getMethodsInterceptor() {
134134

135135
@Override
136136
public boolean isOverrideArgs() {
137-
return false;
137+
return true;
138138
}
139139
},
140140
new InstanceMethodsInterceptPoint() {
@@ -182,7 +182,7 @@ public String getMethodsInterceptor() {
182182

183183
@Override
184184
public boolean isOverrideArgs() {
185-
return false;
185+
return true;
186186
}
187187
},
188188
new InstanceMethodsInterceptPoint() {
@@ -198,7 +198,7 @@ public String getMethodsInterceptor() {
198198

199199
@Override
200200
public boolean isOverrideArgs() {
201-
return false;
201+
return true;
202202
}
203203
},
204204
new InstanceMethodsInterceptPoint() {
@@ -214,7 +214,7 @@ public String getMethodsInterceptor() {
214214

215215
@Override
216216
public boolean isOverrideArgs() {
217-
return false;
217+
return true;
218218
}
219219
},
220220
new InstanceMethodsInterceptPoint() {
@@ -230,7 +230,7 @@ public String getMethodsInterceptor() {
230230

231231
@Override
232232
public boolean isOverrideArgs() {
233-
return false;
233+
return true;
234234
}
235235
}
236236
};

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/interceptor/Constants.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,7 @@ public class Constants {
7979
public static final AbstractTag<String> ES_TOOK_MILLIS = Tags.ofKey("es.took_millis");
8080
public static final AbstractTag<String> ES_TOTAL_HITS = Tags.ofKey("es.total_hits");
8181
public static final AbstractTag<String> ES_INGEST_TOOK_MILLIS = Tags.ofKey("es.ingest_took_millis");
82+
83+
public static final String ON_RESPONSE_SUFFIX = "/onResponse";
84+
public static final String ON_FAILURE_SUFFIX = "/onFailure";
8285
}

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/interceptor/IndicesClientAnalyzeMethodsInterceptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
3131
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
3232
import org.apache.skywalking.apm.plugin.elasticsearch.common.RestClientEnhanceInfo;
33+
import org.apache.skywalking.apm.plugin.elasticsearch.v6.support.AdapterUtil;
34+
import org.elasticsearch.action.ActionListener;
3335
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
3436

3537
import java.lang.reflect.Method;
@@ -58,6 +60,10 @@ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allAr
5860
Tags.DB_STATEMENT.set(span, analyzeRequest.text()[0]);
5961
}
6062
SpanLayer.asDB(span);
63+
if (allArguments.length > 2 && allArguments[2] != null && allArguments[2] instanceof ActionListener) {
64+
allArguments[2] = AdapterUtil.wrapActionListener(restClientEnhanceInfo, Constants.ANALYZE_OPERATOR_NAME,
65+
(ActionListener) allArguments[2]);
66+
}
6167
}
6268
}
6369

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/interceptor/IndicesClientCreateMethodsInterceptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
2929
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
3030
import org.apache.skywalking.apm.plugin.elasticsearch.common.RestClientEnhanceInfo;
31+
import org.apache.skywalking.apm.plugin.elasticsearch.v6.support.AdapterUtil;
32+
import org.elasticsearch.action.ActionListener;
3133
import org.elasticsearch.client.indices.CreateIndexRequest;
3234

3335
import static org.apache.skywalking.apm.plugin.elasticsearch.v6.ElasticsearchPluginConfig.Plugin.Elasticsearch.TRACE_DSL;
@@ -52,6 +54,10 @@ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allAr
5254
Tags.DB_STATEMENT.set(span, createIndexRequest.mappings().utf8ToString());
5355
}
5456
SpanLayer.asDB(span);
57+
if (allArguments.length > 2 && allArguments[2] != null && allArguments[2] instanceof ActionListener) {
58+
allArguments[2] = AdapterUtil.wrapActionListener(restClientEnhanceInfo, Constants.CREATE_OPERATOR_NAME,
59+
(ActionListener) allArguments[2]);
60+
}
5561
}
5662
}
5763

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/interceptor/IndicesClientDeleteMethodsInterceptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
3030
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
3131
import org.apache.skywalking.apm.plugin.elasticsearch.common.RestClientEnhanceInfo;
32+
import org.apache.skywalking.apm.plugin.elasticsearch.v6.support.AdapterUtil;
33+
import org.elasticsearch.action.ActionListener;
3234
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
3335

3436
import static org.apache.skywalking.apm.plugin.elasticsearch.v6.interceptor.Constants.DB_TYPE;
@@ -48,6 +50,10 @@ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allAr
4850
Tags.DB_TYPE.set(span, DB_TYPE);
4951
Tags.DB_INSTANCE.set(span, Arrays.asList(deleteIndexRequest.indices()).toString());
5052
SpanLayer.asDB(span);
53+
if (allArguments.length > 2 && allArguments[2] != null && allArguments[2] instanceof ActionListener) {
54+
allArguments[2] = AdapterUtil.wrapActionListener(restClientEnhanceInfo, Constants.DELETE_OPERATOR_NAME,
55+
(ActionListener) allArguments[2]);
56+
}
5157
}
5258
}
5359

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/interceptor/IndicesClientRefreshMethodsInterceptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
2828
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
2929
import org.apache.skywalking.apm.plugin.elasticsearch.common.RestClientEnhanceInfo;
30+
import org.apache.skywalking.apm.plugin.elasticsearch.v6.support.AdapterUtil;
31+
import org.elasticsearch.action.ActionListener;
3032
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
3133

3234
import java.lang.reflect.Method;
@@ -48,6 +50,10 @@ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allAr
4850
Tags.DB_TYPE.set(span, DB_TYPE);
4951
Tags.DB_INSTANCE.set(span, buildIndicesString(request.indices()));
5052
SpanLayer.asDB(span);
53+
if (allArguments.length > 2 && allArguments[2] != null && allArguments[2] instanceof ActionListener) {
54+
allArguments[2] = AdapterUtil.wrapActionListener(restClientEnhanceInfo, Constants.REFRESH_OPERATOR_NAME,
55+
(ActionListener) allArguments[2]);
56+
}
5157
}
5258
}
5359

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/interceptor/RestHighLevelClientClearScrollMethodsInterceptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
2828
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
2929
import org.apache.skywalking.apm.plugin.elasticsearch.common.RestClientEnhanceInfo;
30+
import org.apache.skywalking.apm.plugin.elasticsearch.v6.support.AdapterUtil;
31+
import org.elasticsearch.action.ActionListener;
3032
import org.elasticsearch.action.search.ClearScrollRequest;
3133

3234
import java.lang.reflect.Method;
@@ -52,6 +54,10 @@ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allAr
5254
}
5355

5456
SpanLayer.asDB(span);
57+
if (allArguments.length > 2 && allArguments[2] != null && allArguments[2] instanceof ActionListener) {
58+
allArguments[2] = AdapterUtil.wrapActionListener(restClientEnhanceInfo, Constants.CLEAR_SCROLL_OPERATOR_NAME,
59+
(ActionListener) allArguments[2]);
60+
}
5561
}
5662

5763
@Override

apm-sniffer/apm-sdk-plugin/elasticsearch-6.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticsearch/v6/interceptor/RestHighLevelClientDeleteByQueryMethodsInterceptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
2828
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
2929
import org.apache.skywalking.apm.plugin.elasticsearch.common.RestClientEnhanceInfo;
30+
import org.apache.skywalking.apm.plugin.elasticsearch.v6.support.AdapterUtil;
31+
import org.elasticsearch.action.ActionListener;
3032
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
3133

3234
import java.lang.reflect.Method;
@@ -58,6 +60,10 @@ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allAr
5860
}
5961

6062
SpanLayer.asDB(span);
63+
if (allArguments.length > 2 && allArguments[2] != null && allArguments[2] instanceof ActionListener) {
64+
allArguments[2] = AdapterUtil.wrapActionListener(restClientEnhanceInfo, Constants.DELETE_BY_QUERY_OPERATOR_NAME,
65+
(ActionListener) allArguments[2]);
66+
}
6167
}
6268

6369
@Override

0 commit comments

Comments
 (0)