You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by pe...@apache.org on 2018/10/31 15:12:00 UTC
[incubator-skywalking] branch master updated: Fix bugs (#1854)
This is an automated email from the ASF dual-hosted git repository.
pengys 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 07e799e Fix bugs (#1854)
07e799e is described below
commit 07e799e422c2d4705b5b0a1182896287a1e2487e
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Wed Oct 31 23:11:52 2018 +0800
Fix bugs (#1854)
* Avoid service inventory object concurrency situation.
* Fix concurrency for minute persistence and others
* Fix document todo.
* Update license. Fix package with dirty agent plugin jar files.
* Fixed not combine error in persistence register worker.
---
apm-dist/release-docs/LICENSE | 8 ++++----
apm-sniffer/apm-agent/pom.xml | 1 +
docs/en/setup/backend/backend-cluster.md | 4 ----
.../server/core/analysis/worker/IndicatorTransWorker.java | 10 +++++++---
.../oap/server/core/register/ServiceInventory.java | 14 ++++++++++++++
.../core/register/service/ServiceInventoryRegister.java | 1 +
.../core/register/worker/RegisterPersistentWorker.java | 4 +++-
7 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/apm-dist/release-docs/LICENSE b/apm-dist/release-docs/LICENSE
index c7c4cf5..9dc3f53 100644
--- a/apm-dist/release-docs/LICENSE
+++ b/apm-dist/release-docs/LICENSE
@@ -225,15 +225,15 @@ Apache 2.0 licenses
The following components are provided under the Apache License. See project link for details.
The text of each license is the standard Apache 2.0 license.
- raphw (byte-buddy) 1.7.9: http://bytebuddy.net/ , Apache 2.0
- Google: grpc 1.8.0: https://grpc.io/ , Apache 2.0
- Google: gprc-java 1.8.0: https://github.com/grpc/grpc-java, Apache 2.0
+ raphw (byte-buddy) 1.9.2: http://bytebuddy.net/ , Apache 2.0
+ Google: grpc 1.10.0: https://grpc.io/ , Apache 2.0
+ Google: gprc-java 1.10.0: https://github.com/grpc/grpc-java, Apache 2.0
Google: guava 19.0: https://github.com/google/guava , Apache 2.0
Google: gson 2.8.1: https://github.com/google/gson , Apache 2.0
Google: opencensus-java 0.8.0: https://github.com/census-instrumentation/opencensus-java , Apache 2.0
Google: proto-google-common-protos 0.1.9: https://github.com/googleapis/googleapis , Apache 2.0
Google: jsr305 3.0.0: http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom , Apache 2.0
- Elasticsearch BV (Elasticsearch) 5.5.0: https://www.elastic.co/products/elasticsearch , Apache 2.0
+ Elasticsearch BV (Elasticsearch) 6.3.2: https://www.elastic.co/products/elasticsearch , Apache 2.0
lang-mustache-client 5.5.0: https://github.com/elastic/elasticsearch/tree/master/modules/lang-mustache , Apache 2.0
parent-join-client 5.5.0: https://github.com/elastic/elasticsearch/tree/master/modules/parent-join , Apache 2.0
reindex-client 5.5.0: https://github.com/elastic/elasticsearch/tree/master/modules/reindex , Apache 2.0
diff --git a/apm-sniffer/apm-agent/pom.xml b/apm-sniffer/apm-agent/pom.xml
index e92d933..9094e3e 100644
--- a/apm-sniffer/apm-agent/pom.xml
+++ b/apm-sniffer/apm-agent/pom.xml
@@ -103,6 +103,7 @@
</goals>
<configuration>
<tasks>
+ <delete dir="${project.basedir}/../../skywalking-agent" />
<mkdir dir="${project.basedir}/../../skywalking-agent" />
<copy file="${project.build.directory}/skywalking-agent.jar" tofile="${project.basedir}/../../skywalking-agent/skywalking-agent.jar" overwrite="true" />
<mkdir dir="${project.basedir}/../../skywalking-agent/config" />
diff --git a/docs/en/setup/backend/backend-cluster.md b/docs/en/setup/backend/backend-cluster.md
index cf4cd60..8d7d006 100644
--- a/docs/en/setup/backend/backend-cluster.md
+++ b/docs/en/setup/backend/backend-cluster.md
@@ -38,7 +38,3 @@ cluster:
labelSelector: app=collector,release=skywalking
uidEnvName: SKYWALKING_COLLECTOR_UID
```
-
-TODO @hanahmily
-
-settings descriptions.
\ No newline at end of file
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorTransWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorTransWorker.java
index b49814c..537d6a4 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorTransWorker.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorTransWorker.java
@@ -48,9 +48,6 @@ public class IndicatorTransWorker extends AbstractWorker<Indicator> {
}
@Override public void in(Indicator indicator) {
- if (Objects.nonNull(minutePersistenceWorker)) {
- minutePersistenceWorker.in(indicator);
- }
if (Objects.nonNull(hourPersistenceWorker)) {
hourPersistenceWorker.in(indicator.toHour());
}
@@ -60,5 +57,12 @@ public class IndicatorTransWorker extends AbstractWorker<Indicator> {
if (Objects.nonNull(monthPersistenceWorker)) {
monthPersistenceWorker.in(indicator.toMonth());
}
+ /**
+ * Minute persistent must be at the end of all time dimensionalities
+ * Because #toHour, #toDay, #toMonth include clone inside, which could avoid concurrency situation.
+ */
+ if (Objects.nonNull(minutePersistenceWorker)) {
+ minutePersistenceWorker.in(indicator);
+ }
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
index c2c2199..8e75fbd 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
@@ -76,6 +76,20 @@ public class ServiceInventory extends RegisterSource {
return result;
}
+ public ServiceInventory getClone() {
+ ServiceInventory inventory = new ServiceInventory();
+ inventory.setSequence(getSequence());
+ inventory.setRegisterTime(getRegisterTime());
+ inventory.setHeartbeatTime(getHeartbeatTime());
+ inventory.setName(name);
+ inventory.setIsAddress(isAddress);
+ inventory.setAddressId(addressId);
+ inventory.setMappingLastUpdateTime(mappingLastUpdateTime);
+ inventory.setMappingServiceId(mappingServiceId);
+
+ return inventory;
+ }
+
@Override public boolean equals(Object obj) {
if (this == obj)
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 531d3f1..24d0c92 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
@@ -103,6 +103,7 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister {
@Override public void updateMapping(int serviceId, int mappingServiceId) {
ServiceInventory serviceInventory = getServiceInventoryCache().get(serviceId);
if (Objects.nonNull(serviceInventory)) {
+ serviceInventory = serviceInventory.getClone();
serviceInventory.setMappingServiceId(mappingServiceId);
serviceInventory.setMappingLastUpdateTime(System.currentTimeMillis());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java
index dc6a6a7..57c663d 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java
@@ -22,7 +22,7 @@ import java.util.*;
import org.apache.skywalking.apm.commons.datacarrier.DataCarrier;
import org.apache.skywalking.apm.commons.datacarrier.consumer.IConsumer;
import org.apache.skywalking.oap.server.core.analysis.data.EndOfBatchContext;
-import org.apache.skywalking.oap.server.core.register.*;
+import org.apache.skywalking.oap.server.core.register.RegisterSource;
import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.*;
import org.apache.skywalking.oap.server.core.worker.AbstractWorker;
@@ -63,6 +63,8 @@ public class RegisterPersistentWorker extends AbstractWorker<RegisterSource> {
private void onWork(RegisterSource registerSource) {
if (!sources.containsKey(registerSource)) {
sources.put(registerSource, registerSource);
+ } else {
+ sources.get(registerSource).combine(registerSource);
}
if (registerSource.getEndOfBatchContext().isEndOfBatch()) {