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()) {