You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/09/18 09:47:28 UTC
[incubator-skywalking] branch h2-storage updated: Add codes of
other dao. No metric dao, wait for @peng-yongsheng new PR.
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch h2-storage
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/h2-storage by this push:
new a10b644 Add codes of other dao. No metric dao, wait for @peng-yongsheng new PR.
a10b644 is described below
commit a10b644143a700176a00abd7c9996698c3ae8128
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Sep 18 17:47:16 2018 +0800
Add codes of other dao. No metric dao, wait for @peng-yongsheng new PR.
---
.../cache/EndpointInventoryCacheEsDAO.java | 4 +-
.../cache/NetworkAddressInventoryCacheEsDAO.java | 2 +-
.../server/storage/plugin/jdbc/SQLExecutor.java | 15 +++-
...yCacheDAO.java => H2RegisterLockInstaller.java} | 29 ++++----
.../storage/plugin/jdbc/h2/H2StorageProvider.java | 10 +--
.../storage/plugin/jdbc/h2/dao/H2BatchDAO.java | 9 +--
.../jdbc/h2/dao/H2EndpointInventoryCacheDAO.java | 23 +++++-
.../storage/plugin/jdbc/h2/dao/H2IndicatorDAO.java | 78 ++-------------------
.../h2/dao/H2NetworkAddressInventoryCacheDAO.java | 23 +++++-
.../storage/plugin/jdbc/h2/dao/H2RegisterDAO.java | 81 ++++++++++++++++++++++
.../{H2IndicatorDAO.java => H2SQLExecutor.java} | 73 ++++++++++++-------
.../h2/dao/H2ServiceInstanceInventoryCacheDAO.java | 30 ++++++--
.../jdbc/h2/dao/H2ServiceInventoryCacheDAO.java | 26 +++++--
.../storage/plugin/jdbc/h2/dao/H2StorageDAO.java | 2 +-
14 files changed, 262 insertions(+), 143 deletions(-)
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/EndpointInventoryCacheEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/EndpointInventoryCacheEsDAO.java
index ecdf877..df187ed 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/EndpointInventoryCacheEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/EndpointInventoryCacheEsDAO.java
@@ -53,7 +53,7 @@ public class EndpointInventoryCacheEsDAO extends EsDAO implements IEndpointInven
return Const.NONE;
}
} catch (Throwable e) {
- logger.error(e.getMessage());
+ logger.error(e.getMessage(), e);
return Const.NONE;
}
}
@@ -72,7 +72,7 @@ public class EndpointInventoryCacheEsDAO extends EsDAO implements IEndpointInven
return null;
}
} catch (Throwable e) {
- logger.error(e.getMessage());
+ logger.error(e.getMessage(), e);
return null;
}
}
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/NetworkAddressInventoryCacheEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/NetworkAddressInventoryCacheEsDAO.java
index 9022f86..ebec15f 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/NetworkAddressInventoryCacheEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/cache/NetworkAddressInventoryCacheEsDAO.java
@@ -48,7 +48,7 @@ public class NetworkAddressInventoryCacheEsDAO extends EsDAO implements INetwork
String id = NetworkAddressInventory.buildId(networkAddress);
GetResponse response = getClient().get(NetworkAddressInventory.MODEL_NAME, id);
if (response.isExists()) {
- return (int)response.getSource().getOrDefault(RegisterSource.SEQUENCE, 0);
+ return (int)response.getSource().getOrDefault(NetworkAddressInventory.SEQUENCE, 0);
} else {
return Const.NONE;
}
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/SQLExecutor.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/SQLExecutor.java
index 4cd33c8..52ab0d4 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/SQLExecutor.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/SQLExecutor.java
@@ -18,16 +18,16 @@
package org.apache.skywalking.oap.server.storage.plugin.jdbc;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
import java.util.List;
-import lombok.AccessLevel;
-import lombok.Getter;
/**
* A SQL executor.
*
* @author wusheng
*/
-@Getter(AccessLevel.PUBLIC)
public class SQLExecutor {
private String sql;
private List<Object> param;
@@ -36,4 +36,13 @@ public class SQLExecutor {
this.sql = sql;
this.param = param;
}
+
+ public void invoke(Connection connection) throws SQLException {
+ PreparedStatement preparedStatement = connection.prepareStatement(sql);
+
+ for (int i = 0; i < param.size(); i++) {
+ preparedStatement.setObject(i + 1, param.get(i));
+ }
+ preparedStatement.execute();
+ }
}
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/H2ServiceInstanceInventoryCacheDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/H2RegisterLockInstaller.java
similarity index 51%
copy from oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInstanceInventoryCacheDAO.java
copy to oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/H2RegisterLockInstaller.java
index a715cb1..1d18969 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInstanceInventoryCacheDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/H2RegisterLockInstaller.java
@@ -16,24 +16,29 @@
*
*/
-package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
+package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2;
-import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
-import org.apache.skywalking.oap.server.core.storage.cache.IServiceInstanceInventoryCacheDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageException;
+import org.apache.skywalking.oap.server.library.client.Client;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author wusheng
*/
-public class H2ServiceInstanceInventoryCacheDAO implements IServiceInstanceInventoryCacheDAO {
- @Override public ServiceInstanceInventory get(int serviceInstanceId) {
- return null;
- }
+public class H2RegisterLockInstaller {
+ public static final String LOCK_TABLE_NAME = "register_lock";
- @Override public int getServiceInstanceId(int serviceId, String serviceInstanceName) {
- return 0;
- }
+ private static final Logger logger = LoggerFactory.getLogger(H2RegisterLockInstaller.class);
+
+ /**
+ * For H2 storage, no concurrency situation, so, on lock table required. If someone wants to implement a storage by
+ * referring H2, please consider to create a LOCK table.
+ *
+ * @param client
+ * @throws StorageException
+ */
+ public void install(Client client) throws StorageException {
- @Override public int getServiceInstanceId(int serviceId, int addressId) {
- return 0;
}
}
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/H2StorageProvider.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/H2StorageProvider.java
index c1459ef..2bc7b94 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/H2StorageProvider.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/H2StorageProvider.java
@@ -86,10 +86,10 @@ public class H2StorageProvider extends ModuleProvider {
this.registerServiceImplementation(StorageDAO.class, new H2StorageDAO(h2Client));
this.registerServiceImplementation(IRegisterLockDAO.class, new H2RegisterLockDAO());
- this.registerServiceImplementation(IServiceInventoryCacheDAO.class, new H2ServiceInventoryCacheDAO());
- this.registerServiceImplementation(IServiceInstanceInventoryCacheDAO.class, new H2ServiceInstanceInventoryCacheDAO());
- this.registerServiceImplementation(IEndpointInventoryCacheDAO.class, new H2EndpointInventoryCacheDAO());
- this.registerServiceImplementation(INetworkAddressInventoryCacheDAO.class, new H2NetworkAddressInventoryCacheDAO());
+ this.registerServiceImplementation(IServiceInventoryCacheDAO.class, new H2ServiceInventoryCacheDAO(h2Client));
+ this.registerServiceImplementation(IServiceInstanceInventoryCacheDAO.class, new H2ServiceInstanceInventoryCacheDAO(h2Client));
+ this.registerServiceImplementation(IEndpointInventoryCacheDAO.class, new H2EndpointInventoryCacheDAO(h2Client));
+ this.registerServiceImplementation(INetworkAddressInventoryCacheDAO.class, new H2NetworkAddressInventoryCacheDAO(h2Client));
this.registerServiceImplementation(ITopologyQueryDAO.class, new H2TopologyQueryDAO());
@@ -101,6 +101,8 @@ public class H2StorageProvider extends ModuleProvider {
H2TableInstaller installer = new H2TableInstaller(getManager());
installer.install(h2Client);
+
+ new H2RegisterLockInstaller().install(h2Client);
} catch (StorageException e) {
throw new ModuleStartException(e.getMessage(), e);
} catch (ClientException e) {
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/H2BatchDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2BatchDAO.java
index d5dc471..c15bcf5 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2BatchDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2BatchDAO.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
import java.sql.Connection;
-import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import org.apache.skywalking.oap.server.core.storage.IBatchDAO;
@@ -55,13 +54,7 @@ public class H2BatchDAO implements IBatchDAO {
for (Object exe : batchCollection) {
SQLExecutor sqlExecutor = (SQLExecutor)exe;
-
- PreparedStatement preparedStatement = connection.prepareStatement(sqlExecutor.getSql());
-
- for (int i = 0; i < sqlExecutor.getParam().size(); i++) {
- preparedStatement.setObject(i + 1, sqlExecutor.getParam().get(i));
- }
- preparedStatement.execute();
+ sqlExecutor.invoke(connection);
}
} catch (SQLException e) {
logger.error(e.getMessage(), e);
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/H2EndpointInventoryCacheDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2EndpointInventoryCacheDAO.java
index 5f61d4a..7f423ac 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2EndpointInventoryCacheDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2EndpointInventoryCacheDAO.java
@@ -18,18 +18,35 @@
package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
+import java.io.IOException;
import org.apache.skywalking.oap.server.core.register.EndpointInventory;
import org.apache.skywalking.oap.server.core.storage.cache.IEndpointInventoryCacheDAO;
+import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author wusheng
*/
-public class H2EndpointInventoryCacheDAO implements IEndpointInventoryCacheDAO {
+public class H2EndpointInventoryCacheDAO extends H2SQLExecutor implements IEndpointInventoryCacheDAO {
+ private static final Logger logger = LoggerFactory.getLogger(H2EndpointInventoryCacheDAO.class);
+ private JDBCHikariCPClient h2Client;
+
+ public H2EndpointInventoryCacheDAO(JDBCHikariCPClient h2Client) {
+ this.h2Client = h2Client;
+ }
+
@Override public int getEndpointId(int serviceId, String endpointName) {
- return 0;
+ String id = EndpointInventory.buildId(serviceId, endpointName);
+ return getEntityIDByID(h2Client, EndpointInventory.SEQUENCE, EndpointInventory.MODEL_NAME, id);
}
@Override public EndpointInventory get(int endpointId) {
- return null;
+ try {
+ return (EndpointInventory)getByColumn(h2Client, EndpointInventory.MODEL_NAME, EndpointInventory.SEQUENCE, endpointId, new EndpointInventory.Builder());
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ return null;
+ }
}
}
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/H2IndicatorDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2IndicatorDAO.java
index c3aa111..3dcd653 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2IndicatorDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2IndicatorDAO.java
@@ -19,27 +19,16 @@
package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
import java.io.IOException;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
import org.apache.skywalking.oap.server.core.storage.IIndicatorDAO;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
-import org.apache.skywalking.oap.server.core.storage.model.ModelColumn;
-import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
-import org.apache.skywalking.oap.server.library.client.jdbc.JDBCClientException;
import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
-import org.apache.skywalking.oap.server.storage.plugin.jdbc.SQLBuilder;
import org.apache.skywalking.oap.server.storage.plugin.jdbc.SQLExecutor;
-import org.apache.skywalking.oap.server.storage.plugin.jdbc.TableMetaInfo;
/**
* @author wusheng
*/
-public class H2IndicatorDAO implements IIndicatorDAO<SQLExecutor, SQLExecutor> {
+public class H2IndicatorDAO extends H2SQLExecutor implements IIndicatorDAO<SQLExecutor, SQLExecutor> {
private JDBCHikariCPClient h2Client;
private StorageBuilder<Indicator> storageBuilder;
@@ -49,74 +38,15 @@ public class H2IndicatorDAO implements IIndicatorDAO<SQLExecutor, SQLExecutor> {
}
@Override public Indicator get(String modelName, Indicator indicator) throws IOException {
- try (ResultSet rs = h2Client.executeQuery("SELECT * FROM " + modelName + " WHERE id = ?", new Object[] {indicator.id()})) {
- while (rs.next()) {
- Map data = new HashMap();
- List<ModelColumn> columns = TableMetaInfo.get(modelName).getColumns();
- for (ModelColumn column : columns) {
- data.put(column.getColumnName(), rs.getObject(column.getColumnName().getName()));
- }
- return storageBuilder.map2Data(data);
- }
- } catch (SQLException e) {
- throw new IOException(e.getMessage(), e);
- } catch (JDBCClientException e) {
- throw new IOException(e.getMessage(), e);
- }
- return null;
+ return (Indicator)getByID(h2Client, modelName, indicator.id(), storageBuilder);
}
@Override public SQLExecutor prepareBatchInsert(String modelName, Indicator indicator) throws IOException {
- Map<String, Object> objectMap = storageBuilder.data2Map(indicator);
-
- SQLBuilder sqlBuilder = new SQLBuilder("INSERT INTO " + modelName + " VALUES");
- List<ModelColumn> columns = TableMetaInfo.get(modelName).getColumns();
- List<Object> param = new ArrayList<>();
- sqlBuilder.append("(id=?,");
- param.add(indicator.id());
- for (int i = 0; i < columns.size(); i++) {
- ModelColumn column = columns.get(i);
- sqlBuilder.append("?");
- if (i != columns.size()) {
- sqlBuilder.append(",");
- }
-
- Object value = objectMap.get(column.getColumnName().getName());
- if (value instanceof StorageDataType) {
- param.add(((StorageDataType)value).toStorageData());
- } else {
- param.add(value);
- }
- }
- sqlBuilder.append(")");
-
- return new SQLExecutor(sqlBuilder.toString(), param);
+ return getInsertExecutor(modelName, indicator, storageBuilder);
}
@Override public SQLExecutor prepareBatchUpdate(String modelName, Indicator indicator) throws IOException {
- Map<String, Object> objectMap = storageBuilder.data2Map(indicator);
-
- SQLBuilder sqlBuilder = new SQLBuilder("UPDATE " + modelName + " SET ");
- List<ModelColumn> columns = TableMetaInfo.get(modelName).getColumns();
- List<Object> param = new ArrayList<>();
- for (int i = 0; i < columns.size(); i++) {
- ModelColumn column = columns.get(i);
- sqlBuilder.append(column.getColumnName().getName() + "= ?");
- if (i != columns.size()) {
- sqlBuilder.append(",");
- }
-
- Object value = objectMap.get(column.getColumnName().getName());
- if (value instanceof StorageDataType) {
- param.add(((StorageDataType)value).toStorageData());
- } else {
- param.add(value);
- }
- }
- sqlBuilder.append(" WHERE id = ?");
- param.add(indicator.id());
-
- return new SQLExecutor(sqlBuilder.toString(), param);
+ return getUpdateExecutor(modelName, indicator, storageBuilder);
}
@Override public void deleteHistory(String modelName, Long timeBucketBefore) {
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/H2NetworkAddressInventoryCacheDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2NetworkAddressInventoryCacheDAO.java
index 7a11ed6..5a79a66 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2NetworkAddressInventoryCacheDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2NetworkAddressInventoryCacheDAO.java
@@ -18,18 +18,35 @@
package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
+import java.io.IOException;
import org.apache.skywalking.oap.server.core.register.NetworkAddressInventory;
import org.apache.skywalking.oap.server.core.storage.cache.INetworkAddressInventoryCacheDAO;
+import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author wusheng
*/
-public class H2NetworkAddressInventoryCacheDAO implements INetworkAddressInventoryCacheDAO {
+public class H2NetworkAddressInventoryCacheDAO extends H2SQLExecutor implements INetworkAddressInventoryCacheDAO {
+ private static final Logger logger = LoggerFactory.getLogger(H2NetworkAddressInventoryCacheDAO.class);
+ private JDBCHikariCPClient h2Client;
+
+ public H2NetworkAddressInventoryCacheDAO(JDBCHikariCPClient h2Client) {
+ this.h2Client = h2Client;
+ }
+
@Override public int getAddressId(String networkAddress) {
- return 0;
+ String id = NetworkAddressInventory.buildId(networkAddress);
+ return getEntityIDByID(h2Client, NetworkAddressInventory.SEQUENCE, NetworkAddressInventory.MODEL_NAME, id);
}
@Override public NetworkAddressInventory get(int addressId) {
- return null;
+ try {
+ return (NetworkAddressInventory)getByColumn(h2Client, NetworkAddressInventory.MODEL_NAME, NetworkAddressInventory.SEQUENCE, addressId, new NetworkAddressInventory.Builder());
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ return null;
+ }
}
}
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
new file mode 100644
index 0000000..1d869ba
--- /dev/null
+++ 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
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.register.RegisterSource;
+import org.apache.skywalking.oap.server.core.storage.IRegisterDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.library.client.jdbc.JDBCClientException;
+import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
+
+/**
+ * @author wusheng
+ */
+public class H2RegisterDAO extends H2SQLExecutor implements IRegisterDAO {
+ private final JDBCHikariCPClient h2Client;
+ private final StorageBuilder<RegisterSource> storageBuilder;
+
+ public H2RegisterDAO(JDBCHikariCPClient h2Client,
+ StorageBuilder<RegisterSource> storageBuilder) {
+ this.h2Client = h2Client;
+ this.storageBuilder = storageBuilder;
+ }
+
+ @Override public int max(String modelName) throws IOException {
+ try (ResultSet rs = h2Client.executeQuery("SELECT max(sequence) max_id FROM " + modelName + " ORDER BY sequence ASC", new Object[0])) {
+ while (rs.next()) {
+ return rs.getInt("max_id");
+ }
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage(), e);
+ } catch (JDBCClientException e) {
+ throw new IOException(e.getMessage(), e);
+ }
+ return Const.NONE;
+ }
+
+ @Override public RegisterSource get(String modelName, String id) throws IOException {
+ return (RegisterSource)getByID(h2Client, modelName, id, storageBuilder);
+ }
+
+ @Override public void forceInsert(String modelName, RegisterSource source) throws IOException {
+ try (Connection connection = h2Client.getConnection()) {
+ getInsertExecutor(modelName, source, storageBuilder).invoke(connection);
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage(), e);
+ } catch (JDBCClientException e) {
+ throw new IOException(e.getMessage(), e);
+ }
+ }
+
+ @Override public void forceUpdate(String modelName, RegisterSource source) throws IOException {
+ try (Connection connection = h2Client.getConnection()) {
+ getUpdateExecutor(modelName, source, storageBuilder).invoke(connection);
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage(), e);
+ } catch (JDBCClientException e) {
+ throw new IOException(e.getMessage(), e);
+ }
+ }
+}
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/H2IndicatorDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2SQLExecutor.java
similarity index 61%
copy from oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2IndicatorDAO.java
copy to oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2SQLExecutor.java
index c3aa111..820d6b7 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2IndicatorDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2SQLExecutor.java
@@ -25,9 +25,10 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
-import org.apache.skywalking.oap.server.core.storage.IIndicatorDAO;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.StorageData;
import org.apache.skywalking.oap.server.core.storage.model.ModelColumn;
import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
import org.apache.skywalking.oap.server.library.client.jdbc.JDBCClientException;
@@ -35,38 +36,65 @@ import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariC
import org.apache.skywalking.oap.server.storage.plugin.jdbc.SQLBuilder;
import org.apache.skywalking.oap.server.storage.plugin.jdbc.SQLExecutor;
import org.apache.skywalking.oap.server.storage.plugin.jdbc.TableMetaInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author wusheng
*/
-public class H2IndicatorDAO implements IIndicatorDAO<SQLExecutor, SQLExecutor> {
- private JDBCHikariCPClient h2Client;
- private StorageBuilder<Indicator> storageBuilder;
+public class H2SQLExecutor {
+ private static final Logger logger = LoggerFactory.getLogger(H2SQLExecutor.class);
- public H2IndicatorDAO(JDBCHikariCPClient h2Client, StorageBuilder<Indicator> storageBuilder) {
- this.h2Client = h2Client;
- this.storageBuilder = storageBuilder;
+ protected StorageData getByID(JDBCHikariCPClient h2Client, String modelName, String id,
+ StorageBuilder storageBuilder) throws IOException {
+ try (ResultSet rs = h2Client.executeQuery("SELECT * FROM " + modelName + " WHERE id = ?", new Object[] {id})) {
+ return toStorageData(rs, modelName, storageBuilder);
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage(), e);
+ } catch (JDBCClientException e) {
+ throw new IOException(e.getMessage(), e);
+ }
}
- @Override public Indicator get(String modelName, Indicator indicator) throws IOException {
- try (ResultSet rs = h2Client.executeQuery("SELECT * FROM " + modelName + " WHERE id = ?", new Object[] {indicator.id()})) {
- while (rs.next()) {
- Map data = new HashMap();
- List<ModelColumn> columns = TableMetaInfo.get(modelName).getColumns();
- for (ModelColumn column : columns) {
- data.put(column.getColumnName(), rs.getObject(column.getColumnName().getName()));
- }
- return storageBuilder.map2Data(data);
- }
+ protected StorageData getByColumn(JDBCHikariCPClient h2Client, String modelName, String columnName, Object value,
+ StorageBuilder storageBuilder) throws IOException {
+ try (ResultSet rs = h2Client.executeQuery("SELECT * FROM " + modelName + " WHERE " + columnName + " = ?", new Object[] {value})) {
+ return toStorageData(rs, modelName, storageBuilder);
} catch (SQLException e) {
throw new IOException(e.getMessage(), e);
} catch (JDBCClientException e) {
throw new IOException(e.getMessage(), e);
}
+ }
+
+ private StorageData toStorageData(ResultSet rs, String modelName,
+ StorageBuilder storageBuilder) throws SQLException {
+ while (rs.next()) {
+ Map data = new HashMap();
+ List<ModelColumn> columns = TableMetaInfo.get(modelName).getColumns();
+ for (ModelColumn column : columns) {
+ data.put(column.getColumnName(), rs.getObject(column.getColumnName().getName()));
+ }
+ return storageBuilder.map2Data(data);
+ }
return null;
}
- @Override public SQLExecutor prepareBatchInsert(String modelName, Indicator indicator) throws IOException {
+ protected int getEntityIDByID(JDBCHikariCPClient h2Client, String entityColumnName, String modelName, String id) {
+ try (ResultSet rs = h2Client.executeQuery("SELECT " + entityColumnName + " FROM " + modelName + " WHERE ID=?", new Object[] {id})) {
+ while (rs.next()) {
+ return rs.getInt(ServiceInstanceInventory.SEQUENCE);
+ }
+ } catch (SQLException e) {
+ logger.error(e.getMessage(), e);
+ } catch (JDBCClientException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return Const.NONE;
+ }
+
+ protected SQLExecutor getInsertExecutor(String modelName, StorageData indicator,
+ StorageBuilder storageBuilder) throws IOException {
Map<String, Object> objectMap = storageBuilder.data2Map(indicator);
SQLBuilder sqlBuilder = new SQLBuilder("INSERT INTO " + modelName + " VALUES");
@@ -93,7 +121,8 @@ public class H2IndicatorDAO implements IIndicatorDAO<SQLExecutor, SQLExecutor> {
return new SQLExecutor(sqlBuilder.toString(), param);
}
- @Override public SQLExecutor prepareBatchUpdate(String modelName, Indicator indicator) throws IOException {
+ protected SQLExecutor getUpdateExecutor(String modelName, StorageData indicator,
+ StorageBuilder storageBuilder) throws IOException {
Map<String, Object> objectMap = storageBuilder.data2Map(indicator);
SQLBuilder sqlBuilder = new SQLBuilder("UPDATE " + modelName + " SET ");
@@ -118,8 +147,4 @@ public class H2IndicatorDAO implements IIndicatorDAO<SQLExecutor, SQLExecutor> {
return new SQLExecutor(sqlBuilder.toString(), param);
}
-
- @Override public void deleteHistory(String modelName, Long timeBucketBefore) {
-
- }
}
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/H2ServiceInstanceInventoryCacheDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInstanceInventoryCacheDAO.java
index a715cb1..645a8bc 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInstanceInventoryCacheDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInstanceInventoryCacheDAO.java
@@ -18,22 +18,44 @@
package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
+import java.io.IOException;
import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
import org.apache.skywalking.oap.server.core.storage.cache.IServiceInstanceInventoryCacheDAO;
+import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author wusheng
*/
-public class H2ServiceInstanceInventoryCacheDAO implements IServiceInstanceInventoryCacheDAO {
+public class H2ServiceInstanceInventoryCacheDAO extends H2SQLExecutor implements IServiceInstanceInventoryCacheDAO {
+ private static final Logger logger = LoggerFactory.getLogger(H2ServiceInstanceInventoryCacheDAO.class);
+ private JDBCHikariCPClient h2Client;
+
+ public H2ServiceInstanceInventoryCacheDAO(JDBCHikariCPClient h2Client) {
+ this.h2Client = h2Client;
+ }
+
@Override public ServiceInstanceInventory get(int serviceInstanceId) {
- return null;
+ try {
+ return (ServiceInstanceInventory)getByColumn(h2Client, ServiceInstanceInventory.MODEL_NAME, ServiceInstanceInventory.SEQUENCE, serviceInstanceId, new ServiceInstanceInventory.Builder());
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ return null;
+ }
}
@Override public int getServiceInstanceId(int serviceId, String serviceInstanceName) {
- return 0;
+ String id = ServiceInstanceInventory.buildId(serviceId, serviceInstanceName);
+ return getByID(id);
}
@Override public int getServiceInstanceId(int serviceId, int addressId) {
- return 0;
+ String id = ServiceInstanceInventory.buildId(serviceId, addressId);
+ return getByID(id);
+ }
+
+ private int getByID(String id) {
+ return getEntityIDByID(h2Client, ServiceInstanceInventory.SEQUENCE, ServiceInstanceInventory.MODEL_NAME, id);
}
}
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/H2ServiceInventoryCacheDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInventoryCacheDAO.java
index 50e882e..e3d7177 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInventoryCacheDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2ServiceInventoryCacheDAO.java
@@ -18,22 +18,40 @@
package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
+import java.io.IOException;
import org.apache.skywalking.oap.server.core.register.ServiceInventory;
import org.apache.skywalking.oap.server.core.storage.cache.IServiceInventoryCacheDAO;
+import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author wusheng
*/
-public class H2ServiceInventoryCacheDAO implements IServiceInventoryCacheDAO {
+public class H2ServiceInventoryCacheDAO extends H2SQLExecutor implements IServiceInventoryCacheDAO {
+ private static final Logger logger = LoggerFactory.getLogger(H2ServiceInventoryCacheDAO.class);
+ private JDBCHikariCPClient h2Client;
+
+ public H2ServiceInventoryCacheDAO(JDBCHikariCPClient h2Client) {
+ this.h2Client = h2Client;
+ }
+
@Override public int getServiceId(String serviceName) {
- return 0;
+ String id = ServiceInventory.buildId(serviceName);
+ return getEntityIDByID(h2Client, ServiceInventory.SEQUENCE, ServiceInventory.MODEL_NAME, id);
}
@Override public int getServiceId(int addressId) {
- return 0;
+ String id = ServiceInventory.buildId(addressId);
+ return getServiceId(id);
}
@Override public ServiceInventory get(int serviceId) {
- return null;
+ try {
+ return (ServiceInventory)getByColumn(h2Client, ServiceInventory.MODEL_NAME, ServiceInventory.SEQUENCE, serviceId, new ServiceInventory.Builder());
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ return null;
+ }
}
}
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/H2StorageDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2StorageDAO.java
index 2f18d2c..59811b2 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2StorageDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2StorageDAO.java
@@ -41,6 +41,6 @@ public class H2StorageDAO implements StorageDAO {
}
@Override public IRegisterDAO newRegisterDao(StorageBuilder<RegisterSource> storageBuilder) {
- return null;
+ return new H2RegisterDAO(h2Client, storageBuilder);
}
}