Skip to content

Commit e2fe2f8

Browse files
committed
added new NPE checks, asserts and timestamps checks
1 parent d16871c commit e2fe2f8

File tree

3 files changed

+49
-7
lines changed

3 files changed

+49
-7
lines changed

src/main/java/com/appdynamics/extensions/sql/JDBCConnectionAdapter.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010

1111
import com.google.common.base.Strings;
12+
import org.slf4j.LoggerFactory;
1213

1314
import java.sql.*;
1415
import java.util.Map;
@@ -19,6 +20,7 @@ public class JDBCConnectionAdapter {
1920

2021
private final String connUrl;
2122
private final Map<String, String> connectionProperties;
23+
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(JDBCConnectionAdapter.class);
2224

2325

2426
private JDBCConnectionAdapter(String connStr, Map<String, String> connectionProperties) {
@@ -43,7 +45,13 @@ Connection open(String driver) throws SQLException, ClassNotFoundException {
4345
properties.put(key, connectionProperties.get(key));
4446
}
4547
}
48+
49+
logger.debug("Passed all checks for properties and attempting to connect to: "+ connUrl);
50+
long timestamp1 = System.currentTimeMillis();
4651
connection = DriverManager.getConnection(connUrl, properties);
52+
long timestamp2 = System.currentTimeMillis();
53+
logger.debug("Connection received in JDBC ConnectionAdapter in :"+ (timestamp2-timestamp1)+ " ms");
54+
4755
return connection;
4856
}
4957

src/main/java/com/appdynamics/extensions/sql/SQLMonitor.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.appdynamics.extensions.TaskInputArgs;
1212
import com.appdynamics.extensions.TasksExecutionServiceProvider;
1313
import com.appdynamics.extensions.crypto.CryptoUtil;
14+
import com.appdynamics.extensions.util.AssertUtils;
1415
import com.appdynamics.extensions.util.StringUtils;
1516
import com.google.common.base.Strings;
1617
import com.google.common.collect.Maps;
@@ -74,6 +75,12 @@ protected int getTaskCount() {
7475

7576
private SQLMonitorTask createTask(Map server, TasksExecutionServiceProvider serviceProvider) throws IOException {
7677
String connUrl = createConnectionUrl(server);
78+
79+
AssertUtils.assertNotNull(serverName(server), "The 'displayName' field under the 'dbServers' section in config.yml is not initialised");
80+
AssertUtils.assertNotNull(createConnectionUrl(server), "The 'connectionUrl' field under the 'dbServers' section in config.yml is not initialised");
81+
AssertUtils.assertNotNull(driverName(server), "The 'driver' field under the 'dbServers' section in config.yml is not initialised");
82+
83+
7784
Map<String, String> connectionProperties = getConnectionProperties(server);
7885
JDBCConnectionAdapter jdbcAdapter = JDBCConnectionAdapter.create(connUrl, connectionProperties);
7986

@@ -87,6 +94,16 @@ private SQLMonitorTask createTask(Map server, TasksExecutionServiceProvider serv
8794

8895
}
8996

97+
private String serverName(Map server) {
98+
String name = Util.convertToString(server.get("displayName"), "");
99+
return name;
100+
}
101+
102+
private String driverName(Map server) {
103+
String name = Util.convertToString(server.get("driver"), "");
104+
return name;
105+
}
106+
90107
private String createConnectionUrl(Map server) {
91108
String url = Util.convertToString(server.get("connectionUrl"), "");
92109
return url;
@@ -116,7 +133,6 @@ private Map<String, String> getConnectionProperties(Map server) {
116133
}
117134
}
118135
return connectionProperties;
119-
120136
}
121137

122138
return null;

src/main/java/com/appdynamics/extensions/sql/SQLMonitorTask.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,26 @@ public void run() {
3636
Connection connection = null;
3737
if (queries != null && !queries.isEmpty()) {
3838
try {
39+
long timestamp1 = System.currentTimeMillis();
3940
connection = getConnection();
40-
for (Map query : queries) {
41-
try {
42-
executeQuery(connection, query);
43-
} catch (SQLException e) {
44-
logger.error("Error during executing query.");
41+
long timestamp2 = System.currentTimeMillis();
42+
logger.debug("Time taken to get Connection: " + (timestamp2 - timestamp1));
43+
String dbServerDisplayName = (String) server.get("displayName");
44+
if(connection != null) {
45+
logger.debug(" Connection successful for server: " + dbServerDisplayName);
46+
47+
for (Map query : queries) {
48+
try {
49+
executeQuery(connection, query);
50+
} catch (SQLException e) {
51+
logger.error("Error during executing query.");
52+
}
4553
}
54+
} else {
55+
56+
logger.debug("Null Connection returned for server: " + dbServerDisplayName);
4657
}
58+
4759
} catch (SQLException e) {
4860
logger.error("Error Opening connection", e);
4961
status = false;
@@ -52,7 +64,9 @@ public void run() {
5264
status = false;
5365
} finally {
5466
try {
55-
closeConnection(connection);
67+
if (connection != null) {
68+
closeConnection(connection);
69+
}
5670
} catch (Exception e) {
5771
logger.error("Issue closing the connection", e);
5872
}
@@ -108,7 +122,11 @@ private ResultSet getResultSet(Map query, Statement statement, ResultSet resultS
108122
String queryStmt = (String) query.get("queryStmt");
109123
queryStmt = substitute(queryStmt);
110124

125+
long timestamp1 = System.currentTimeMillis();
111126
resultSet = jdbcAdapter.queryDatabase(queryStmt, statement);
127+
long timestamp2 = System.currentTimeMillis();
128+
129+
logger.debug("Queried the database in :"+ (timestamp2-timestamp1)+ " ms for query: \n " + queryStmt);
112130
return resultSet;
113131
}
114132

0 commit comments

Comments
 (0)