修复bug
This commit is contained in:
parent
598275b8fd
commit
98b5085f53
|
|
@ -20,6 +20,9 @@ import java.io.File;
|
|||
import java.lang.instrument.Instrumentation;
|
||||
import java.net.URL;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
|
||||
public class SkyWalkingAgent {
|
||||
private static Logger logger = LogManager.getLogger(SkyWalkingAgent.class);
|
||||
|
||||
|
|
@ -29,7 +32,7 @@ public class SkyWalkingAgent {
|
|||
final PluginDefineCategory pluginDefineCategory =
|
||||
PluginDefineCategory.category(new PluginBootstrap().loadPlugins());
|
||||
|
||||
new AgentBuilder.Default().type(enhanceClassMatcher(pluginDefineCategory))
|
||||
new AgentBuilder.Default().type(enhanceClassMatcher(pluginDefineCategory).and(not(isInterface())))
|
||||
.transform(new AgentBuilder.Transformer() {
|
||||
public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder,
|
||||
TypeDescription typeDescription, ClassLoader classLoader) {
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@ public abstract class BaseInvokeMonitor {
|
|||
|
||||
protected ContextData beforeInvoke(Span spanData, Identification id) {
|
||||
if (Config.BuriedPoint.PRINTF) {
|
||||
logger.debug("TraceId:" + spanData.getTraceId() + "\tviewpointId:" + id.getViewPoint() + "\tParentLevelId:"
|
||||
+ spanData.getParentLevel() + "\tLevelId:" + spanData.getLevelId());
|
||||
logger.debug("TraceId:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel()
|
||||
+ "\tLevelId:" + spanData.getLevelId() + "\tbusinessKey:" + spanData.getParameters());
|
||||
}
|
||||
|
||||
// 将新创建的Context存放到ThreadLocal栈中。
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.invoke.monitor;
|
|||
|
||||
import com.ai.cloud.skywalking.buffer.ContextBuffer;
|
||||
import com.ai.cloud.skywalking.conf.AuthDesc;
|
||||
import com.ai.cloud.skywalking.conf.Config;
|
||||
import com.ai.cloud.skywalking.context.CurrentThreadSpanStack;
|
||||
import com.ai.cloud.skywalking.logging.LogManager;
|
||||
import com.ai.cloud.skywalking.logging.Logger;
|
||||
|
|
@ -28,6 +29,10 @@ public class RPCClientInvokeMonitor extends BaseInvokeMonitor {
|
|||
//设置SpanType的类型
|
||||
spanData.setSpanType(SpanType.RPC_CLIENT);
|
||||
|
||||
if (Config.BuriedPoint.PRINTF) {
|
||||
logger.debug("TraceId:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel()
|
||||
+ "\tLevelId:" + spanData.getLevelId() + "\tbusinessKey:" + spanData.getParameters());
|
||||
}
|
||||
|
||||
CurrentThreadSpanStack.push(spanData);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.ai.cloud.skywalking.logging;
|
|||
|
||||
import com.ai.cloud.skywalking.protocol.util.LoggingUtil;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
|
|
@ -89,7 +90,7 @@ public class Logger {
|
|||
break;
|
||||
}
|
||||
|
||||
tmpMessage = tmpMessage.replaceFirst("\\{\\}", String.valueOf(parameters[parametersIndex++]));
|
||||
tmpMessage = tmpMessage.replaceFirst("\\{\\}", URLEncoder.encode(String.valueOf(parameters[parametersIndex++])));
|
||||
startSize = index + 2;
|
||||
}
|
||||
return tmpMessage;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public class CustomLocalMethodInterceptor implements InstanceMethodsAroundInterc
|
|||
@Override
|
||||
public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext,
|
||||
Object ret) {
|
||||
new LocalMethodInvokeMonitor().afterInvoke();
|
||||
recordResultIfNecessary(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -65,10 +65,24 @@ public class CustomLocalMethodInterceptor implements InstanceMethodsAroundInterc
|
|||
|
||||
@Override
|
||||
public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) {
|
||||
new LocalMethodInvokeMonitor().afterInvoke();
|
||||
recordResultIfNecessary(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private void recordResultIfNecessary(Object ret) {
|
||||
if (Config.Plugin.CustomLocalMethodInterceptorPlugin.RECORD_PARAM_ENABLE){
|
||||
String retStr;
|
||||
try{
|
||||
retStr = new Gson().toJson(ret);
|
||||
}catch (Exception e){
|
||||
retStr = "N/A";
|
||||
}
|
||||
new LocalMethodInvokeMonitor().afterInvoke(retStr);
|
||||
}else {
|
||||
new LocalMethodInvokeMonitor().afterInvoke();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) {
|
||||
new LocalMethodInvokeMonitor().occurException(t);
|
||||
|
|
|
|||
|
|
@ -100,6 +100,40 @@ public final class TraceProtocol {
|
|||
*/
|
||||
com.google.protobuf.ByteString
|
||||
getViewpointIdBytes();
|
||||
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
int getParametersCount();
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
boolean containsParameters(
|
||||
java.lang.String key);
|
||||
/**
|
||||
* Use {@link #getParametersMap()} instead.
|
||||
*/
|
||||
@java.lang.Deprecated
|
||||
java.util.Map<java.lang.String, java.lang.String>
|
||||
getParameters();
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
java.util.Map<java.lang.String, java.lang.String>
|
||||
getParametersMap();
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
java.lang.String getParametersOrDefault(
|
||||
java.lang.String key,
|
||||
java.lang.String defaultValue);
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
java.lang.String getParametersOrThrow(
|
||||
java.lang.String key);
|
||||
}
|
||||
/**
|
||||
* Protobuf type {@code AckSpan}
|
||||
|
|
@ -189,6 +223,18 @@ public final class TraceProtocol {
|
|||
viewpointId_ = bs;
|
||||
break;
|
||||
}
|
||||
case 66: {
|
||||
if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
|
||||
parameters_ = com.google.protobuf.MapField.newMapField(
|
||||
ParametersDefaultEntryHolder.defaultEntry);
|
||||
mutable_bitField0_ |= 0x00000080;
|
||||
}
|
||||
com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
|
||||
parameters = input.readMessage(
|
||||
ParametersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
|
||||
parameters_.getMutableMap().put(parameters.getKey(), parameters.getValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||
|
|
@ -206,6 +252,17 @@ public final class TraceProtocol {
|
|||
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_descriptor;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"rawtypes"})
|
||||
protected com.google.protobuf.MapField internalGetMapField(
|
||||
int number) {
|
||||
switch (number) {
|
||||
case 8:
|
||||
return internalGetParameters();
|
||||
default:
|
||||
throw new RuntimeException(
|
||||
"Invalid map field number: " + number);
|
||||
}
|
||||
}
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_fieldAccessorTable
|
||||
|
|
@ -427,6 +484,82 @@ public final class TraceProtocol {
|
|||
}
|
||||
}
|
||||
|
||||
public static final int PARAMETERS_FIELD_NUMBER = 8;
|
||||
private static final class ParametersDefaultEntryHolder {
|
||||
static final com.google.protobuf.MapEntry<
|
||||
java.lang.String, java.lang.String> defaultEntry =
|
||||
com.google.protobuf.MapEntry
|
||||
.<java.lang.String, java.lang.String>newDefaultInstance(
|
||||
com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_ParametersEntry_descriptor,
|
||||
com.google.protobuf.WireFormat.FieldType.STRING,
|
||||
"",
|
||||
com.google.protobuf.WireFormat.FieldType.STRING,
|
||||
"");
|
||||
}
|
||||
private com.google.protobuf.MapField<
|
||||
java.lang.String, java.lang.String> parameters_;
|
||||
private com.google.protobuf.MapField<java.lang.String, java.lang.String>
|
||||
internalGetParameters() {
|
||||
if (parameters_ == null) {
|
||||
return com.google.protobuf.MapField.emptyMapField(
|
||||
ParametersDefaultEntryHolder.defaultEntry);
|
||||
}
|
||||
return parameters_;
|
||||
}
|
||||
|
||||
public int getParametersCount() {
|
||||
return internalGetParameters().getMap().size();
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public boolean containsParameters(
|
||||
java.lang.String key) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
return internalGetParameters().getMap().containsKey(key);
|
||||
}
|
||||
/**
|
||||
* Use {@link #getParametersMap()} instead.
|
||||
*/
|
||||
@java.lang.Deprecated
|
||||
public java.util.Map<java.lang.String, java.lang.String> getParameters() {
|
||||
return getParametersMap();
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public java.util.Map<java.lang.String, java.lang.String> getParametersMap() {
|
||||
return internalGetParameters().getMap();
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public java.lang.String getParametersOrDefault(
|
||||
java.lang.String key,
|
||||
java.lang.String defaultValue) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
java.util.Map<java.lang.String, java.lang.String> map =
|
||||
internalGetParameters().getMap();
|
||||
return map.containsKey(key) ? map.get(key) : defaultValue;
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public java.lang.String getParametersOrThrow(
|
||||
java.lang.String key) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
java.util.Map<java.lang.String, java.lang.String> map =
|
||||
internalGetParameters().getMap();
|
||||
if (!map.containsKey(key)) {
|
||||
throw new java.lang.IllegalArgumentException();
|
||||
}
|
||||
return map.get(key);
|
||||
}
|
||||
|
||||
private byte memoizedIsInitialized = -1;
|
||||
public final boolean isInitialized() {
|
||||
byte isInitialized = memoizedIsInitialized;
|
||||
|
|
@ -480,6 +613,15 @@ public final class TraceProtocol {
|
|||
if (((bitField0_ & 0x00000040) == 0x00000040)) {
|
||||
com.google.protobuf.GeneratedMessageV3.writeString(output, 7, viewpointId_);
|
||||
}
|
||||
for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
|
||||
: internalGetParameters().getMap().entrySet()) {
|
||||
com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
|
||||
parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
|
||||
.setKey(entry.getKey())
|
||||
.setValue(entry.getValue())
|
||||
.build();
|
||||
output.writeMessage(8, parameters);
|
||||
}
|
||||
unknownFields.writeTo(output);
|
||||
}
|
||||
|
||||
|
|
@ -512,6 +654,16 @@ public final class TraceProtocol {
|
|||
if (((bitField0_ & 0x00000040) == 0x00000040)) {
|
||||
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, viewpointId_);
|
||||
}
|
||||
for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
|
||||
: internalGetParameters().getMap().entrySet()) {
|
||||
com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
|
||||
parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
|
||||
.setKey(entry.getKey())
|
||||
.setValue(entry.getValue())
|
||||
.build();
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeMessageSize(8, parameters);
|
||||
}
|
||||
size += unknownFields.getSerializedSize();
|
||||
memoizedSize = size;
|
||||
return size;
|
||||
|
|
@ -564,6 +716,8 @@ public final class TraceProtocol {
|
|||
result = result && getViewpointId()
|
||||
.equals(other.getViewpointId());
|
||||
}
|
||||
result = result && internalGetParameters().equals(
|
||||
other.internalGetParameters());
|
||||
result = result && unknownFields.equals(other.unknownFields);
|
||||
return result;
|
||||
}
|
||||
|
|
@ -604,6 +758,10 @@ public final class TraceProtocol {
|
|||
hash = (37 * hash) + VIEWPOINTID_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getViewpointId().hashCode();
|
||||
}
|
||||
if (!internalGetParameters().getMap().isEmpty()) {
|
||||
hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
|
||||
hash = (53 * hash) + internalGetParameters().hashCode();
|
||||
}
|
||||
hash = (29 * hash) + unknownFields.hashCode();
|
||||
memoizedHashCode = hash;
|
||||
return hash;
|
||||
|
|
@ -698,6 +856,28 @@ public final class TraceProtocol {
|
|||
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_descriptor;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"rawtypes"})
|
||||
protected com.google.protobuf.MapField internalGetMapField(
|
||||
int number) {
|
||||
switch (number) {
|
||||
case 8:
|
||||
return internalGetParameters();
|
||||
default:
|
||||
throw new RuntimeException(
|
||||
"Invalid map field number: " + number);
|
||||
}
|
||||
}
|
||||
@SuppressWarnings({"rawtypes"})
|
||||
protected com.google.protobuf.MapField internalGetMutableMapField(
|
||||
int number) {
|
||||
switch (number) {
|
||||
case 8:
|
||||
return internalGetMutableParameters();
|
||||
default:
|
||||
throw new RuntimeException(
|
||||
"Invalid map field number: " + number);
|
||||
}
|
||||
}
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_fieldAccessorTable
|
||||
|
|
@ -736,6 +916,7 @@ public final class TraceProtocol {
|
|||
bitField0_ = (bitField0_ & ~0x00000020);
|
||||
viewpointId_ = "";
|
||||
bitField0_ = (bitField0_ & ~0x00000040);
|
||||
internalGetMutableParameters().clear();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -788,6 +969,8 @@ public final class TraceProtocol {
|
|||
to_bitField0_ |= 0x00000040;
|
||||
}
|
||||
result.viewpointId_ = viewpointId_;
|
||||
result.parameters_ = internalGetParameters();
|
||||
result.parameters_.makeImmutable();
|
||||
result.bitField0_ = to_bitField0_;
|
||||
onBuilt();
|
||||
return result;
|
||||
|
|
@ -859,6 +1042,8 @@ public final class TraceProtocol {
|
|||
viewpointId_ = other.viewpointId_;
|
||||
onChanged();
|
||||
}
|
||||
internalGetMutableParameters().mergeFrom(
|
||||
other.internalGetParameters());
|
||||
this.mergeUnknownFields(other.unknownFields);
|
||||
onChanged();
|
||||
return this;
|
||||
|
|
@ -1301,6 +1486,125 @@ public final class TraceProtocol {
|
|||
onChanged();
|
||||
return this;
|
||||
}
|
||||
|
||||
private com.google.protobuf.MapField<
|
||||
java.lang.String, java.lang.String> parameters_;
|
||||
private com.google.protobuf.MapField<java.lang.String, java.lang.String>
|
||||
internalGetParameters() {
|
||||
if (parameters_ == null) {
|
||||
return com.google.protobuf.MapField.emptyMapField(
|
||||
ParametersDefaultEntryHolder.defaultEntry);
|
||||
}
|
||||
return parameters_;
|
||||
}
|
||||
private com.google.protobuf.MapField<java.lang.String, java.lang.String>
|
||||
internalGetMutableParameters() {
|
||||
onChanged();;
|
||||
if (parameters_ == null) {
|
||||
parameters_ = com.google.protobuf.MapField.newMapField(
|
||||
ParametersDefaultEntryHolder.defaultEntry);
|
||||
}
|
||||
if (!parameters_.isMutable()) {
|
||||
parameters_ = parameters_.copy();
|
||||
}
|
||||
return parameters_;
|
||||
}
|
||||
|
||||
public int getParametersCount() {
|
||||
return internalGetParameters().getMap().size();
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public boolean containsParameters(
|
||||
java.lang.String key) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
return internalGetParameters().getMap().containsKey(key);
|
||||
}
|
||||
/**
|
||||
* Use {@link #getParametersMap()} instead.
|
||||
*/
|
||||
@java.lang.Deprecated
|
||||
public java.util.Map<java.lang.String, java.lang.String> getParameters() {
|
||||
return getParametersMap();
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public java.util.Map<java.lang.String, java.lang.String> getParametersMap() {
|
||||
return internalGetParameters().getMap();
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public java.lang.String getParametersOrDefault(
|
||||
java.lang.String key,
|
||||
java.lang.String defaultValue) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
java.util.Map<java.lang.String, java.lang.String> map =
|
||||
internalGetParameters().getMap();
|
||||
return map.containsKey(key) ? map.get(key) : defaultValue;
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public java.lang.String getParametersOrThrow(
|
||||
java.lang.String key) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
java.util.Map<java.lang.String, java.lang.String> map =
|
||||
internalGetParameters().getMap();
|
||||
if (!map.containsKey(key)) {
|
||||
throw new java.lang.IllegalArgumentException();
|
||||
}
|
||||
return map.get(key);
|
||||
}
|
||||
|
||||
public Builder clearParameters() {
|
||||
getMutableParameters().clear();
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public Builder removeParameters(
|
||||
java.lang.String key) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
getMutableParameters().remove(key);
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Use alternate mutation accessors instead.
|
||||
*/
|
||||
@java.lang.Deprecated
|
||||
public java.util.Map<java.lang.String, java.lang.String>
|
||||
getMutableParameters() {
|
||||
return internalGetMutableParameters().getMutableMap();
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
public Builder putParameters(
|
||||
java.lang.String key,
|
||||
java.lang.String value) {
|
||||
if (key == null) { throw new java.lang.NullPointerException(); }
|
||||
if (value == null) { throw new java.lang.NullPointerException(); }
|
||||
getMutableParameters().put(key, value);
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>map<string, string> parameters = 8;</code>
|
||||
*/
|
||||
|
||||
public Builder putAllParameters(
|
||||
java.util.Map<java.lang.String, java.lang.String> values) {
|
||||
getMutableParameters().putAll(values);
|
||||
return this;
|
||||
}
|
||||
public final Builder setUnknownFields(
|
||||
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||
return super.setUnknownFields(unknownFields);
|
||||
|
|
@ -4199,6 +4503,11 @@ public final class TraceProtocol {
|
|||
private static final
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internal_static_AckSpan_fieldAccessorTable;
|
||||
private static final com.google.protobuf.Descriptors.Descriptor
|
||||
internal_static_AckSpan_ParametersEntry_descriptor;
|
||||
private static final
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internal_static_AckSpan_ParametersEntry_fieldAccessorTable;
|
||||
private static final com.google.protobuf.Descriptors.Descriptor
|
||||
internal_static_RequestSpan_descriptor;
|
||||
private static final
|
||||
|
|
@ -4218,21 +4527,24 @@ public final class TraceProtocol {
|
|||
descriptor;
|
||||
static {
|
||||
java.lang.String[] descriptorData = {
|
||||
"\n\023TraceProtocol.proto\"\217\001\n\007AckSpan\022\017\n\007tra" +
|
||||
"\n\023TraceProtocol.proto\"\360\001\n\007AckSpan\022\017\n\007tra" +
|
||||
"ceId\030\001 \002(\t\022\023\n\013parentLevel\030\002 \001(\t\022\017\n\007level" +
|
||||
"Id\030\003 \002(\005\022\014\n\004cost\030\004 \002(\003\022\022\n\nstatusCode\030\005 \002" +
|
||||
"(\005\022\026\n\016exceptionStack\030\006 \001(\t\022\023\n\013viewpointI" +
|
||||
"d\030\007 \002(\t\"\375\002\n\013RequestSpan\022\017\n\007traceId\030\001 \002(\t" +
|
||||
"\022\023\n\013parentLevel\030\002 \001(\t\022\017\n\007levelId\030\003 \002(\005\022\023" +
|
||||
"\n\013viewPointId\030\004 \002(\t\022\021\n\tstartDate\030\005 \002(\003\022\024" +
|
||||
"\n\014spanTypeDesc\030\006 \002(\t\022\020\n\010callType\030\007 \002(\t\022\020" +
|
||||
"\n\010spanType\030\010 \002(\r\022\025\n\rapplicationId\030\t \002(\t\022" +
|
||||
"\016\n\006userId\030\n \002(\t\022\024\n\014bussinessKey\030\013 \001(\t\022\017\n",
|
||||
"\007agentId\030\014 \002(\t\0220\n\nparameters\030\r \003(\0132\034.Req" +
|
||||
"uestSpan.ParametersEntry\022\021\n\tprocessNo\030\016 " +
|
||||
"\002(\t\022\017\n\007address\030\017 \002(\t\0321\n\017ParametersEntry\022" +
|
||||
"\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B(\n&com.a" +
|
||||
"i.cloud.skywalking.protocol.proto"
|
||||
"d\030\007 \002(\t\022,\n\nparameters\030\010 \003(\0132\030.AckSpan.Pa" +
|
||||
"rametersEntry\0321\n\017ParametersEntry\022\013\n\003key\030" +
|
||||
"\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\375\002\n\013RequestSpan" +
|
||||
"\022\017\n\007traceId\030\001 \002(\t\022\023\n\013parentLevel\030\002 \001(\t\022\017" +
|
||||
"\n\007levelId\030\003 \002(\005\022\023\n\013viewPointId\030\004 \002(\t\022\021\n\t" +
|
||||
"startDate\030\005 \002(\003\022\024\n\014spanTypeDesc\030\006 \002(\t\022\020\n",
|
||||
"\010callType\030\007 \002(\t\022\020\n\010spanType\030\010 \002(\r\022\025\n\rapp" +
|
||||
"licationId\030\t \002(\t\022\016\n\006userId\030\n \002(\t\022\024\n\014buss" +
|
||||
"inessKey\030\013 \001(\t\022\017\n\007agentId\030\014 \002(\t\0220\n\nparam" +
|
||||
"eters\030\r \003(\0132\034.RequestSpan.ParametersEntr" +
|
||||
"y\022\021\n\tprocessNo\030\016 \002(\t\022\017\n\007address\030\017 \002(\t\0321\n" +
|
||||
"\017ParametersEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002" +
|
||||
" \001(\t:\0028\001B(\n&com.ai.cloud.skywalking.prot" +
|
||||
"ocol.proto"
|
||||
};
|
||||
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
||||
new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
|
||||
|
|
@ -4251,7 +4563,13 @@ public final class TraceProtocol {
|
|||
internal_static_AckSpan_fieldAccessorTable = new
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||
internal_static_AckSpan_descriptor,
|
||||
new java.lang.String[] { "TraceId", "ParentLevel", "LevelId", "Cost", "StatusCode", "ExceptionStack", "ViewpointId", });
|
||||
new java.lang.String[] { "TraceId", "ParentLevel", "LevelId", "Cost", "StatusCode", "ExceptionStack", "ViewpointId", "Parameters", });
|
||||
internal_static_AckSpan_ParametersEntry_descriptor =
|
||||
internal_static_AckSpan_descriptor.getNestedTypes().get(0);
|
||||
internal_static_AckSpan_ParametersEntry_fieldAccessorTable = new
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||
internal_static_AckSpan_ParametersEntry_descriptor,
|
||||
new java.lang.String[] { "Key", "Value", });
|
||||
internal_static_RequestSpan_descriptor =
|
||||
getDescriptor().getMessageTypes().get(1);
|
||||
internal_static_RequestSpan_fieldAccessorTable = new
|
||||
|
|
|
|||
|
|
@ -122,14 +122,6 @@ public class AckSpan extends AbstractDataSerializable {
|
|||
this.exceptionStack = exceptionStack;
|
||||
}
|
||||
|
||||
public Map<String, String> getParamters() {
|
||||
return paramters;
|
||||
}
|
||||
|
||||
public void setParamters(Map<String, String> paramters) {
|
||||
this.paramters = paramters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDataType() {
|
||||
return 2;
|
||||
|
|
@ -137,9 +129,15 @@ public class AckSpan extends AbstractDataSerializable {
|
|||
|
||||
@Override
|
||||
public byte[] getData() {
|
||||
return TraceProtocol.AckSpan.newBuilder().setTraceId(traceId).setParentLevel(parentLevel).
|
||||
TraceProtocol.AckSpan.Builder builder = TraceProtocol.AckSpan.newBuilder().setTraceId(traceId).setParentLevel(parentLevel).
|
||||
setLevelId(levelId).setCost(cost).setViewpointId(viewPointId).setStatusCode(statusCode)
|
||||
.setExceptionStack(exceptionStack).build().toByteArray();
|
||||
.setExceptionStack(exceptionStack);
|
||||
|
||||
if (paramters != null && paramters.size() > 0){
|
||||
builder.putAllParameters(paramters);
|
||||
}
|
||||
|
||||
return builder.build().toByteArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -154,6 +152,7 @@ public class AckSpan extends AbstractDataSerializable {
|
|||
ackSpan.setExceptionStack(ackSpanProtocol.getExceptionStack());
|
||||
ackSpan.setStatusCode((byte) ackSpanProtocol.getStatusCode());
|
||||
ackSpan.viewPointId = ackSpanProtocol.getViewpointId();
|
||||
ackSpan.paramters = ackSpanProtocol.getParametersMap();
|
||||
} catch (InvalidProtocolBufferException e) {
|
||||
throw new ConvertFailedException(e.getMessage(),e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ public class RequestSpan extends AbstractDataSerializable {
|
|||
}
|
||||
|
||||
if (parameters != null && parameters.size() > 0) {
|
||||
builder.getParametersMap().putAll(parameters);
|
||||
builder.putAllParameters(parameters);
|
||||
}
|
||||
|
||||
return builder.setCallType(callType).setApplicationId(applicationId).setUserId(userId).setAgentId(agentId)
|
||||
|
|
|
|||
|
|
@ -209,6 +209,9 @@ public class Span {
|
|||
}
|
||||
|
||||
public void setInvokeResult(String result){
|
||||
if (result == null){
|
||||
result = "";
|
||||
}
|
||||
this.parameters.put(INVOKE_RESULT_PARAMETER_KEY, result);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ message AckSpan {
|
|||
required int32 statusCode = 5;
|
||||
optional string exceptionStack = 6;
|
||||
required string viewpointId = 7;
|
||||
map<string,string> parameters = 8;
|
||||
}
|
||||
|
||||
message RequestSpan {
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public abstract class AbstractSpanProcessor implements IProcessor {
|
|||
|
||||
@Override
|
||||
public void process(List<AbstractDataSerializable> serializedObjects) {
|
||||
//doAlarm(serializedObjects);
|
||||
doAlarm(serializedObjects);
|
||||
doSaveHBase(connection, serializedObjects);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ public class AckSpanProcessor extends AbstractSpanProcessor {
|
|||
String columnName;
|
||||
for (AbstractDataSerializable serializedObject : serializedObjects) {
|
||||
AckSpan ackSpan = (AckSpan) serializedObject;
|
||||
System.out.println(ackSpan.getTraceId() + "-ACK:" + ackSpan.getViewPointId());
|
||||
Put put = new Put(Bytes.toBytes(ackSpan.getTraceId()), getTSBySpanTraceId(ackSpan.getTraceId()));
|
||||
if (StringUtils.isEmpty(ackSpan.getParentLevel().trim())) {
|
||||
columnName = ackSpan.getLevelId() + "";
|
||||
|
|
|
|||
|
|
@ -31,9 +31,6 @@ public class RequestSpanProcessor extends AbstractSpanProcessor {
|
|||
String columnName;
|
||||
for (AbstractDataSerializable serializedObject : serializedObjects) {
|
||||
RequestSpan requestSpan = (RequestSpan) serializedObject;
|
||||
System.out.println(
|
||||
requestSpan.getTraceId() + ":" + requestSpan.getParentLevel() + "." + requestSpan.getLevelId() + ":"
|
||||
+ requestSpan.getViewPointId());
|
||||
Put put = new Put(Bytes.toBytes(requestSpan.getTraceId()), getTSBySpanTraceId(requestSpan.getTraceId()));
|
||||
if (StringUtils.isEmpty(requestSpan.getParentLevel().trim())) {
|
||||
columnName = requestSpan.getLevelId() + "";
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ public class Constants {
|
|||
put("J", "JDBC");
|
||||
put("W", "WEB");
|
||||
put("D", "DUBBO");
|
||||
put("L", "LOCAL");
|
||||
put("U", "UNKNOWN");
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue