Loading skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/TraceSpanNode.java +71 −25 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import java.util.List; import com.ai.cloud.skywalking.analysis.chainbuild.exception.TraceSpanTreeSerializeException; import com.ai.cloud.skywalking.analysis.chainbuild.util.StringUtil; import com.ai.cloud.skywalking.protocol.CallType; import com.ai.cloud.skywalking.protocol.Span; Loading @@ -13,6 +16,16 @@ public class TraceSpanNode { protected TraceSpanNode sub = null; protected String prevNodeRefToken = null; protected String nextNodeRefToken = null; protected String parentNodeRefToken = null; protected String subNodeRefToken = null; protected String nodeRefToken = null; protected boolean visualNode = true; protected String parentLevel; Loading Loading @@ -57,8 +70,8 @@ public class TraceSpanNode { */ protected String applicationId = ""; public TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, Span span) { this(parent, sub, prev, next); public TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, Span span, List<TraceSpanNode> spanContainer) { this(parent, sub, prev, next, spanContainer); this.visualNode = false; this.parentLevel = span.getParentLevel(); this.levelId = span.getLevelId(); Loading @@ -75,30 +88,33 @@ public class TraceSpanNode { this.spanType = span.getSpanType(); this.businessKey = span.getBusinessKey(); this.applicationId = span.getApplicationId(); //TODO: to set nodeToken } public TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next){ protected TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, List<TraceSpanNode> spanContainer){ this.visualNode = true; this.parent = parent; this.setParent(parent); if(parent != null){ parent.sub = this; parent.setSub(this); } this.sub = sub; this.setSub(sub); if(sub != null){ sub.parent = this; sub.setParent(this); } this.prev = prev; this.setPrev(prev); if(prev != null){ prev.next = this; prev.setNext(this); } this.next = next; this.setNext(next); if(next != null){ next.prev = this; next.setPrev(this); } spanContainer.add(this); } protected TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, String parentLevelId, int levelId){ this(parent, sub, prev, next); protected TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, String parentLevelId, int levelId, List<TraceSpanNode> spanContainer){ this(parent, sub, prev, next, spanContainer); this.parentLevel = parentLevelId; this.levelId = levelId; this.callTimes = 0; Loading Loading @@ -134,30 +150,38 @@ public class TraceSpanNode { } } TraceSpanNode next(){ return this.next; } TraceSpanNode sub(){ return this.sub; } public TraceSpanNode getPrev() { public TraceSpanNode prev() { return prev; } public TraceSpanNode getNext() { public TraceSpanNode next() { return next; } public TraceSpanNode getParent() { public TraceSpanNode parent() { return parent; } public TraceSpanNode getSub() { public TraceSpanNode sub() { return sub; } public void setPrev(TraceSpanNode prev) { this.prev = prev; } public void setNext(TraceSpanNode next) { this.next = next; } public void setParent(TraceSpanNode parent) { this.parent = parent; } public void setSub(TraceSpanNode sub) { this.sub = sub; } public boolean isVisualNode() { return visualNode; } Loading Loading @@ -197,4 +221,26 @@ public class TraceSpanNode { public String getApplicationId() { return applicationId; } public String getNodeRefToken() throws TraceSpanTreeSerializeException { if(StringUtil.isBlank(nodeRefToken)){ throw new TraceSpanTreeSerializeException("parentLevel=" + parentLevel + ", levelId=" + levelId + ", viewPointId=" + viewPointId + ", node ref token is null."); } return nodeRefToken; } void serializeRef() throws TraceSpanTreeSerializeException{ if(prev != null){ prevNodeRefToken = prev.getNodeRefToken(); } if(parent != null){ parentNodeRefToken = parent.getNodeRefToken(); } if(next != null){ nextNodeRefToken = next.getNodeRefToken(); } if(sub != null){ subNodeRefToken = sub.getNodeRefToken(); } } } skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/TraceSpanTree.java +15 −4 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; Loading @@ -8,6 +9,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ai.cloud.skywalking.analysis.chainbuild.exception.BuildTraceSpanTreeException; import com.ai.cloud.skywalking.analysis.chainbuild.exception.TraceSpanTreeSerializeException; import com.ai.cloud.skywalking.analysis.chainbuild.util.StringUtil; import com.ai.cloud.skywalking.analysis.chainbuild.util.TokenGenerator; import com.ai.cloud.skywalking.protocol.Span; Loading @@ -21,6 +23,8 @@ public class TraceSpanTree { private TraceSpanNode treeRoot; private List<TraceSpanNode> spanContainer = new ArrayList<TraceSpanNode>(); public TraceSpanTree() { } Loading @@ -40,7 +44,7 @@ public class TraceSpanTree { } }); cid = generateChainToken(spanList.get(0)); treeRoot = new TraceSpanNode(null, null, null, null, spanList.get(0)); treeRoot = new TraceSpanNode(null, null, null, null, spanList.get(0), spanContainer); if (spanList.size() > 1) { for (int i = 1; i < spanList.size(); i++) { this.build(spanList.get(i)); Loading @@ -65,7 +69,7 @@ public class TraceSpanTree { TraceSpanNode foundNode = findNodeAndCreateVisualNodeIfNess( span.getParentLevel(), span.getLevelId() - 1); if (foundNode != null) { new TraceSpanNode(null, null, foundNode, foundNode.next(), span); new TraceSpanNode(null, null, foundNode, foundNode.next(), span, spanContainer); } } else { /** Loading Loading @@ -101,7 +105,7 @@ public class TraceSpanTree { } else { // create visual next node currentNode = new VisualTraceSpanNode(null, null, currentNode, null, contextParentLevelId, i); currentNode, null, contextParentLevelId, i, spanContainer); } } contextParentLevelId = contextParentLevelId == "" ? ("" + currentLevelInt) Loading @@ -111,7 +115,7 @@ public class TraceSpanTree { } else { // create visual sub node currentNode = new VisualTraceSpanNode(currentNode, null, null, null, contextParentLevelId, 0); null, contextParentLevelId, 0, spanContainer); } } Loading @@ -131,4 +135,11 @@ public class TraceSpanTree { } } private void beforeSerialize() throws TraceSpanTreeSerializeException{ for(TraceSpanNode treeNode : spanContainer){ treeNode.serializeRef(); } } } skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/VisualTraceSpanNode.java +6 −2 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import java.util.List; public class VisualTraceSpanNode extends TraceSpanNode { protected VisualTraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, String parentLevelId, int levelId) { super(parent, sub, prev, next, parentLevelId, levelId); int levelId, List<TraceSpanNode> spanContainer) { super(parent, sub, prev, next, parentLevelId, levelId, spanContainer); //TODO: to set nodeToken } Loading skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/exception/TraceSpanTreeSerializeException.java 0 → 100644 +13 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.exception; public class TraceSpanTreeSerializeException extends Exception { private static final long serialVersionUID = 7857716041262993579L; public TraceSpanTreeSerializeException(String msg){ super(msg); } public TraceSpanTreeSerializeException(String msg, Exception cause){ super(msg, cause); } } Loading
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/TraceSpanNode.java +71 −25 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import java.util.List; import com.ai.cloud.skywalking.analysis.chainbuild.exception.TraceSpanTreeSerializeException; import com.ai.cloud.skywalking.analysis.chainbuild.util.StringUtil; import com.ai.cloud.skywalking.protocol.CallType; import com.ai.cloud.skywalking.protocol.Span; Loading @@ -13,6 +16,16 @@ public class TraceSpanNode { protected TraceSpanNode sub = null; protected String prevNodeRefToken = null; protected String nextNodeRefToken = null; protected String parentNodeRefToken = null; protected String subNodeRefToken = null; protected String nodeRefToken = null; protected boolean visualNode = true; protected String parentLevel; Loading Loading @@ -57,8 +70,8 @@ public class TraceSpanNode { */ protected String applicationId = ""; public TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, Span span) { this(parent, sub, prev, next); public TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, Span span, List<TraceSpanNode> spanContainer) { this(parent, sub, prev, next, spanContainer); this.visualNode = false; this.parentLevel = span.getParentLevel(); this.levelId = span.getLevelId(); Loading @@ -75,30 +88,33 @@ public class TraceSpanNode { this.spanType = span.getSpanType(); this.businessKey = span.getBusinessKey(); this.applicationId = span.getApplicationId(); //TODO: to set nodeToken } public TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next){ protected TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, List<TraceSpanNode> spanContainer){ this.visualNode = true; this.parent = parent; this.setParent(parent); if(parent != null){ parent.sub = this; parent.setSub(this); } this.sub = sub; this.setSub(sub); if(sub != null){ sub.parent = this; sub.setParent(this); } this.prev = prev; this.setPrev(prev); if(prev != null){ prev.next = this; prev.setNext(this); } this.next = next; this.setNext(next); if(next != null){ next.prev = this; next.setPrev(this); } spanContainer.add(this); } protected TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, String parentLevelId, int levelId){ this(parent, sub, prev, next); protected TraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, String parentLevelId, int levelId, List<TraceSpanNode> spanContainer){ this(parent, sub, prev, next, spanContainer); this.parentLevel = parentLevelId; this.levelId = levelId; this.callTimes = 0; Loading Loading @@ -134,30 +150,38 @@ public class TraceSpanNode { } } TraceSpanNode next(){ return this.next; } TraceSpanNode sub(){ return this.sub; } public TraceSpanNode getPrev() { public TraceSpanNode prev() { return prev; } public TraceSpanNode getNext() { public TraceSpanNode next() { return next; } public TraceSpanNode getParent() { public TraceSpanNode parent() { return parent; } public TraceSpanNode getSub() { public TraceSpanNode sub() { return sub; } public void setPrev(TraceSpanNode prev) { this.prev = prev; } public void setNext(TraceSpanNode next) { this.next = next; } public void setParent(TraceSpanNode parent) { this.parent = parent; } public void setSub(TraceSpanNode sub) { this.sub = sub; } public boolean isVisualNode() { return visualNode; } Loading Loading @@ -197,4 +221,26 @@ public class TraceSpanNode { public String getApplicationId() { return applicationId; } public String getNodeRefToken() throws TraceSpanTreeSerializeException { if(StringUtil.isBlank(nodeRefToken)){ throw new TraceSpanTreeSerializeException("parentLevel=" + parentLevel + ", levelId=" + levelId + ", viewPointId=" + viewPointId + ", node ref token is null."); } return nodeRefToken; } void serializeRef() throws TraceSpanTreeSerializeException{ if(prev != null){ prevNodeRefToken = prev.getNodeRefToken(); } if(parent != null){ parentNodeRefToken = parent.getNodeRefToken(); } if(next != null){ nextNodeRefToken = next.getNodeRefToken(); } if(sub != null){ subNodeRefToken = sub.getNodeRefToken(); } } }
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/TraceSpanTree.java +15 −4 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; Loading @@ -8,6 +9,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ai.cloud.skywalking.analysis.chainbuild.exception.BuildTraceSpanTreeException; import com.ai.cloud.skywalking.analysis.chainbuild.exception.TraceSpanTreeSerializeException; import com.ai.cloud.skywalking.analysis.chainbuild.util.StringUtil; import com.ai.cloud.skywalking.analysis.chainbuild.util.TokenGenerator; import com.ai.cloud.skywalking.protocol.Span; Loading @@ -21,6 +23,8 @@ public class TraceSpanTree { private TraceSpanNode treeRoot; private List<TraceSpanNode> spanContainer = new ArrayList<TraceSpanNode>(); public TraceSpanTree() { } Loading @@ -40,7 +44,7 @@ public class TraceSpanTree { } }); cid = generateChainToken(spanList.get(0)); treeRoot = new TraceSpanNode(null, null, null, null, spanList.get(0)); treeRoot = new TraceSpanNode(null, null, null, null, spanList.get(0), spanContainer); if (spanList.size() > 1) { for (int i = 1; i < spanList.size(); i++) { this.build(spanList.get(i)); Loading @@ -65,7 +69,7 @@ public class TraceSpanTree { TraceSpanNode foundNode = findNodeAndCreateVisualNodeIfNess( span.getParentLevel(), span.getLevelId() - 1); if (foundNode != null) { new TraceSpanNode(null, null, foundNode, foundNode.next(), span); new TraceSpanNode(null, null, foundNode, foundNode.next(), span, spanContainer); } } else { /** Loading Loading @@ -101,7 +105,7 @@ public class TraceSpanTree { } else { // create visual next node currentNode = new VisualTraceSpanNode(null, null, currentNode, null, contextParentLevelId, i); currentNode, null, contextParentLevelId, i, spanContainer); } } contextParentLevelId = contextParentLevelId == "" ? ("" + currentLevelInt) Loading @@ -111,7 +115,7 @@ public class TraceSpanTree { } else { // create visual sub node currentNode = new VisualTraceSpanNode(currentNode, null, null, null, contextParentLevelId, 0); null, contextParentLevelId, 0, spanContainer); } } Loading @@ -131,4 +135,11 @@ public class TraceSpanTree { } } private void beforeSerialize() throws TraceSpanTreeSerializeException{ for(TraceSpanNode treeNode : spanContainer){ treeNode.serializeRef(); } } }
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/VisualTraceSpanNode.java +6 −2 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import java.util.List; public class VisualTraceSpanNode extends TraceSpanNode { protected VisualTraceSpanNode(TraceSpanNode parent, TraceSpanNode sub, TraceSpanNode prev, TraceSpanNode next, String parentLevelId, int levelId) { super(parent, sub, prev, next, parentLevelId, levelId); int levelId, List<TraceSpanNode> spanContainer) { super(parent, sub, prev, next, parentLevelId, levelId, spanContainer); //TODO: to set nodeToken } Loading
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/exception/TraceSpanTreeSerializeException.java 0 → 100644 +13 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.exception; public class TraceSpanTreeSerializeException extends Exception { private static final long serialVersionUID = 7857716041262993579L; public TraceSpanTreeSerializeException(String msg){ super(msg); } public TraceSpanTreeSerializeException(String msg, Exception cause){ super(msg, cause); } }