This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 6a7e344 fix zipkin provider can not receive full spans data (#1420)
6a7e344 is described below
commit 6a7e344dea75627c9d6011738c5a3e71e9fc4173
Author: 歪脖大肚子Q <[email protected]>
AuthorDate: Wed Jul 4 12:03:02 2018 +0800
fix zipkin provider can not receive full spans data (#1420)
---
.../receiver/zipkin/provider/ZipkinReceiverProvider.java | 2 ++
.../receiver/zipkin/provider/handler/SpanProcessor.java | 16 +++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git
a/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/ZipkinReceiverProvider.java
b/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/ZipkinReceiverProvider.java
index fd364f4..0ef45e4 100644
---
a/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/ZipkinReceiverProvider.java
+++
b/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/ZipkinReceiverProvider.java
@@ -31,6 +31,7 @@ import org.apache.skywalking.apm.collector.core.module.*;
import org.apache.skywalking.apm.collector.jetty.manager.JettyManagerModule;
import
org.apache.skywalking.apm.collector.jetty.manager.service.JettyManagerService;
import
org.apache.skywalking.apm.collector.receiver.zipkin.define.ZipkinReceiverModule;
+import
org.apache.skywalking.apm.collector.receiver.zipkin.provider.handler.SpanV1JettyHandler;
import
org.apache.skywalking.apm.collector.receiver.zipkin.provider.handler.SpanV2JettyHandler;
import
org.apache.skywalking.apm.collector.receiver.zipkin.provider.transform.Zipkin2SkyWalkingTransfer;
import org.apache.skywalking.apm.collector.server.jetty.JettyServer;
@@ -74,6 +75,7 @@ public class ZipkinReceiverProvider extends ModuleProvider {
JettyManagerService managerService =
getManager().find(JettyManagerModule.NAME).getService(JettyManagerService.class);
JettyServer jettyServer =
managerService.createIfAbsent(config.getHost(), config.getPort(),
config.getContextPath());
+ jettyServer.addHandler(new SpanV1JettyHandler(config,
registerServices));
jettyServer.addHandler(new SpanV2JettyHandler(config,
registerServices));
ISegmentParseService segmentParseService =
getManager().find(AnalysisSegmentParserModule.NAME).getService(ISegmentParseService.class);
diff --git
a/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/handler/SpanProcessor.java
b/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/handler/SpanProcessor.java
index f791846..0e9fa61 100644
---
a/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/handler/SpanProcessor.java
+++
b/apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/receiver-zipkin-provider/src/main/java/org/apache/skywalking/apm/collector/receiver/zipkin/provider/handler/SpanProcessor.java
@@ -21,6 +21,8 @@ package
org.apache.skywalking.apm.collector.receiver.zipkin.provider.handler;
import
org.apache.skywalking.apm.collector.receiver.zipkin.provider.RegisterServices;
import
org.apache.skywalking.apm.collector.receiver.zipkin.provider.ZipkinReceiverConfig;
import
org.apache.skywalking.apm.collector.receiver.zipkin.provider.cache.CacheFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import zipkin2.Span;
import zipkin2.codec.SpanBytesDecoder;
@@ -30,11 +32,23 @@ import java.io.IOException;
import java.util.List;
public class SpanProcessor {
+ private final Logger logger = LoggerFactory.getLogger(SpanProcessor.class);
+
void convert(ZipkinReceiverConfig config, SpanBytesDecoder decoder,
HttpServletRequest request, RegisterServices registerServices) throws
IOException {
int len = request.getContentLength();
ServletInputStream iii = request.getInputStream();
byte[] buffer = new byte[len];
- iii.read(buffer, 0, len);
+
+ int readCntTotal = 0;
+ int readCntOnce;
+ while (readCntTotal < len) {
+ readCntOnce = iii.read(buffer, readCntTotal, len - readCntTotal);
+ if (readCntOnce <= 0) {
+ logger.error("Receive spans data failed.");
+ throw new IOException();
+ }
+ readCntTotal += readCntOnce;
+ }
List<Span> spanList = decoder.decodeList(buffer);