diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..07cc770
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,16 @@
+
+### Version 2.4.2
+
+* Added timestamp logging
+* Added checks for Null connection
+
+
+## Version 2.4.1
+
+* Updated Licenses
+
+## Version 2.4.0
+
+* Revamped complete extension
+* Adds support to add your own queries
+* Adds support to query tables
\ No newline at end of file
diff --git a/CHANGES.md b/CHANGES.md
deleted file mode 100644
index 8340b9f..0000000
--- a/CHANGES.md
+++ /dev/null
@@ -1,4 +0,0 @@
-
-### Version 1.0.0
-
-* Initial open source release
diff --git a/pom.xml b/pom.xml
index d08b86d..77001f2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
com.appdynamics.extensions
oracledb-monitoring-extension
- 2.4.1
+ 2.4.2
jar
oracle-monitoring-extension
http://maven.apache.org
diff --git a/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java b/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java
index db052ec..a7c0d83 100644
--- a/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java
+++ b/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java
@@ -10,6 +10,7 @@
import com.google.common.base.Strings;
+import org.slf4j.LoggerFactory;
import java.sql.*;
import java.util.Map;
@@ -20,6 +21,7 @@ public class JDBCConnectionAdapter {
private final String connUrl;
private final Map connectionProperties;
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(JDBCConnectionAdapter.class);
private JDBCConnectionAdapter(String connStr, Map connectionProperties) {
@@ -44,7 +46,12 @@ Connection open(String driver) throws SQLException, ClassNotFoundException {
properties.put(key, connectionProperties.get(key));
}
}
+ logger.debug("Passed all checks for properties and attempting to connect to: "+ connUrl);
+ long timestamp1 = System.currentTimeMillis();
+
connection = DriverManager.getConnection(connUrl, properties.getProperty("user"), properties.getProperty("password"));
+ long timestamp2 = System.currentTimeMillis();
+ logger.debug("Connection received in JDBC ConnectionAdapter in :"+ (timestamp2-timestamp1)+ " ms");
return connection;
}
diff --git a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java
index de19855..66974af 100644
--- a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java
+++ b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java
@@ -12,6 +12,7 @@
import com.appdynamics.extensions.TaskInputArgs;
import com.appdynamics.extensions.TasksExecutionServiceProvider;
import com.appdynamics.extensions.crypto.CryptoUtil;
+import com.appdynamics.extensions.util.AssertUtils;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.singularity.ee.agent.systemagent.api.exception.TaskExecutionException;
@@ -77,6 +78,11 @@ protected int getTaskCount() {
private OracledbMonitorTask createTask(Map server, TasksExecutionServiceProvider serviceProvider) throws IOException {
String connUrl = createConnectionUrl(server);
+
+ AssertUtils.assertNotNull(serverName(server), "The 'displayName' field under the 'dbServers' section in config.yml is not initialised");
+ AssertUtils.assertNotNull(createConnectionUrl(server), "The 'connectionUrl' field under the 'dbServers' section in config.yml is not initialised");
+ AssertUtils.assertNotNull(driverName(server), "The 'driver' field under the 'dbServers' section in config.yml is not initialised");
+
Map connectionProperties = getConnectionProperties(server);
JDBCConnectionAdapter jdbcAdapter = JDBCConnectionAdapter.create(connUrl, connectionProperties);
@@ -89,6 +95,15 @@ private OracledbMonitorTask createTask(Map server, TasksExecutionServiceProvider
.server(server).build();
}
+ private String serverName(Map server) {
+ String name = Util.convertToString(server.get("displayName"), "");
+ return name;
+ }
+
+ private String driverName(Map server) {
+ String name = Util.convertToString(server.get("driver"), "");
+ return name;
+ }
private String createConnectionUrl(Map server) {
String url = Util.convertToString(server.get("connectionUrl"), "");
diff --git a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java
index cb32f7e..15af39e 100644
--- a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java
+++ b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java
@@ -40,14 +40,26 @@ public void run() {
Connection connection = null;
if (queries != null && !queries.isEmpty()) {
try {
+ long timestamp1 = System.currentTimeMillis();
connection = getConnection();
- for (Map query : queries) {
- try {
- executeQuery(connection, query);
- } catch (SQLException e) {
- logger.error("Error during executing query.");
+ long timestamp2 = System.currentTimeMillis();
+ logger.debug("Time taken to get Connection: " + (timestamp2 - timestamp1));
+ String dbServerDisplayName = (String) server.get("displayName");
+ if(connection != null) {
+ logger.debug(" Connection successful for server: " + dbServerDisplayName);
+
+ for (Map query : queries) {
+ try {
+ executeQuery(connection, query);
+ } catch (SQLException e) {
+ logger.error("Error during executing query.");
+ }
}
+ } else {
+
+ logger.debug("Null Connection returned for server: " + dbServerDisplayName);
}
+
} catch (SQLException e) {
logger.error("Error Opening connection", e);
status = false;
@@ -56,7 +68,9 @@ public void run() {
status = false;
} finally {
try {
- closeConnection(connection);
+ if (connection != null) {
+ closeConnection(connection);
+ }
} catch (Exception e) {
logger.error("Issue closing the connection", e);
}
@@ -112,7 +126,11 @@ private ResultSet getResultSet(Map query, Statement statement, ResultSet resultS
String queryStmt = (String) query.get("queryStmt");
queryStmt = substitute(queryStmt);
+ long timestamp1 = System.currentTimeMillis();
resultSet = jdbcAdapter.queryDatabase(queryStmt, statement);
+ long timestamp2 = System.currentTimeMillis();
+
+ logger.debug("Queried the database in :"+ (timestamp2-timestamp1)+ " ms for query: \n " + queryStmt);
return resultSet;
}