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/12/21 14:32:13 UTC

[incubator-skywalking] branch master updated: Refactor register API for making integration easier. (#2075)

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 c592aea  Refactor register API for making integration easier. (#2075)
c592aea is described below

commit c592aea8db02293861e45a0e9e34de17d5883a99
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Fri Dec 21 22:32:06 2018 +0800

    Refactor register API for making integration easier. (#2075)
    
    * Refactor register API for making integration easier.
    
    * Fix wrong refactor.
---
 .../server/core/register/worker/RegisterPersistentWorker.java    | 4 ++--
 .../apache/skywalking/oap/server/core/storage/IRegisterDAO.java  | 9 ++++++++-
 .../server/storage/plugin/elasticsearch/base/RegisterEsDAO.java  | 7 ++++---
 .../oap/server/storage/plugin/jdbc/h2/dao/H2RegisterDAO.java     | 7 ++++---
 4 files changed, 18 insertions(+), 9 deletions(-)

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 b315074..61b287c 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
@@ -78,8 +78,8 @@ public class RegisterPersistentWorker extends AbstractWorker<RegisterSource> {
                                 dbSource.combine(source);
                                 registerDAO.forceUpdate(modelName, dbSource);
                             } else {
-                                int sequence = registerDAO.max(modelName);
-                                source.setSequence(sequence + 1);
+                                int sequence = registerDAO.registerId(modelName, source);
+                                source.setSequence(sequence);
                                 registerDAO.forceInsert(modelName, source);
                             }
                         } catch (Throwable t) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterDAO.java
index 18350a9..d42e920 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterDAO.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterDAO.java
@@ -26,7 +26,14 @@ import org.apache.skywalking.oap.server.core.register.RegisterSource;
  */
 public interface IRegisterDAO extends DAO {
 
-    int max(String modelName) throws IOException;
+    /**
+     * According modelName and register source, try to get the unique ID for this particular model.
+     * @param modelName
+     * @param registerSource
+     * @return the unique id. This ID for each model should start with 2. 1 has been reserved.
+     * @throws IOException
+     */
+    int registerId(String modelName, RegisterSource registerSource) throws IOException;
 
     RegisterSource get(String modelName, String id) throws IOException;
 
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java
index 1790854..11d423a 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java
@@ -78,7 +78,8 @@ public class RegisterEsDAO extends EsDAO implements IRegisterDAO {
         getClient().forceUpdate(modelName, source.id(), builder);
     }
 
-    @Override public int max(String modelName) throws IOException {
+    @Override public int registerId(String modelName,
+        RegisterSource registerSource) throws IOException {
         SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
         searchSourceBuilder.aggregation(AggregationBuilders.max(RegisterSource.SEQUENCE).field(RegisterSource.SEQUENCE));
         searchSourceBuilder.size(0);
@@ -91,9 +92,9 @@ public class RegisterEsDAO extends EsDAO implements IRegisterDAO {
 
         int id = (int)agg.getValue();
         if (id == Integer.MAX_VALUE || id == Integer.MIN_VALUE) {
-            return 1;
+            return 2;
         } else {
-            return id;
+            return id + 1;
         }
     }
 }
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterDAO.java
index c6b2e6b..3403fe6 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterDAO.java
@@ -46,15 +46,16 @@ public class H2RegisterDAO extends H2SQLExecutor implements IRegisterDAO {
         this.storageBuilder = storageBuilder;
     }
 
-    @Override public int max(String modelName) throws IOException {
+    @Override public int registerId(String modelName,
+        RegisterSource registerSource) throws IOException {
         try (Connection connection = h2Client.getConnection()) {
             try (ResultSet rs = h2Client.executeQuery(connection, "SELECT max(sequence) max_id FROM " + modelName)) {
                 while (rs.next()) {
                     int maxId = rs.getInt("max_id");
                     if (maxId == 0) {
-                        return 1;
+                        return 2;
                     } else {
-                        return maxId;
+                        return maxId + 1;
                     }
                 }
             }