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 2018/12/21 02:56:38 UTC

[incubator-skywalking] branch refactor-register created (now fa70693)

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a change to branch refactor-register
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git.


      at fa70693  Refactor register API for making integration easier.

This branch includes the following new commits:

     new fa70693  Refactor register API for making integration easier.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-skywalking] 01/01: Refactor register API for making integration easier.

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch refactor-register
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git

commit fa706937b1911e944de91ba7dc4ef13ee3dbf10f
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Fri Dec 21 10:56:24 2018 +0800

    Refactor register API for making integration easier.
---
 .../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     | 9 +++++----
 4 files changed, 19 insertions(+), 10 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..3c4f86a 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)) {
+            try (ResultSet rs = h2Client.executeQuery(connection, "SELECT registerId(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;
                     }
                 }
             }