Merge branch 'master' of git://github.com/AlibabaTech/druid

This commit is contained in:
shrek.wang
2012-08-17 15:54:21 +08:00
6 changed files with 117 additions and 11 deletions
@@ -116,8 +116,13 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
public void setMergeSql(boolean mergeSql) {
this.mergeSql = mergeSql;
}
@Deprecated
public String mergeSql(String sql) {
return this.mergeSql(sql, dbType);
}
public String mergeSql(String sql, String dbType) {
if (!mergeSql) {
return sql;
}
@@ -125,7 +130,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
try {
sql = ParameterizedOutputVisitorUtils.parameterize(sql, dbType);
} catch (Exception e) {
LOG.error("merge sql error", e);
LOG.error("merge sql error, dbType " + dbType + ", sql : \n" + sql, e);
}
return sql;
@@ -612,14 +617,21 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
}
public JdbcSqlStat createSqlStat(StatementProxy statement, String sql) {
JdbcDataSourceStat dataSourceStat = statement.getConnectionProxy().getDirectDataSource().getDataSourceStat();
DataSourceProxy dataSource = statement.getConnectionProxy().getDirectDataSource();
JdbcDataSourceStat dataSourceStat = dataSource.getDataSourceStat();
JdbcStatContext context = JdbcStatManager.getInstance().getStatContext();
String contextSql = context != null ? context.getSql() : null;
if (contextSql != null && contextSql.length() > 0) {
return dataSourceStat.createSqlStat(contextSql);
} else {
sql = mergeSql(sql);
String dbType = this.dbType;
if (dbType == null) {
dbType = dataSource.getDbType();
}
sql = mergeSql(sql, dbType);
return dataSourceStat.createSqlStat(sql);
}
}
@@ -360,10 +360,11 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
}
public void addExecuteTime(StatementExecuteType executeType, boolean firstResultSet, long nanoSpan) {
addExecuteTime(nanoSpan);
if (StatementExecuteType.ExecuteQuery != executeType && !firstResultSet) {
executeAndResultHoldTimeHistogram.record((nanoSpan) / 1000 / 1000);
}
addExecuteTime(nanoSpan);
}
public void addExecuteTime(long nanoSpan) {
@@ -140,7 +140,7 @@ public class WebStatFilter implements Filter {
if (uriStat == null) {
int status = responseWrapper.getStatus();
if (status == HttpServletResponse.SC_NOT_FOUND) {
String errorUrl = contextPath + "/error_" + status;
String errorUrl = contextPath + "error_" + status;
uriStat = webAppStat.getURIStat(errorUrl, true);
} else {
uriStat = webAppStat.getURIStat(requestURI, true);
@@ -81,6 +81,14 @@ public class Histogram {
return rangeCounters[index].get();
}
public long getSum() {
long sum = 0;
for (int i = 0; i < rangeCounters.length; ++i) {
sum += rangeCounters[i].get();
}
return sum;
}
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append('[');