mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
use AtomicLongFieldUpdater instead of AtomicLong
This commit is contained in:
@@ -20,39 +20,63 @@ import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
|
||||
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
|
||||
|
||||
import com.alibaba.druid.util.Histogram;
|
||||
|
||||
public class WebSessionStat {
|
||||
|
||||
private final String sessionId;
|
||||
private final String sessionId;
|
||||
|
||||
private final AtomicInteger runningCount = new AtomicInteger();
|
||||
private final AtomicInteger concurrentMax = new AtomicInteger();
|
||||
private final AtomicLong requestCount = new AtomicLong(0);
|
||||
private final AtomicLong requestErrorCount = new AtomicLong(0);
|
||||
private final AtomicLong requestTimeNano = new AtomicLong();
|
||||
private volatile int runningCount;
|
||||
private volatile int concurrentMax;
|
||||
final static AtomicIntegerFieldUpdater<WebSessionStat> runningCountUpdater = AtomicIntegerFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"runningCount");
|
||||
final static AtomicIntegerFieldUpdater<WebSessionStat> concurrentMaxUpdater = AtomicIntegerFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"concurrentMax");
|
||||
|
||||
private final AtomicLong jdbcFetchRowCount = new AtomicLong();
|
||||
private final AtomicLong jdbcUpdateCount = new AtomicLong();
|
||||
private final AtomicLong jdbcExecuteCount = new AtomicLong();
|
||||
private final AtomicLong jdbcExecuteTimeNano = new AtomicLong();
|
||||
private volatile long requestCount;
|
||||
private volatile long requestErrorCount;
|
||||
private volatile long requestTimeNano;
|
||||
|
||||
private final AtomicLong jdbcCommitCount = new AtomicLong();
|
||||
private final AtomicLong jdbcRollbackCount = new AtomicLong();
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> requestCountUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"requestCount");
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> requestErrorCountUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"requestErrorCount");
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> requestTimeNanoUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"requestTimeNano");
|
||||
|
||||
private long createTimeMillis = -1L;
|
||||
private volatile long lastAccessTimeMillis = -1L;
|
||||
private volatile long jdbcFetchRowCount;
|
||||
private volatile long jdbcUpdateCount;
|
||||
private volatile long jdbcExecuteCount;
|
||||
private volatile long jdbcExecuteTimeNano;
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> jdbcFetchRowCountUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"jdbcFetchRowCount");
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> jdbcUpdateCountUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"jdbcUpdateCount");
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> jdbcExecuteCountUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"jdbcExecuteCount");
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> jdbcExecuteTimeNanoUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"jdbcExecuteTimeNano");
|
||||
|
||||
private Set<String> remoteAddresses = new HashSet<String>();
|
||||
private volatile long jdbcCommitCount;
|
||||
private volatile long jdbcRollbackCount;
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> jdbcCommitCountUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"jdbcCommitCount");
|
||||
final static AtomicLongFieldUpdater<WebSessionStat> jdbcRollbackCountUpdater = AtomicLongFieldUpdater.newUpdater(WebSessionStat.class,
|
||||
"jdbcRollbackCount");
|
||||
|
||||
private String principal = null;
|
||||
private long createTimeMillis = -1L;
|
||||
private volatile long lastAccessTimeMillis = -1L;
|
||||
|
||||
private String userAgent;
|
||||
private Set<String> remoteAddresses = new HashSet<String>(2);
|
||||
|
||||
private Histogram requestIntervalHistogram = Histogram.makeHistogram(8);
|
||||
private String principal = null;
|
||||
|
||||
private String userAgent;
|
||||
|
||||
private Histogram requestIntervalHistogram = Histogram.makeHistogram(8);
|
||||
|
||||
public WebSessionStat(String sessionId){
|
||||
super();
|
||||
@@ -60,17 +84,17 @@ public class WebSessionStat {
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
concurrentMax.set(0);
|
||||
requestCount.set(0);
|
||||
requestErrorCount.set(0);
|
||||
requestTimeNano.set(0);
|
||||
concurrentMaxUpdater.set(this, 0);
|
||||
requestCountUpdater.set(this, 0);
|
||||
requestErrorCountUpdater.set(this, 0);
|
||||
requestTimeNanoUpdater.set(this, 0);
|
||||
|
||||
jdbcFetchRowCount.set(0);
|
||||
jdbcUpdateCount.set(0);
|
||||
jdbcExecuteCount.set(0);
|
||||
jdbcExecuteTimeNano.set(0);
|
||||
jdbcCommitCount.set(0);
|
||||
jdbcRollbackCount.set(0);
|
||||
jdbcFetchRowCountUpdater.set(this, 0);
|
||||
jdbcUpdateCountUpdater.set(this, 0);
|
||||
jdbcExecuteCountUpdater.set(this, 0);
|
||||
jdbcExecuteTimeNanoUpdater.set(this, 0);
|
||||
jdbcCommitCountUpdater.set(this, 0);
|
||||
jdbcRollbackCountUpdater.set(this, 0);
|
||||
|
||||
remoteAddresses.clear();
|
||||
principal = null;
|
||||
@@ -159,12 +183,12 @@ public class WebSessionStat {
|
||||
}
|
||||
|
||||
public void beforeInvoke() {
|
||||
int running = runningCount.incrementAndGet();
|
||||
int running = runningCountUpdater.incrementAndGet(this);
|
||||
|
||||
for (;;) {
|
||||
int max = concurrentMax.get();
|
||||
int max = concurrentMaxUpdater.get(this);
|
||||
if (running > max) {
|
||||
if (concurrentMax.compareAndSet(max, running)) {
|
||||
if (concurrentMaxUpdater.compareAndSet(this, max, running)) {
|
||||
break;
|
||||
} else {
|
||||
continue;
|
||||
@@ -183,16 +207,16 @@ public class WebSessionStat {
|
||||
}
|
||||
|
||||
public void incrementRequestCount() {
|
||||
requestCount.incrementAndGet();
|
||||
requestCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public void afterInvoke(Throwable error, long nanos) {
|
||||
runningCount.decrementAndGet();
|
||||
runningCountUpdater.decrementAndGet(this);
|
||||
reacord(nanos);
|
||||
}
|
||||
|
||||
public void reacord(long nanos) {
|
||||
requestTimeNano.addAndGet(nanos);
|
||||
requestTimeNanoUpdater.addAndGet(this, nanos);
|
||||
|
||||
WebRequestStat requestStat = WebRequestStat.current();
|
||||
if (requestStat != null) {
|
||||
@@ -210,23 +234,23 @@ public class WebSessionStat {
|
||||
}
|
||||
|
||||
public int getRunningCount() {
|
||||
return this.runningCount.get();
|
||||
return this.runningCount;
|
||||
}
|
||||
|
||||
public long getConcurrentMax() {
|
||||
return concurrentMax.get();
|
||||
return concurrentMax;
|
||||
}
|
||||
|
||||
public long getRequestCount() {
|
||||
return requestCount.get();
|
||||
return requestCount;
|
||||
}
|
||||
|
||||
public long getRequestErrorCount() {
|
||||
return requestErrorCount.get();
|
||||
return requestErrorCount;
|
||||
}
|
||||
|
||||
public long getRequestTimeNano() {
|
||||
return requestTimeNano.get();
|
||||
return requestTimeNano;
|
||||
}
|
||||
|
||||
public long getRequestTimeMillis() {
|
||||
@@ -234,31 +258,31 @@ public class WebSessionStat {
|
||||
}
|
||||
|
||||
public void addJdbcFetchRowCount(long delta) {
|
||||
this.jdbcFetchRowCount.addAndGet(delta);
|
||||
jdbcFetchRowCountUpdater.addAndGet(this, delta);
|
||||
}
|
||||
|
||||
public long getJdbcFetchRowCount() {
|
||||
return jdbcFetchRowCount.get();
|
||||
return jdbcFetchRowCount;
|
||||
}
|
||||
|
||||
public void addJdbcUpdateCount(long updateCount) {
|
||||
this.jdbcUpdateCount.addAndGet(updateCount);
|
||||
jdbcUpdateCountUpdater.addAndGet(this, updateCount);
|
||||
}
|
||||
|
||||
public long getJdbcUpdateCount() {
|
||||
return jdbcUpdateCount.get();
|
||||
return jdbcUpdateCount;
|
||||
}
|
||||
|
||||
public void incrementJdbcExecuteCount() {
|
||||
jdbcExecuteCount.incrementAndGet();
|
||||
jdbcExecuteCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public void addJdbcExecuteCount(long executeCount) {
|
||||
jdbcExecuteCount.addAndGet(executeCount);
|
||||
jdbcExecuteCountUpdater.addAndGet(this, executeCount);
|
||||
}
|
||||
|
||||
public long getJdbcExecuteCount() {
|
||||
return jdbcExecuteCount.get();
|
||||
return jdbcExecuteCount;
|
||||
}
|
||||
|
||||
public long getJdbcExecuteTimeMillis() {
|
||||
@@ -266,35 +290,35 @@ public class WebSessionStat {
|
||||
}
|
||||
|
||||
public long getJdbcExecuteTimeNano() {
|
||||
return jdbcExecuteTimeNano.get();
|
||||
return jdbcExecuteTimeNano;
|
||||
}
|
||||
|
||||
public void addJdbcExecuteTimeNano(long nano) {
|
||||
jdbcExecuteTimeNano.addAndGet(nano);
|
||||
jdbcExecuteTimeNanoUpdater.addAndGet(this, nano);
|
||||
}
|
||||
|
||||
public void incrementJdbcCommitCount() {
|
||||
jdbcCommitCount.incrementAndGet();
|
||||
jdbcCommitCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public long getJdbcCommitCount() {
|
||||
return jdbcCommitCount.get();
|
||||
return jdbcCommitCount;
|
||||
}
|
||||
|
||||
public void addJdbcCommitCount(long commitCount) {
|
||||
this.jdbcCommitCount.addAndGet(commitCount);
|
||||
jdbcCommitCountUpdater.addAndGet(this, commitCount);
|
||||
}
|
||||
|
||||
public void incrementJdbcRollbackCount() {
|
||||
jdbcRollbackCount.incrementAndGet();
|
||||
jdbcRollbackCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public long getJdbcRollbackCount() {
|
||||
return jdbcRollbackCount.get();
|
||||
return jdbcRollbackCount;
|
||||
}
|
||||
|
||||
public void addJdbcRollbackCount(long rollbackCount) {
|
||||
this.jdbcRollbackCount.addAndGet(rollbackCount);
|
||||
jdbcRollbackCountUpdater.addAndGet(this, rollbackCount);
|
||||
}
|
||||
|
||||
public long[] getRequestInterval() {
|
||||
|
||||
@@ -18,48 +18,93 @@ package com.alibaba.druid.support.http.stat;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
|
||||
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
|
||||
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
|
||||
|
||||
import com.alibaba.druid.support.profile.ProfileStat;
|
||||
import com.alibaba.druid.support.profile.Profiler;
|
||||
|
||||
public class WebURIStat {
|
||||
|
||||
private final String uri;
|
||||
private final String uri;
|
||||
|
||||
private final AtomicInteger runningCount = new AtomicInteger();
|
||||
private final AtomicInteger concurrentMax = new AtomicInteger();
|
||||
private final AtomicLong requestCount = new AtomicLong(0);
|
||||
private final AtomicLong requestTimeNano = new AtomicLong();
|
||||
private volatile int runningCount;
|
||||
private volatile int concurrentMax;
|
||||
private volatile long requestCount;
|
||||
private volatile long requestTimeNano;
|
||||
final static AtomicIntegerFieldUpdater<WebURIStat> runningCountUpdater = AtomicIntegerFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"runningCount");
|
||||
final static AtomicIntegerFieldUpdater<WebURIStat> concurrentMaxUpdater = AtomicIntegerFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"concurrentMax");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> requestCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"requestCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> requestTimeNanoUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"requestTimeNano");
|
||||
|
||||
private final AtomicLong jdbcFetchRowCount = new AtomicLong();
|
||||
private final AtomicLong jdbcFetchRowPeak = new AtomicLong(); // 单次请求读取行数的峰值
|
||||
private volatile long jdbcFetchRowCount;
|
||||
private volatile long jdbcFetchRowPeak; // 单次请求读取行数的峰值
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcFetchRowCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcFetchRowCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcFetchRowPeakUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcFetchRowPeak");
|
||||
|
||||
private final AtomicLong jdbcUpdateCount = new AtomicLong();
|
||||
private final AtomicLong jdbcUpdatePeak = new AtomicLong(); // 单次请求更新行数的峰值
|
||||
private volatile long jdbcUpdateCount;
|
||||
private volatile long jdbcUpdatePeak; // 单次请求更新行数的峰值
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcUpdateCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcUpdateCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcUpdatePeakUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcUpdatePeak");
|
||||
|
||||
private final AtomicLong jdbcExecuteCount = new AtomicLong();
|
||||
private final AtomicLong jdbcExecuteErrorCount = new AtomicLong();
|
||||
private final AtomicLong jdbcExecutePeak = new AtomicLong(); // 单次请求执行SQL次数的峰值
|
||||
private final AtomicLong jdbcExecuteTimeNano = new AtomicLong();
|
||||
private volatile long jdbcExecuteCount;
|
||||
private volatile long jdbcExecuteErrorCount;
|
||||
private volatile long jdbcExecutePeak; // 单次请求执行SQL次数的峰值
|
||||
private volatile long jdbcExecuteTimeNano;
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcExecuteCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcExecuteCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcExecuteErrorCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcExecuteErrorCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcExecutePeakUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcExecutePeak");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcExecuteTimeNanoUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcExecuteTimeNano");
|
||||
|
||||
private final AtomicLong jdbcCommitCount = new AtomicLong();
|
||||
private final AtomicLong jdbcRollbackCount = new AtomicLong();
|
||||
private volatile long jdbcCommitCount;
|
||||
private volatile long jdbcRollbackCount;
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcCommitCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcCommitCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcRollbackCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcRollbackCount");
|
||||
|
||||
private final AtomicLong jdbcPoolConnectionOpenCount = new AtomicLong();
|
||||
private final AtomicLong jdbcPoolConnectionCloseCount = new AtomicLong();
|
||||
private volatile long jdbcPoolConnectionOpenCount;
|
||||
private volatile long jdbcPoolConnectionCloseCount;
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcPoolConnectionOpenCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcPoolConnectionOpenCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcPoolConnectionCloseCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcPoolConnectionCloseCount");
|
||||
|
||||
private final AtomicLong jdbcResultSetOpenCount = new AtomicLong();
|
||||
private final AtomicLong jdbcResultSetCloseCount = new AtomicLong();
|
||||
private volatile long jdbcResultSetOpenCount;
|
||||
private volatile long jdbcResultSetCloseCount;
|
||||
|
||||
private final AtomicLong errorCount = new AtomicLong();
|
||||
private volatile long errorCount;
|
||||
|
||||
private volatile long lastAccessTimeMillis = -1L;
|
||||
private volatile long lastAccessTimeMillis = -1L;
|
||||
|
||||
private ProfileStat profiletat = new ProfileStat();
|
||||
private volatile ProfileStat profiletat;
|
||||
|
||||
private final static ThreadLocal<WebURIStat> currentLocal = new ThreadLocal<WebURIStat>();
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcResultSetOpenCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcResultSetOpenCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> jdbcResultSetCloseCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"jdbcResultSetCloseCount");
|
||||
final static AtomicLongFieldUpdater<WebURIStat> errorCountUpdater = AtomicLongFieldUpdater.newUpdater(WebURIStat.class,
|
||||
"errorCount");
|
||||
final static AtomicReferenceFieldUpdater<WebURIStat, ProfileStat> profiletatUpdater;
|
||||
|
||||
static {
|
||||
profiletatUpdater = AtomicReferenceFieldUpdater.newUpdater(WebURIStat.class, ProfileStat.class, "profiletat");
|
||||
}
|
||||
|
||||
private final static ThreadLocal<WebURIStat> currentLocal = new ThreadLocal<WebURIStat>();
|
||||
|
||||
public WebURIStat(String uri){
|
||||
super();
|
||||
@@ -77,12 +122,12 @@ public class WebURIStat {
|
||||
public void beforeInvoke() {
|
||||
currentLocal.set(this);
|
||||
|
||||
int running = runningCount.incrementAndGet();
|
||||
int running = runningCountUpdater.incrementAndGet(this);
|
||||
|
||||
for (;;) {
|
||||
int max = concurrentMax.get();
|
||||
int max = concurrentMaxUpdater.get(this);
|
||||
if (running > max) {
|
||||
if (concurrentMax.compareAndSet(max, running)) {
|
||||
if (concurrentMaxUpdater.compareAndSet(this, max, running)) {
|
||||
break;
|
||||
} else {
|
||||
continue;
|
||||
@@ -92,7 +137,7 @@ public class WebURIStat {
|
||||
}
|
||||
}
|
||||
|
||||
requestCount.incrementAndGet();
|
||||
requestCountUpdater.incrementAndGet(this);
|
||||
|
||||
WebRequestStat requestStat = WebRequestStat.current();
|
||||
if (requestStat != null) {
|
||||
@@ -103,11 +148,11 @@ public class WebURIStat {
|
||||
}
|
||||
|
||||
public void afterInvoke(Throwable error, long nanos) {
|
||||
runningCount.decrementAndGet();
|
||||
requestTimeNano.addAndGet(nanos);
|
||||
runningCountUpdater.decrementAndGet(this);
|
||||
requestTimeNanoUpdater.addAndGet(this, nanos);
|
||||
|
||||
if (error != null) {
|
||||
errorCount.incrementAndGet();
|
||||
errorCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -118,12 +163,12 @@ public class WebURIStat {
|
||||
this.addJdbcFetchRowCount(fetchRowCount);
|
||||
|
||||
for (;;) {
|
||||
long peak = jdbcFetchRowPeak.get();
|
||||
long peak = jdbcFetchRowPeakUpdater.get(this);
|
||||
if (fetchRowCount <= peak) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (jdbcFetchRowPeak.compareAndSet(peak, fetchRowCount)) {
|
||||
if (jdbcFetchRowPeakUpdater.compareAndSet(this, peak, fetchRowCount)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -133,12 +178,12 @@ public class WebURIStat {
|
||||
this.addJdbcExecuteCount(executeCount);
|
||||
|
||||
for (;;) {
|
||||
long peak = jdbcExecutePeak.get();
|
||||
long peak = jdbcExecutePeakUpdater.get(this);
|
||||
if (executeCount <= peak) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (jdbcExecutePeak.compareAndSet(peak, executeCount)) {
|
||||
if (jdbcExecutePeakUpdater.compareAndSet(this, peak, executeCount)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -148,19 +193,19 @@ public class WebURIStat {
|
||||
this.addJdbcUpdateCount(updateCount);
|
||||
|
||||
for (;;) {
|
||||
long peak = jdbcUpdatePeak.get();
|
||||
long peak = jdbcUpdatePeakUpdater.get(this);
|
||||
if (updateCount <= peak) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (jdbcUpdatePeak.compareAndSet(peak, updateCount)) {
|
||||
if (jdbcUpdatePeakUpdater.compareAndSet(this, peak, updateCount)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.jdbcExecuteErrorCount.addAndGet(localStat.getJdbcExecuteErrorCount());
|
||||
this.jdbcExecuteTimeNano.addAndGet(localStat.getJdbcExecuteTimeNano());
|
||||
jdbcExecuteErrorCountUpdater.addAndGet(this, localStat.getJdbcExecuteErrorCount());
|
||||
jdbcExecuteTimeNanoUpdater.addAndGet(this, localStat.getJdbcExecuteTimeNano());
|
||||
|
||||
this.addJdbcPoolConnectionOpenCount(localStat.getJdbcPoolConnectionOpenCount());
|
||||
this.addJdbcPoolConnectionCloseCount(localStat.getJdbcPoolConnectionCloseCount());
|
||||
@@ -176,19 +221,19 @@ public class WebURIStat {
|
||||
}
|
||||
|
||||
public int getRunningCount() {
|
||||
return this.runningCount.get();
|
||||
return this.runningCount;
|
||||
}
|
||||
|
||||
public long getConcurrentMax() {
|
||||
return concurrentMax.get();
|
||||
return concurrentMax;
|
||||
}
|
||||
|
||||
public long getRequestCount() {
|
||||
return requestCount.get();
|
||||
return requestCount;
|
||||
}
|
||||
|
||||
public long getRequestTimeNano() {
|
||||
return requestTimeNano.get();
|
||||
return requestTimeNano;
|
||||
}
|
||||
|
||||
public long getRequestTimeMillis() {
|
||||
@@ -196,47 +241,47 @@ public class WebURIStat {
|
||||
}
|
||||
|
||||
public void addJdbcFetchRowCount(long delta) {
|
||||
this.jdbcFetchRowCount.addAndGet(delta);
|
||||
jdbcFetchRowCountUpdater.addAndGet(this, delta);
|
||||
}
|
||||
|
||||
public long getJdbcFetchRowCount() {
|
||||
return jdbcFetchRowCount.get();
|
||||
return jdbcFetchRowCount;
|
||||
}
|
||||
|
||||
public long getJdbcFetchRowPeak() {
|
||||
return jdbcFetchRowPeak.get();
|
||||
return jdbcFetchRowPeak;
|
||||
}
|
||||
|
||||
public void addJdbcUpdateCount(long updateCount) {
|
||||
this.jdbcUpdateCount.addAndGet(updateCount);
|
||||
jdbcUpdateCountUpdater.addAndGet(this, updateCount);
|
||||
}
|
||||
|
||||
public long getJdbcUpdateCount() {
|
||||
return jdbcUpdateCount.get();
|
||||
return jdbcUpdateCount;
|
||||
}
|
||||
|
||||
public long getJdbcUpdatePeak() {
|
||||
return jdbcUpdatePeak.get();
|
||||
return jdbcUpdatePeak;
|
||||
}
|
||||
|
||||
public void incrementJdbcExecuteCount() {
|
||||
jdbcExecuteCount.incrementAndGet();
|
||||
jdbcExecuteCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public void addJdbcExecuteCount(long executeCount) {
|
||||
jdbcExecuteCount.addAndGet(executeCount);
|
||||
jdbcExecuteCountUpdater.addAndGet(this, executeCount);
|
||||
}
|
||||
|
||||
public long getJdbcExecuteCount() {
|
||||
return jdbcExecuteCount.get();
|
||||
return jdbcExecuteCount;
|
||||
}
|
||||
|
||||
public AtomicLong getJdbcExecuteErrorCount() {
|
||||
public long getJdbcExecuteErrorCount() {
|
||||
return jdbcExecuteErrorCount;
|
||||
}
|
||||
|
||||
public long getJdbcExecutePeak() {
|
||||
return jdbcExecutePeak.get();
|
||||
return jdbcExecutePeak;
|
||||
}
|
||||
|
||||
public long getJdbcExecuteTimeMillis() {
|
||||
@@ -244,23 +289,23 @@ public class WebURIStat {
|
||||
}
|
||||
|
||||
public long getJdbcExecuteTimeNano() {
|
||||
return jdbcExecuteTimeNano.get();
|
||||
return jdbcExecuteTimeNano;
|
||||
}
|
||||
|
||||
public void incrementJdbcCommitCount() {
|
||||
jdbcCommitCount.incrementAndGet();
|
||||
jdbcCommitCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public long getJdbcCommitCount() {
|
||||
return jdbcCommitCount.get();
|
||||
return jdbcCommitCount;
|
||||
}
|
||||
|
||||
public void incrementJdbcRollbackCount() {
|
||||
jdbcRollbackCount.incrementAndGet();
|
||||
jdbcRollbackCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public long getJdbcRollbackCount() {
|
||||
return jdbcRollbackCount.get();
|
||||
return jdbcRollbackCount;
|
||||
}
|
||||
|
||||
public void setLastAccessTimeMillis(long lastAccessTimeMillis) {
|
||||
@@ -280,50 +325,56 @@ public class WebURIStat {
|
||||
}
|
||||
|
||||
public long getErrorCount() {
|
||||
return errorCount.get();
|
||||
return errorCount;
|
||||
}
|
||||
|
||||
public long getJdbcPoolConnectionOpenCount() {
|
||||
return jdbcPoolConnectionOpenCount.get();
|
||||
return jdbcPoolConnectionOpenCount;
|
||||
}
|
||||
|
||||
public void addJdbcPoolConnectionOpenCount(long delta) {
|
||||
jdbcPoolConnectionOpenCount.addAndGet(delta);
|
||||
jdbcPoolConnectionOpenCountUpdater.addAndGet(this, delta);
|
||||
}
|
||||
|
||||
public void incrementJdbcPoolConnectionOpenCount() {
|
||||
jdbcPoolConnectionOpenCount.incrementAndGet();
|
||||
jdbcPoolConnectionOpenCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public long getJdbcPoolConnectionCloseCount() {
|
||||
return jdbcPoolConnectionCloseCount.get();
|
||||
return jdbcPoolConnectionCloseCount;
|
||||
}
|
||||
|
||||
public void addJdbcPoolConnectionCloseCount(long delta) {
|
||||
jdbcPoolConnectionCloseCount.addAndGet(delta);
|
||||
jdbcPoolConnectionCloseCountUpdater.addAndGet(this, delta);
|
||||
}
|
||||
|
||||
public void incrementJdbcPoolConnectionCloseCount() {
|
||||
jdbcPoolConnectionCloseCount.incrementAndGet();
|
||||
jdbcPoolConnectionCloseCountUpdater.incrementAndGet(this);
|
||||
}
|
||||
|
||||
public long getJdbcResultSetOpenCount() {
|
||||
return jdbcResultSetOpenCount.get();
|
||||
return jdbcResultSetOpenCount;
|
||||
}
|
||||
|
||||
public void addJdbcResultSetOpenCount(long delta) {
|
||||
jdbcResultSetOpenCount.addAndGet(delta);
|
||||
jdbcResultSetOpenCountUpdater.addAndGet(this, delta);
|
||||
}
|
||||
|
||||
public long getJdbcResultSetCloseCount() {
|
||||
return jdbcResultSetCloseCount.get();
|
||||
return jdbcResultSetCloseCount;
|
||||
}
|
||||
|
||||
public void addJdbcResultSetCloseCount(long delta) {
|
||||
jdbcResultSetCloseCount.addAndGet(delta);
|
||||
jdbcResultSetCloseCountUpdater.addAndGet(this, delta);
|
||||
}
|
||||
|
||||
public ProfileStat getProfiletat() {
|
||||
if (profiletat != null) {
|
||||
return profiletat;
|
||||
}
|
||||
|
||||
profiletatUpdater.compareAndSet(this, null, new ProfileStat());
|
||||
|
||||
return profiletat;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user