提交 b08470b8 编写于 作者: A ascrutae

修复部分问题

上级 7d6e83d6
...@@ -53,7 +53,7 @@ public class Config { ...@@ -53,7 +53,7 @@ public class Config {
public static String DRIVER_CLASS = "com.mysql.jdbc.Driver"; public static String DRIVER_CLASS = "com.mysql.jdbc.Driver";
public static String URL = "jdbc:mysql://127.0.0.1:3316/test"; public static String URL = "jdbc:mysql://127.0.0.1:3307/test";
public static int MAX_IDLE = 1; public static int MAX_IDLE = 1;
...@@ -86,7 +86,7 @@ public class Config { ...@@ -86,7 +86,7 @@ public class Config {
public static class MailSenderInfo { public static class MailSenderInfo {
public static String MAIL_HOST = "mail.com"; public static String MAIL_HOST = "mail.qq.com";
public static String TRANSPORT_PROTOCOL = "smtp"; public static String TRANSPORT_PROTOCOL = "smtp";
...@@ -94,11 +94,11 @@ public class Config { ...@@ -94,11 +94,11 @@ public class Config {
public static boolean SSL_ENABLE = false; public static boolean SSL_ENABLE = false;
public static String USERNAME = "username"; public static String USERNAME = "skywalking@foxmail.com";
public static String PASSWORD = "password"; public static String PASSWORD = "tcaeuhuslkjlebjg";
public static String SENDER = "sender@mail.com"; public static String SENDER = "skywalking@foxmail.com";
} }
......
...@@ -9,6 +9,8 @@ import javax.mail.*; ...@@ -9,6 +9,8 @@ import javax.mail.*;
import javax.mail.internet.AddressException; import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress; import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties; import java.util.Properties;
public class MailSender { public class MailSender {
...@@ -24,7 +26,7 @@ public class MailSender { ...@@ -24,7 +26,7 @@ public class MailSender {
config.setProperty("mail.transport.protocol", Config.MailSenderInfo.TRANSPORT_PROTOCOL); config.setProperty("mail.transport.protocol", Config.MailSenderInfo.TRANSPORT_PROTOCOL);
config.setProperty("mail.smtp.auth", String.valueOf(Config.MailSenderInfo.SMTP_AUTH)); config.setProperty("mail.smtp.auth", String.valueOf(Config.MailSenderInfo.SMTP_AUTH));
config.setProperty("mail.smtp.socketFactory.port", "465"); config.setProperty("mail.smtp.socketFactory.port", "587");
config.setProperty("mail.debug", "true"); config.setProperty("mail.debug", "true");
//config.setProperty("mail.smtp.ssl.enable", "true"); //config.setProperty("mail.smtp.ssl.enable", "true");
if (Config.MailSenderInfo.SSL_ENABLE) { if (Config.MailSenderInfo.SSL_ENABLE) {
...@@ -56,11 +58,14 @@ public class MailSender { ...@@ -56,11 +58,14 @@ public class MailSender {
} }
message.addRecipients(Message.RecipientType.TO, recipientAccountArray); message.addRecipients(Message.RecipientType.TO, recipientAccountArray);
if (ccList != null && ccList.length > 0) { if (ccList != null && ccList.length > 0) {
InternetAddress[] ccAccountArray = new InternetAddress[ccList.length]; List<InternetAddress> ccAccountArray = new ArrayList<InternetAddress>();
for (int i = 0; i < ccList.length; i++) { for (int i = 0; i < ccList.length; i++) {
ccAccountArray[i] = new InternetAddress(ccList[i]); if (ccList[i] != null && ccList[i].length() > 0)
ccAccountArray.add(new InternetAddress(ccList[i]));
}
if (ccAccountArray.size() > 0) {
message.addRecipients(Message.RecipientType.CC, ccAccountArray.toArray(new InternetAddress[ccAccountArray.size()]));
} }
message.addRecipients(Message.RecipientType.CC, ccAccountArray);
} }
message.setSubject(title); message.setSubject(title);
message.setContent(content, "text/html;charset=UTF-8"); message.setContent(content, "text/html;charset=UTF-8");
......
...@@ -69,6 +69,12 @@ ...@@ -69,6 +69,12 @@
<artifactId>skywalking-toolkit-log4j-2.x-activation</artifactId> <artifactId>skywalking-toolkit-log4j-2.x-activation</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.a.eye</groupId>
<artifactId>skywalking-toolkit-logback-1.x-activation</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>${artifactId}</finalName> <finalName>${artifactId}</finalName>
......
...@@ -158,7 +158,7 @@ public class Span { ...@@ -158,7 +158,7 @@ public class Span {
public RequestSpan.Builder buildRequestSpan(RequestSpan.Builder builder) { public RequestSpan.Builder buildRequestSpan(RequestSpan.Builder builder) {
builder.setTraceId(this.traceId).setParentLevel(this.parentLevel).setLevelId(this.levelId).setSpanType(this.spanType).setApplicationCode(Config.SkyWalking.APPLICATION_CODE) builder.setTraceId(this.traceId).setParentLevel(this.parentLevel).setLevelId(this.levelId).setSpanType(this.spanType).setApplicationCode(Config.SkyWalking.APPLICATION_CODE)
.setUsername(Config.SkyWalking.USERNAME).setRouteKey(routeKey); .setStartDate(this.startDate).setUsername(Config.SkyWalking.USERNAME).setRouteKey(routeKey);
return builder; return builder;
} }
......
...@@ -30,5 +30,17 @@ ...@@ -30,5 +30,17 @@
<version>3.2.0</version> <version>3.2.0</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.a.eye</groupId>
<artifactId>skywalking-util</artifactId>
<version>2.0-2016</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.a.eye.skywalking.storage.alarm; package com.a.eye.skywalking.routing.alarm;
import com.a.eye.skywalking.storage.alarm.checker.*; import com.a.eye.skywalking.routing.alarm.checker.*;
import com.a.eye.skywalking.storage.alarm.sender.AlarmMessageSenderFactory; import com.a.eye.skywalking.routing.alarm.sender.AlarmMessageSenderFactory;
import com.a.eye.skywalking.storage.data.spandata.AckSpanData; import com.a.eye.skywalking.routing.disruptor.ack.AckSpanHolder;
import com.a.eye.skywalking.util.TraceIdUtil; import com.a.eye.skywalking.util.TraceIdUtil;
import com.lmax.disruptor.EventHandler; import com.lmax.disruptor.EventHandler;
...@@ -12,7 +12,7 @@ import java.util.List; ...@@ -12,7 +12,7 @@ import java.util.List;
/** /**
* Created by xin on 2016/12/8. * Created by xin on 2016/12/8.
*/ */
public class SpanAlarmHandler implements EventHandler<AckSpanData> { public class SpanAlarmHandler implements EventHandler<AckSpanHolder> {
private List<ISpanChecker> spanCheckers = new ArrayList<ISpanChecker>(); private List<ISpanChecker> spanCheckers = new ArrayList<ISpanChecker>();
public SpanAlarmHandler() { public SpanAlarmHandler() {
...@@ -21,16 +21,16 @@ public class SpanAlarmHandler implements EventHandler<AckSpanData> { ...@@ -21,16 +21,16 @@ public class SpanAlarmHandler implements EventHandler<AckSpanData> {
spanCheckers.add(new ExecuteTimePossibleErrorChecker()); spanCheckers.add(new ExecuteTimePossibleErrorChecker());
} }
private String generateAlarmMessageKey(AckSpanData span, FatalReason reason) { private String generateAlarmMessageKey(AckSpanHolder span, FatalReason reason) {
return span.getUserName() + "-" + span.getApplicationCode() + "-" + (System.currentTimeMillis() / (10000 * 6)) + reason.getDetail(); return span.getAckSpan().getUsername() + "-" + span.getAckSpan().getApplicationCode() + "-" + (System.currentTimeMillis() / (10000 * 6)) + reason.getDetail();
} }
@Override @Override
public void onEvent(AckSpanData spanData, long sequence, boolean endOfBatch) throws Exception { public void onEvent(AckSpanHolder spanData, long sequence, boolean endOfBatch) throws Exception {
for (ISpanChecker spanChecker : spanCheckers) { for (ISpanChecker spanChecker : spanCheckers) {
CheckResult result = spanChecker.check(spanData); CheckResult result = spanChecker.check(spanData);
if (!result.isPassed()) { if (!result.isPassed()) {
AlarmMessageSenderFactory.getSender().send(generateAlarmMessageKey(spanData, result.getFatalReason()), TraceIdUtil.formatTraceId(spanData.getTraceId()), result.getMessage()); AlarmMessageSenderFactory.getSender().send(generateAlarmMessageKey(spanData, result.getFatalReason()), TraceIdUtil.formatTraceId(spanData.getAckSpan().getTraceId()), result.getMessage());
} }
} }
} }
......
package com.a.eye.skywalking.storage.alarm.checker; package com.a.eye.skywalking.routing.alarm.checker;
/** /**
* Created by xin on 2016/12/8. * Created by xin on 2016/12/8.
......
package com.a.eye.skywalking.storage.alarm.checker; package com.a.eye.skywalking.routing.alarm.checker;
import com.a.eye.skywalking.storage.config.Config; import com.a.eye.skywalking.routing.config.Config;
import com.a.eye.skywalking.storage.data.spandata.AckSpanData; import com.a.eye.skywalking.routing.disruptor.ack.AckSpanHolder;
public class ExceptionChecker implements ISpanChecker { public class ExceptionChecker implements ISpanChecker {
@Override @Override
public CheckResult check(AckSpanData span) { public CheckResult check(AckSpanHolder span) {
if (span.getStatusCode() != 1) if (span.getAckSpan().getStatusCode() != 1)
return new CheckResult(); return new CheckResult();
String exceptionStack = span.getExceptionStack(); String exceptionStack = span.getAckSpan().getExceptionStack();
if (exceptionStack == null) { if (exceptionStack == null) {
exceptionStack = ""; exceptionStack = "";
} else if (exceptionStack.length() > Config.Alarm.ALARM_EXCEPTION_STACK_LENGTH) { } else if (exceptionStack.length() > Config.Alarm.ALARM_EXCEPTION_STACK_LENGTH) {
......
package com.a.eye.skywalking.storage.alarm.checker; package com.a.eye.skywalking.routing.alarm.checker;
import com.a.eye.skywalking.network.grpc.AckSpan; import com.a.eye.skywalking.routing.disruptor.ack.AckSpanHolder;
import com.a.eye.skywalking.storage.data.spandata.AckSpanData;
/** /**
* Created by xin on 2016/12/8. * Created by xin on 2016/12/8.
...@@ -9,8 +8,8 @@ import com.a.eye.skywalking.storage.data.spandata.AckSpanData; ...@@ -9,8 +8,8 @@ import com.a.eye.skywalking.storage.data.spandata.AckSpanData;
public abstract class ExecuteTimeChecker implements ISpanChecker { public abstract class ExecuteTimeChecker implements ISpanChecker {
@Override @Override
public CheckResult check(AckSpanData span) { public CheckResult check(AckSpanHolder span) {
long cost = span.getCost(); long cost = span.getAckSpan().getCost();
if (isOverThreshold(cost)) { if (isOverThreshold(cost)) {
return new CheckResult(getFatalLevel(), generateAlarmMessage(span)); return new CheckResult(getFatalLevel(), generateAlarmMessage(span));
} }
...@@ -22,8 +21,8 @@ public abstract class ExecuteTimeChecker implements ISpanChecker { ...@@ -22,8 +21,8 @@ public abstract class ExecuteTimeChecker implements ISpanChecker {
protected abstract FatalReason getFatalLevel(); protected abstract FatalReason getFatalLevel();
protected String generateAlarmMessage(AckSpanData span) { protected String generateAlarmMessage(AckSpanHolder span) {
return span.getViewPointId() + " cost " + span.getCost() + " ms."; return span.getAckSpan().getViewpointId() + " cost " + span.getAckSpan().getCost() + " ms.";
} }
......
package com.a.eye.skywalking.storage.alarm.checker; package com.a.eye.skywalking.routing.alarm.checker;
/** /**
* Created by xin on 2016/12/8. * Created by xin on 2016/12/8.
*/ */
public enum FatalReason { public enum FatalReason {
EXCEPTION_ERROR(""), EXECUTE_TIME_ERROR("-ExecuteTime-PossibleError"), EXECUTE_TIME_WARNING("-ExecuteTime-Warning"); EXCEPTION_ERROR(""), EXECUTE_TIME_ERROR("-ExecuteTime-PossibleError"), EXECUTE_TIME_WARNING("-ExecuteTime-Warning");
private String detail; private String detail;
......
package com.a.eye.skywalking.storage.alarm.checker; package com.a.eye.skywalking.routing.alarm.checker;
import com.a.eye.skywalking.storage.data.spandata.AckSpanData;
import com.a.eye.skywalking.routing.disruptor.ack.AckSpanHolder;
/** /**
* Created by xin on 2016/12/8. * Created by xin on 2016/12/8.
*/ */
public interface ISpanChecker { public interface ISpanChecker {
CheckResult check(AckSpanData span); CheckResult check(AckSpanHolder span);
} }
package com.a.eye.skywalking.storage.alarm.sender; package com.a.eye.skywalking.routing.alarm.sender;
import com.a.eye.skywalking.logging.api.ILog; import com.a.eye.skywalking.logging.api.ILog;
import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.logging.api.LogManager;
import com.a.eye.skywalking.storage.config.Config; import com.a.eye.skywalking.routing.config.Config;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
/** /**
......
package com.a.eye.skywalking.storage.alarm.sender; package com.a.eye.skywalking.routing.alarm.sender;
import com.a.eye.skywalking.logging.api.ILog; import com.a.eye.skywalking.logging.api.ILog;
import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.logging.api.LogManager;
import com.a.eye.skywalking.storage.config.Config; import com.a.eye.skywalking.routing.config.Config;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPool;
......
...@@ -35,4 +35,24 @@ public class Config { ...@@ -35,4 +35,24 @@ public class Config {
public static int FLUSH_SIZE = 100; public static int FLUSH_SIZE = 100;
} }
public static class Alarm {
public static String REDIS_SERVER = "127.0.0.1:6379";
public static boolean ALARM_OFF_FLAG = false;
public static int ALARM_EXCEPTION_STACK_LENGTH = 300;
public static long ALARM_REDIS_INSPECTOR_INTERVAL = 100;
public static int REDIS_MAX_IDLE = 10;
public static int REDIS_MIN_IDLE = 1;
public static int REDIS_MAX_TOTAL = 30;
public static int ALARM_EXPIRE_SECONDS = 1000 * 60 * 90;
}
} }
...@@ -5,6 +5,7 @@ import com.a.eye.skywalking.health.report.HeathReading; ...@@ -5,6 +5,7 @@ import com.a.eye.skywalking.health.report.HeathReading;
import com.a.eye.skywalking.logging.api.ILog; import com.a.eye.skywalking.logging.api.ILog;
import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.logging.api.LogManager;
import com.a.eye.skywalking.network.grpc.AckSpan; import com.a.eye.skywalking.network.grpc.AckSpan;
import com.a.eye.skywalking.routing.alarm.SpanAlarmHandler;
import com.a.eye.skywalking.routing.config.Config; import com.a.eye.skywalking.routing.config.Config;
import com.a.eye.skywalking.routing.disruptor.AbstractSpanDisruptor; import com.a.eye.skywalking.routing.disruptor.AbstractSpanDisruptor;
import com.lmax.disruptor.InsufficientCapacityException; import com.lmax.disruptor.InsufficientCapacityException;
...@@ -25,7 +26,7 @@ public class AckSpanDisruptor extends AbstractSpanDisruptor { ...@@ -25,7 +26,7 @@ public class AckSpanDisruptor extends AbstractSpanDisruptor {
public AckSpanDisruptor(String connectionURL) { public AckSpanDisruptor(String connectionURL) {
ackSpanDisruptor = new Disruptor<AckSpanHolder>(new AckSpanFactory(), Config.Disruptor.BUFFER_SIZE, DaemonThreadFactory.INSTANCE); ackSpanDisruptor = new Disruptor<AckSpanHolder>(new AckSpanFactory(), Config.Disruptor.BUFFER_SIZE, DaemonThreadFactory.INSTANCE);
ackSpanEventHandler = new RouteAckSpanBufferEventHandler(connectionURL); ackSpanEventHandler = new RouteAckSpanBufferEventHandler(connectionURL);
ackSpanDisruptor.handleEventsWith(ackSpanEventHandler); ackSpanDisruptor.handleEventsWith(ackSpanEventHandler, new SpanAlarmHandler());
ackSpanDisruptor.start(); ackSpanDisruptor.start();
ackSpanRingBuffer = ackSpanDisruptor.getRingBuffer(); ackSpanRingBuffer = ackSpanDisruptor.getRingBuffer();
} }
......
...@@ -8,6 +8,13 @@ import com.a.eye.skywalking.network.grpc.AckSpan; ...@@ -8,6 +8,13 @@ import com.a.eye.skywalking.network.grpc.AckSpan;
public class AckSpanHolder { public class AckSpanHolder {
private AckSpan ackSpan; private AckSpan ackSpan;
public AckSpanHolder() {
}
public AckSpanHolder(AckSpan ackSpan) {
this.ackSpan = ackSpan;
}
public void setAckSpan(AckSpan ackSpan) { public void setAckSpan(AckSpan ackSpan) {
this.ackSpan = ackSpan; this.ackSpan = ackSpan;
} }
......
...@@ -2,9 +2,10 @@ package com.a.eye.skywalking.storage.alarm; ...@@ -2,9 +2,10 @@ package com.a.eye.skywalking.storage.alarm;
import com.a.eye.skywalking.network.grpc.AckSpan; import com.a.eye.skywalking.network.grpc.AckSpan;
import com.a.eye.skywalking.network.grpc.TraceId; import com.a.eye.skywalking.network.grpc.TraceId;
import com.a.eye.skywalking.storage.alarm.sender.AlarmMessageSender; import com.a.eye.skywalking.routing.alarm.SpanAlarmHandler;
import com.a.eye.skywalking.storage.alarm.sender.AlarmMessageSenderFactory; import com.a.eye.skywalking.routing.alarm.sender.AlarmMessageSender;
import com.a.eye.skywalking.storage.data.spandata.AckSpanData; import com.a.eye.skywalking.routing.alarm.sender.AlarmMessageSenderFactory;
import com.a.eye.skywalking.routing.disruptor.ack.AckSpanHolder;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -25,10 +26,10 @@ public class SpanAlarmHandlerTest { ...@@ -25,10 +26,10 @@ public class SpanAlarmHandlerTest {
private AlarmMessageSender messageHandler; private AlarmMessageSender messageHandler;
@InjectMocks @InjectMocks
private SpanAlarmHandler handler; private SpanAlarmHandler handler;
private AckSpanData normalAckSpan; private AckSpanHolder normalAckSpan;
private AckSpanData costMuchSpan; private AckSpanHolder costMuchSpan;
private AckSpanData costTooMuchSpan; private AckSpanHolder costTooMuchSpan;
private AckSpanData exceptionSpan; private AckSpanHolder exceptionSpan;
@Before @Before
public void setUp() { public void setUp() {
...@@ -40,10 +41,10 @@ public class SpanAlarmHandlerTest { ...@@ -40,10 +41,10 @@ public class SpanAlarmHandlerTest {
.addSegments(2016).addSegments(startTime).addSegments(2).addSegments(100).addSegments(30) .addSegments(2016).addSegments(startTime).addSegments(2).addSegments(100).addSegments(30)
.addSegments(1).build()); .addSegments(1).build());
normalAckSpan = new AckSpanData(builder.build()); normalAckSpan = new AckSpanHolder(builder.build());
costMuchSpan = new AckSpanData(builder.setCost(600).build()); costMuchSpan = new AckSpanHolder(builder.setCost(600).build());
costTooMuchSpan = new AckSpanData(builder.setCost(4000).build()); costTooMuchSpan = new AckSpanHolder(builder.setCost(4000).build());
exceptionSpan = new AckSpanData(builder.setCost(20).setStatusCode(1).setExceptionStack("occur exception").build()); exceptionSpan = new AckSpanHolder(builder.setCost(20).setStatusCode(1).setExceptionStack("occur exception").build());
} }
@Test @Test
......
...@@ -31,11 +31,7 @@ ...@@ -31,11 +31,7 @@
<version>1.17</version> <version>1.17</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.a.eye</groupId> <groupId>com.a.eye</groupId>
<artifactId>skywalking-util</artifactId> <artifactId>skywalking-util</artifactId>
......
...@@ -43,22 +43,4 @@ public class Config { ...@@ -43,22 +43,4 @@ public class Config {
public static String PATH_PREFIX = "/skywalking/storage_list/"; public static String PATH_PREFIX = "/skywalking/storage_list/";
} }
public static class Alarm {
public static String REDIS_SERVER = "127.0.0.1:6379";
public static boolean ALARM_OFF_FLAG = false;
public static int ALARM_EXCEPTION_STACK_LENGTH = 300;
public static long ALARM_REDIS_INSPECTOR_INTERVAL = 100;
public static int REDIS_MAX_IDLE = 10;
public static int REDIS_MIN_IDLE = 1;
public static int REDIS_MAX_TOTAL = 30;
public static int ALARM_EXPIRE_SECONDS = 1000 * 60 * 90;
}
} }
...@@ -86,4 +86,8 @@ public class RequestSpanData extends AbstractSpanData { ...@@ -86,4 +86,8 @@ public class RequestSpanData extends AbstractSpanData {
public String getViewPoint(){ public String getViewPoint(){
return requestSpan.getViewPointId(); return requestSpan.getViewPointId();
} }
public String getSpanTypeDesc() {
return requestSpan.getSpanTypeDesc();
}
} }
...@@ -51,7 +51,7 @@ public class SpanDataHelper { ...@@ -51,7 +51,7 @@ public class SpanDataHelper {
} }
builder = builder.setLevelId(requestSpanData.getLevelId()).setParentLevelId(requestSpanData.getParentLevelId()).setProcessNo(requestSpanData.getProcessNo()) builder = builder.setLevelId(requestSpanData.getLevelId()).setParentLevelId(requestSpanData.getParentLevelId()).setProcessNo(requestSpanData.getProcessNo())
.setSpanType(requestSpanData.getType()).setStartTime(requestSpanData.getStartTime()) .setSpanType(requestSpanData.getType()).setSpanTypeDesc(requestSpanData.getSpanTypeDesc()).setStartTime(requestSpanData.getStartTime())
.setStatusCode(ackSpanData.getStatusCode()) .setStatusCode(ackSpanData.getStatusCode())
.setViewpoint(requestSpanData.getViewPoint()) .setViewpoint(requestSpanData.getViewPoint())
.setTraceId(TraceId.newBuilder().addAllSegments(Arrays.asList(requestSpanData.getTraceIdSegments()))); .setTraceId(TraceId.newBuilder().addAllSegments(Arrays.asList(requestSpanData.getTraceIdSegments())));
......
...@@ -7,7 +7,6 @@ import com.a.eye.skywalking.logging.api.LogManager; ...@@ -7,7 +7,6 @@ import com.a.eye.skywalking.logging.api.LogManager;
import com.a.eye.skywalking.network.grpc.AckSpan; import com.a.eye.skywalking.network.grpc.AckSpan;
import com.a.eye.skywalking.network.grpc.RequestSpan; import com.a.eye.skywalking.network.grpc.RequestSpan;
import com.a.eye.skywalking.network.listener.server.SpanStorageServerListener; import com.a.eye.skywalking.network.listener.server.SpanStorageServerListener;
import com.a.eye.skywalking.storage.alarm.SpanAlarmHandler;
import com.a.eye.skywalking.storage.config.Config; import com.a.eye.skywalking.storage.config.Config;
import com.a.eye.skywalking.storage.data.spandata.AckSpanData; import com.a.eye.skywalking.storage.data.spandata.AckSpanData;
import com.a.eye.skywalking.storage.data.spandata.RequestSpanData; import com.a.eye.skywalking.storage.data.spandata.RequestSpanData;
...@@ -36,7 +35,7 @@ public class StorageListener implements SpanStorageServerListener { ...@@ -36,7 +35,7 @@ public class StorageListener implements SpanStorageServerListener {
requestSpanRingBuffer = requestSpanDisruptor.getRingBuffer(); requestSpanRingBuffer = requestSpanDisruptor.getRingBuffer();
ackSpanDisruptor = new Disruptor<AckSpanData>(new AckSpanFactory(), Config.Disruptor.BUFFER_SIZE, DaemonThreadFactory.INSTANCE); ackSpanDisruptor = new Disruptor<AckSpanData>(new AckSpanFactory(), Config.Disruptor.BUFFER_SIZE, DaemonThreadFactory.INSTANCE);
ackSpanDisruptor.handleEventsWith(new StoreAckSpanEventHandler(), new SpanAlarmHandler()); ackSpanDisruptor.handleEventsWith(new StoreAckSpanEventHandler());
ackSpanDisruptor.start(); ackSpanDisruptor.start();
ackSpanRingBuffer = ackSpanDisruptor.getRingBuffer(); ackSpanRingBuffer = ackSpanDisruptor.getRingBuffer();
} }
......
...@@ -55,6 +55,7 @@ public class TraceTreeInfo { ...@@ -55,6 +55,7 @@ public class TraceTreeInfo {
public void setHasBeenSpiltNodes(List<TraceNodeInfo> nodes) { public void setHasBeenSpiltNodes(List<TraceNodeInfo> nodes) {
this.nodes = nodes; this.nodes = nodes;
this.nodeSize = nodes.size();
} }
public void setRealNodeSize(int nodeSize) { public void setRealNodeSize(int nodeSize) {
......
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
<li class="list-group-item"><strong>花费时间:</strong>{{>cost}}<strong>毫秒</strong></li> <li class="list-group-item"><strong>花费时间:</strong>{{>cost}}<strong>毫秒</strong></li>
<li class="list-group-item"><strong>业务字段:</strong>{{>businessKey}}</li> <li class="list-group-item"><strong>业务字段:</strong>{{>businessKey}}</li>
<li class="list-group-item"><strong>应用Code:</strong>{{>applicationCode}}</li> <li class="list-group-item"><strong>应用Code:</strong>{{>applicationCode}}</li>
<li class="list-group-item"><strong>主机信息:</strong>{{>address}}}</li> <li class="list-group-item"><strong>主机信息:</strong>{{>address}}</li>
<li class="list-group-item"><strong>调用进程号:</strong>{{>processNo}}</li> <li class="list-group-item"><strong>调用进程号:</strong>{{>processNo}}</li>
<li class="list-group-item"><strong>异常堆栈:</strong> <li class="list-group-item"><strong>异常堆栈:</strong>
{{if exceptionStack}} {{if exceptionStack}}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册