提交JDBC类型的Businesskey处理的Filter

This commit is contained in:
ascrutae 2016-04-20 14:23:20 +08:00
parent b8cfec0f1a
commit 03711ab038
3 changed files with 57 additions and 11 deletions

View File

@ -89,24 +89,31 @@ public class SpanEntry {
return serverSpan.getBusinessKey();
}
public void setBusinessKey(String businessKey) {
if (clientSpan != null) {
clientSpan.setBusinessKey(businessKey);
}
serverSpan.setBusinessKey(businessKey);
}
public ChainNode.NodeStatus getSpanStatus() {
if (clientSpan != null) {
if (clientSpan.getExceptionStack() != null && clientSpan.getExceptionStack().length() > 0) {
if(clientSpan.getStatusCode() == 1){
return ChainNode.NodeStatus.ABNORMAL;
}else{
return ChainNode.NodeStatus.HUMAN_INTERRUPTION;
}
if (clientSpan.getStatusCode() == 1) {
return ChainNode.NodeStatus.ABNORMAL;
} else {
return ChainNode.NodeStatus.HUMAN_INTERRUPTION;
}
}
}
if (serverSpan != null) {
if (serverSpan.getExceptionStack() != null && serverSpan.getExceptionStack().length() > 0) {
if(clientSpan != null && clientSpan.getStatusCode() == 1){
return ChainNode.NodeStatus.ABNORMAL;
}else{
return ChainNode.NodeStatus.HUMAN_INTERRUPTION;
}
if (clientSpan != null && clientSpan.getStatusCode() == 1) {
return ChainNode.NodeStatus.ABNORMAL;
} else {
return ChainNode.NodeStatus.HUMAN_INTERRUPTION;
}
}
}

View File

@ -0,0 +1,39 @@
package com.ai.cloud.skywalking.analysis.chainbuild.filter.impl;
import com.ai.cloud.skywalking.analysis.chainbuild.SpanEntry;
import com.ai.cloud.skywalking.analysis.chainbuild.filter.SpanNodeProcessFilter;
import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode;
import com.ai.cloud.skywalking.analysis.chainbuild.util.SubLevelSpanCostCounter;
public class JDBCBusinessKeyHandleFilter extends SpanNodeProcessFilter {
@Override
public void doFilter(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap) {
String businessKey = spanEntry.getBusinessKey();
if (businessKey != null) {
int index = businessKey.lastIndexOf(":");
if (index != -1) {
businessKey = businessKey.substring(index + 1).trim();
String key = businessKey.toUpperCase();
if (key.startsWith("SELECT")) {
businessKey = subBusinessKey(businessKey, key, "WHERE");
} else if (key.startsWith("UPDATE")) {
businessKey = subBusinessKey(businessKey, key, "SET");
} else if (key.startsWith("DELETE")) {
businessKey = subBusinessKey(businessKey, key, "WHERE");
} else if (key.startsWith("INSERT")) {
businessKey = subBusinessKey(businessKey, key, "VALUES");
}
}
}
spanEntry.setBusinessKey(businessKey);
this.doNext(spanEntry, node, costMap);
}
private String subBusinessKey(String businessKey, String key,String keyWord) {
int whereIndex = key.indexOf(keyWord);
if (whereIndex != -1) {
businessKey = businessKey.substring(0, whereIndex - 1).trim();
}
return businessKey;
}
}

View File

@ -1,3 +1,3 @@
#
default=CopyAttrFilter->ReplaceAddressFilter->ProcessCostTimeFilter->TokenGenerateFilter
J=CopyAttrFilter->AppendBusinessKeyFilter->ProcessCostTimeFilter->TokenGenerateFilter
J=CopyAttrFilter->JDBCBusinessKeyHandleFilter->AppendBusinessKeyFilter->ProcessCostTimeFilter->TokenGenerateFilter