From e03e9f258349d81f0b77701742244bd5e35e5e8a Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 24 Feb 2016 15:24:58 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A1=A5=E5=85=85#31=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E3=80=82=E4=BF=AE=E5=A4=8D=E8=BE=B9=E7=95=8C?= =?UTF-8?q?BUG=E3=80=82=E5=B9=B6=E6=8F=90=E4=BA=A4=E6=9B=B4=E5=90=88?= =?UTF-8?q?=E7=90=86=E7=9A=84=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skywalking/util/AtomicRangeInteger.java | 14 ++++++------- .../util/AtomicRangeIntegerTest.java | 20 ++++++++++--------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/util/AtomicRangeInteger.java b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/util/AtomicRangeInteger.java index bf1fe360d..ac69b97ce 100644 --- a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/util/AtomicRangeInteger.java +++ b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/util/AtomicRangeInteger.java @@ -21,11 +21,14 @@ public class AtomicRangeInteger extends Number implements java.io.Serializable { * * @param initialValue * the initial value + * @param endValue + * + * AtomicRangeInteger在startValue和maxValue循环取值( startValue <= value < maxValue) */ - public AtomicRangeInteger(int startValue, int endValue) { + public AtomicRangeInteger(int startValue, int maxValue) { value = new AtomicInteger(startValue); this.startValue = startValue; - this.endValue = endValue; + this.endValue = maxValue - 1; } /** @@ -35,11 +38,8 @@ public class AtomicRangeInteger extends Number implements java.io.Serializable { */ public final int getAndIncrement() { for (;;) { - int current = get(); - int next = current + 1; - if (next >= this.endValue) { - next = this.startValue; - } + int current = value.get(); + int next = current >= this.endValue ? this.startValue : current + 1; if (value.compareAndSet(current, next)) return current; } diff --git a/skywalking-protocol/src/test/java/test/ai/cloud/skywalking/util/AtomicRangeIntegerTest.java b/skywalking-protocol/src/test/java/test/ai/cloud/skywalking/util/AtomicRangeIntegerTest.java index c3e9330d2..bbaeeb392 100644 --- a/skywalking-protocol/src/test/java/test/ai/cloud/skywalking/util/AtomicRangeIntegerTest.java +++ b/skywalking-protocol/src/test/java/test/ai/cloud/skywalking/util/AtomicRangeIntegerTest.java @@ -9,6 +9,10 @@ import junit.framework.TestCase; import com.ai.cloud.skywalking.util.AtomicRangeInteger; public class AtomicRangeIntegerTest extends TestCase{ + static String[] buffer = new String[5000]; + + static AtomicRangeInteger ari = new AtomicRangeInteger(0, buffer.length); + public void testGet(){ AtomicRangeInteger ari = new AtomicRangeInteger(0, 12); for(int i = 0; i < 51; i++){ @@ -36,22 +40,20 @@ public class AtomicRangeIntegerTest extends TestCase{ } class RangeIntegerThread extends Thread{ - private static String[] buffer = new String[500000000]; - - private static AtomicRangeInteger ari = new AtomicRangeInteger(0, buffer.length); - @Override public void run(){ while(true){ - int i = ari.getAndIncrement(); + int i = AtomicRangeIntegerTest.ari.getAndIncrement(); if(i % 10000000 == 0){ - System.out.println(ari.get()); + System.out.println(AtomicRangeIntegerTest.ari.get()); } - if(i >= buffer.length - 100000){ + if(AtomicRangeIntegerTest.buffer[i] != null){ + System.out.println("end at index:" + i + "," + AtomicRangeIntegerTest.buffer[i]); break; + }else{ + System.out.println("at index:" + i); + AtomicRangeIntegerTest.buffer[i] = "string"; } - Assert.assertNull(buffer[i]); - buffer[i] = "string"; } } } From 2b3a2da209abaf0ae053faeab5a8f345e66393d1 Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 24 Feb 2016 15:34:52 +0800 Subject: [PATCH 2/3] =?UTF-8?q?1.=E5=8A=A0=E5=85=A5=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E3=80=82=202.=E9=81=BF=E5=85=8Dspan=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=BC=82=E5=B8=B8=E6=97=B6=EF=BC=8C=E5=BD=B1=E5=93=8D?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E7=A8=8B=E5=BA=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/cloud/skywalking/buffer/ContextBuffer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buffer/ContextBuffer.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buffer/ContextBuffer.java index fd2321af6..a45317af2 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buffer/ContextBuffer.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buffer/ContextBuffer.java @@ -4,9 +4,13 @@ import com.ai.cloud.skywalking.protocol.Span; import java.util.concurrent.ThreadLocalRandom; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import static com.ai.cloud.skywalking.conf.Config.Buffer.POOL_SIZE; public class ContextBuffer { + private static Logger logger = LogManager.getLogger(ContextBuffer.class); private static BufferPool pool = new BufferPool(); @@ -15,7 +19,11 @@ public class ContextBuffer { } public static void save(Span span) { - pool.save(span); + try{ + pool.save(span); + }catch(Throwable t){ + logger.error("save span error.", t); + } } From ae173ecf48a39e5f06c3d0b05536ad8006c72d21 Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 24 Feb 2016 15:42:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?1.=E4=BD=BF=E7=94=A8=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E9=A1=B5=E9=9D=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ab9f4090..3f649683f 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ SkyWalking-Distributed Application Tracing System, 是一个对JAVA应用程序 * 张鑫   [亚信](http://www.asiainfo.com/) zhangxin10@asiainfo.com # 交流群 -QQ群:392443393,请注明“Sky Walking交流” +* QQ群:392443393,请注明“Sky Walking交流” +* 请各位使用者反馈下,都在哪些项目中使用。[点击进入](https://github.com/wu-sheng/sky-walking/issues/34) # 整体架构图 ![整体架构图](http://wu-sheng.github.io/sky-walking/sample-code/images/skywalkingClusterDeploy.jpeg)