You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2019/01/13 12:15:29 UTC
[incubator-skywalking] branch instance-extend updated: Fix a bug
and refactor properties update.
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch instance-extend
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/instance-extend by this push:
new 62fcabd Fix a bug and refactor properties update.
62fcabd is described below
commit 62fcabd813e37bda91f722d142ba9c7b1618c56f
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Sun Jan 13 20:15:18 2019 +0800
Fix a bug and refactor properties update.
---
.../service/IServiceInventoryRegister.java | 3 ++-
.../service/NetworkAddressInventoryRegister.java | 18 +--------------
.../register/service/ServiceInventoryRegister.java | 26 +++++++++++++++-------
.../parser/standardization/SpanIdExchanger.java | 14 +++++++-----
.../transform/SpringSleuthSegmentBuilderTest.java | 23 ++++++-------------
5 files changed, 37 insertions(+), 47 deletions(-)
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java
index c4d7ef0..93fdc25 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java
@@ -19,6 +19,7 @@
package org.apache.skywalking.oap.server.core.register.service;
import com.google.gson.JsonObject;
+import org.apache.skywalking.oap.server.core.register.NodeType;
import org.apache.skywalking.oap.server.library.module.Service;
/**
@@ -30,7 +31,7 @@ public interface IServiceInventoryRegister extends Service {
int getOrCreate(int addressId, String serviceName, JsonObject properties);
- void updateProperties(int serviceId, JsonObject properties);
+ void update(int serviceId, NodeType nodeType, JsonObject properties);
void heartbeat(int serviceId, long heartBeatTime);
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java
index 3910299..68d43f6 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java
@@ -127,27 +127,11 @@ public class NetworkAddressInventoryRegister implements INetworkAddressInventory
InventoryProcess.INSTANCE.in(newNetworkAddress);
}
-
- ServiceInventory newServiceInventory = getServiceInventoryCache().get(getServiceInventoryCache().getServiceId(networkAddress.getSequence()));
- if (!this.compare(newServiceInventory, nodeType)) {
- newServiceInventory = newServiceInventory.getClone();
- newServiceInventory.setServiceNodeType(nodeType);
- newServiceInventory.setHeartbeatTime(System.currentTimeMillis());
-
- InventoryProcess.INSTANCE.in(newServiceInventory);
- }
}
private boolean compare(NetworkAddressInventory newNetworkAddress, NodeType nodeType) {
if (Objects.nonNull(newNetworkAddress)) {
- return nodeType == newNetworkAddress.getNetworkAddressNodeType();
- }
- return true;
- }
-
- private boolean compare(ServiceInventory newServiceInventory, NodeType nodeType) {
- if (Objects.nonNull(newServiceInventory)) {
- return nodeType == newServiceInventory.getServiceNodeType();
+ return nodeType.equals(newNetworkAddress.getNetworkAddressNodeType());
}
return true;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java
index 5cb6737..7d59776 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java
@@ -22,7 +22,7 @@ import com.google.gson.JsonObject;
import java.util.Objects;
import org.apache.skywalking.oap.server.core.*;
import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache;
-import org.apache.skywalking.oap.server.core.register.ServiceInventory;
+import org.apache.skywalking.oap.server.core.register.*;
import org.apache.skywalking.oap.server.core.register.worker.InventoryProcess;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
import org.apache.skywalking.oap.server.library.util.BooleanUtils;
@@ -91,16 +91,19 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister {
return serviceId;
}
- @Override public void updateProperties(int serviceId, JsonObject properties) {
+ @Override public void update(int serviceId, NodeType nodeType, JsonObject properties) {
ServiceInventory serviceInventory = getServiceInventoryCache().get(serviceId);
if (Objects.nonNull(serviceInventory)) {
- serviceInventory = serviceInventory.getClone();
- serviceInventory.setProperties(properties);
- serviceInventory.setMappingLastUpdateTime(System.currentTimeMillis());
-
- InventoryProcess.INSTANCE.in(serviceInventory);
+ if (properties != null || !compare(serviceInventory, nodeType)) {
+ serviceInventory = serviceInventory.getClone();
+ serviceInventory.setServiceNodeType(nodeType);
+ serviceInventory.setProperties(properties);
+ serviceInventory.setMappingLastUpdateTime(System.currentTimeMillis());
+
+ InventoryProcess.INSTANCE.in(serviceInventory);
+ }
} else {
- logger.warn("Service {} properties update, but not found in storage.", serviceId);
+ logger.warn("Service {} nodeType/properties update, but not found in storage.", serviceId);
}
}
@@ -128,4 +131,11 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister {
logger.warn("Service {} mapping update, but not found in storage.", serviceId);
}
}
+
+ private boolean compare(ServiceInventory newServiceInventory, NodeType nodeType) {
+ if (Objects.nonNull(newServiceInventory)) {
+ return nodeType.equals(newServiceInventory.getServiceNodeType());
+ }
+ return true;
+ }
}
diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanIdExchanger.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanIdExchanger.java
index f9bcf9c..dfeeb33 100644
--- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanIdExchanger.java
+++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanIdExchanger.java
@@ -78,8 +78,8 @@ public class SpanIdExchanger implements IdExchanger<SpanDecorator> {
}
}
- int peerId = 0;
- if (standardBuilder.getPeerId() == 0 && !Strings.isNullOrEmpty(standardBuilder.getPeer())) {
+ int peerId = standardBuilder.getPeerId();
+ if (peerId == 0 && !Strings.isNullOrEmpty(standardBuilder.getPeer())) {
peerId = networkAddressInventoryRegister.getOrCreate(standardBuilder.getPeer(), buildServiceProperties(standardBuilder));
if (peerId == Const.NONE) {
@@ -96,19 +96,23 @@ public class SpanIdExchanger implements IdExchanger<SpanDecorator> {
if (peerId != Const.NONE) {
int spanLayerValue = standardBuilder.getSpanLayerValue();
- networkAddressInventoryRegister.update(peerId, NodeType.fromSpanLayerValue(spanLayerValue));
+ NodeType nodeType = NodeType.fromSpanLayerValue(spanLayerValue);
+ networkAddressInventoryRegister.update(peerId, nodeType);
/**
* In some case, conjecture node, such as Database node, could be registered by agents.
* At here, if the target service properties need to be updated,
* it will only be updated at the first time for now.
*/
+
+ JsonObject properties = null;
+ ServiceInventory newServiceInventory = serviceInventoryCacheDAO.get(serviceInventoryCacheDAO.getServiceId(peerId));
if (SpanLayer.Database.equals(standardBuilder.getSpanLayer())) {
- ServiceInventory newServiceInventory = serviceInventoryCacheDAO.get(serviceInventoryCacheDAO.getServiceId(peerId));
if (!newServiceInventory.hasProperties()) {
- serviceInventoryRegister.updateProperties(newServiceInventory.getSequence(), buildServiceProperties(standardBuilder));
+ properties = buildServiceProperties(standardBuilder);
}
}
+ serviceInventoryRegister.update(newServiceInventory.getSequence(), nodeType, properties);
}
if (standardBuilder.getOperationNameId() == Const.NONE) {
diff --git a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/transform/SpringSleuthSegmentBuilderTest.java b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/transform/SpringSleuthSegmentBuilderTest.java
index 3457830..9a53885 100644
--- a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/transform/SpringSleuthSegmentBuilderTest.java
+++ b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/transform/SpringSleuthSegmentBuilderTest.java
@@ -20,22 +20,14 @@ package org.apache.skywalking.oap.server.receiver.zipkin.transform;
import com.google.gson.JsonObject;
import java.io.UnsupportedEncodingException;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import org.apache.skywalking.apm.network.language.agent.SpanType;
-import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject;
-import org.apache.skywalking.apm.network.language.agent.v2.SegmentReference;
-import org.apache.skywalking.apm.network.language.agent.v2.SpanObjectV2;
-import org.apache.skywalking.oap.server.core.register.*;
-import org.apache.skywalking.oap.server.core.register.service.IServiceInstanceInventoryRegister;
-import org.apache.skywalking.oap.server.core.register.service.IServiceInventoryRegister;
+import org.apache.skywalking.apm.network.language.agent.v2.*;
+import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.register.service.*;
import org.apache.skywalking.oap.server.receiver.zipkin.CoreRegisterLinker;
-import org.apache.skywalking.oap.server.receiver.zipkin.data.SkyWalkingTrace;
-import org.apache.skywalking.oap.server.receiver.zipkin.data.ZipkinTrace;
-import org.junit.Assert;
-import org.junit.Test;
+import org.apache.skywalking.oap.server.receiver.zipkin.data.*;
+import org.junit.*;
import org.powermock.reflect.Whitebox;
import zipkin2.Span;
import zipkin2.codec.SpanBytesDecoder;
@@ -75,7 +67,7 @@ public class SpringSleuthSegmentBuilderTest implements SegmentListener {
}
}
- @Override public void updateProperties(int serviceId, JsonObject properties) {
+ @Override public void update(int serviceId, NodeType nodeType, JsonObject properties) {
}
@Override public void heartbeat(int serviceId, long heartBeatTime) {
@@ -86,7 +78,6 @@ public class SpringSleuthSegmentBuilderTest implements SegmentListener {
}
-
};
IServiceInstanceInventoryRegister instanceIDService = new IServiceInstanceInventoryRegister() {