Fix flow control host bug
This commit is contained in:
@@ -325,7 +325,8 @@ public class FlowControlFilter extends FizzWebFilter {
|
||||
StringBuilder b = ThreadContext.getStringBuilder();
|
||||
|
||||
if (hasHost) {
|
||||
String resourceId = ResourceIdUtils.buildResourceId(app, ip, node, service, path);
|
||||
// String resourceId = ResourceIdUtils.buildResourceId(app, ip, node, service, path);
|
||||
String resourceId = ResourceIdUtils.buildResourceId(null, null, node, null, null);
|
||||
ResourceConfig resourceConfig = new ResourceConfig(resourceId, 0, 0);
|
||||
resourceConfigs.add(resourceConfig);
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ public class FlowStat {
|
||||
// increase request and concurrent request
|
||||
for (ResourceConfig resourceConfig : resourceConfigs) {
|
||||
ResourceStat resourceStat = getResourceStat(resourceConfig.getResourceId());
|
||||
long cons = resourceStat.getConcurrentRequests().incrementAndGet();
|
||||
int cons = resourceStat.getConcurrentRequests().incrementAndGet();
|
||||
resourceStat.getTimeSlot(curTimeSlotId).updatePeakConcurrentReqeusts(cons);
|
||||
resourceStat.getTimeSlot(curTimeSlotId).incr();
|
||||
}
|
||||
@@ -276,7 +276,7 @@ public class FlowStat {
|
||||
// increase request and concurrent request
|
||||
for (ResourceConfig resourceConfig : resourceConfigs) {
|
||||
ResourceStat resourceStat = getResourceStat(resourceConfig.getResourceId());
|
||||
long cons = resourceStat.getConcurrentRequests().incrementAndGet();
|
||||
int cons = resourceStat.getConcurrentRequests().incrementAndGet();
|
||||
resourceStat.getTimeSlot(curTimeSlotId).updatePeakConcurrentReqeusts(cons);
|
||||
resourceStat.getTimeSlot(curTimeSlotId).incr();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ package we.stats;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
@@ -50,7 +51,8 @@ public class ResourceStat {
|
||||
/**
|
||||
* Concurrent requests
|
||||
*/
|
||||
private AtomicLong concurrentRequests = new AtomicLong(0);
|
||||
// private AtomicLong concurrentRequests = new AtomicLong(0);
|
||||
private AtomicInteger concurrentRequests = new AtomicInteger(0);
|
||||
|
||||
private ReentrantReadWriteLock rwl1 = new ReentrantReadWriteLock();
|
||||
private ReentrantReadWriteLock rwl2 = new ReentrantReadWriteLock();
|
||||
@@ -95,16 +97,16 @@ public class ResourceStat {
|
||||
try {
|
||||
boolean isExceeded = false;
|
||||
if (maxCon != null && maxCon.intValue() > 0) {
|
||||
long n = this.concurrentRequests.get();
|
||||
int n = this.concurrentRequests.get();
|
||||
if (n >= maxCon.longValue()) {
|
||||
isExceeded = true;
|
||||
this.incrBlockRequestToTimeSlot(timeSlotId);
|
||||
} else {
|
||||
long conns = this.concurrentRequests.incrementAndGet();
|
||||
int conns = this.concurrentRequests.incrementAndGet();
|
||||
this.getTimeSlot(timeSlotId).updatePeakConcurrentReqeusts(conns);
|
||||
}
|
||||
} else {
|
||||
long conns = this.concurrentRequests.incrementAndGet();
|
||||
int conns = this.concurrentRequests.incrementAndGet();
|
||||
this.getTimeSlot(timeSlotId).updatePeakConcurrentReqeusts(conns);
|
||||
}
|
||||
return !isExceeded;
|
||||
@@ -118,7 +120,7 @@ public class ResourceStat {
|
||||
*
|
||||
*/
|
||||
public void decrConcurrentRequest(long timeSlotId) {
|
||||
long conns = this.concurrentRequests.decrementAndGet();
|
||||
int conns = this.concurrentRequests.decrementAndGet();
|
||||
this.getTimeSlot(timeSlotId).updatePeakConcurrentReqeusts(conns);
|
||||
}
|
||||
|
||||
@@ -335,11 +337,11 @@ public class ResourceStat {
|
||||
this.timeSlots = timeSlots;
|
||||
}
|
||||
|
||||
public AtomicLong getConcurrentRequests() {
|
||||
public AtomicInteger getConcurrentRequests() {
|
||||
return concurrentRequests;
|
||||
}
|
||||
|
||||
public void setConcurrentRequests(AtomicLong concurrentRequests) {
|
||||
public void setConcurrentRequests(AtomicInteger concurrentRequests) {
|
||||
this.concurrentRequests = concurrentRequests;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class TimeSlot {
|
||||
* Total response time
|
||||
*/
|
||||
// private AtomicLong totalRt = new AtomicLong(0);
|
||||
private volatile long totalRt = 0;
|
||||
private volatile int totalRt = 0;
|
||||
|
||||
/**
|
||||
* Completed Request counter
|
||||
@@ -68,11 +68,10 @@ public class TimeSlot {
|
||||
// private AtomicLong compReqs = new AtomicLong();
|
||||
private volatile int compReqs = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Peak concurrent requests
|
||||
*/
|
||||
private long peakConcurrentRequests;
|
||||
private volatile int peakConcurrentRequests;
|
||||
|
||||
/**
|
||||
* Block requests <br/>
|
||||
@@ -84,7 +83,7 @@ public class TimeSlot {
|
||||
* Total block requests of the resource and its underlying resources <br/>
|
||||
*/
|
||||
// private AtomicLong totalBlockRequests = new AtomicLong(0);
|
||||
private volatile long totalBlockRequests = 0;
|
||||
private volatile int totalBlockRequests = 0;
|
||||
|
||||
private AtomicReference<CircuitBreaker.State> circuitBreakState = new AtomicReference<>(CircuitBreaker.State.CLOSED);
|
||||
|
||||
@@ -211,7 +210,7 @@ public class TimeSlot {
|
||||
*
|
||||
* @param concurrentRequests Current concurrent requests
|
||||
*/
|
||||
public synchronized void updatePeakConcurrentReqeusts(long concurrentRequests) {
|
||||
public synchronized void updatePeakConcurrentReqeusts(int concurrentRequests) {
|
||||
peakConcurrentRequests = concurrentRequests > peakConcurrentRequests ? concurrentRequests
|
||||
: peakConcurrentRequests;
|
||||
}
|
||||
@@ -244,11 +243,11 @@ public class TimeSlot {
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
public long getTotalRt() {
|
||||
public int getTotalRt() {
|
||||
return totalRt;
|
||||
}
|
||||
|
||||
public void setTotalRt(long totalRt) {
|
||||
public void setTotalRt(int totalRt) {
|
||||
this.totalRt = totalRt;
|
||||
}
|
||||
|
||||
@@ -256,7 +255,7 @@ public class TimeSlot {
|
||||
return peakConcurrentRequests;
|
||||
}
|
||||
|
||||
public void setPeakConcurrentRequests(long peakConcurrentRequests) {
|
||||
public void setPeakConcurrentRequests(int peakConcurrentRequests) {
|
||||
this.peakConcurrentRequests = peakConcurrentRequests;
|
||||
}
|
||||
|
||||
@@ -288,7 +287,7 @@ public class TimeSlot {
|
||||
this.compReqs = compReqs;
|
||||
}
|
||||
|
||||
public long getTotalBlockRequests() {
|
||||
public int getTotalBlockRequests() {
|
||||
return totalBlockRequests;
|
||||
}
|
||||
|
||||
@@ -296,7 +295,7 @@ public class TimeSlot {
|
||||
++totalBlockRequests;
|
||||
}
|
||||
|
||||
public void setTotalBlockRequests(long totalBlockRequests) {
|
||||
public void setTotalBlockRequests(int totalBlockRequests) {
|
||||
this.totalBlockRequests = totalBlockRequests;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user