Don't create a new BigArrays instance for every call of `withCircuitBreaking`
Since the circuit breaking service doesn't actually change for BigArrays, we can eagerly create a new instance only once and use that for all further invocations of `withCircuitBreaking`.
This commit is contained in:
parent
d164526d27
commit
240bcc3f08
|
@ -364,6 +364,7 @@ public class BigArrays {
|
||||||
final PageCacheRecycler recycler;
|
final PageCacheRecycler recycler;
|
||||||
final CircuitBreakerService breakerService;
|
final CircuitBreakerService breakerService;
|
||||||
final boolean checkBreaker;
|
final boolean checkBreaker;
|
||||||
|
private final BigArrays circuitBreakingInstance;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public BigArrays(PageCacheRecycler recycler, @Nullable final CircuitBreakerService breakerService) {
|
public BigArrays(PageCacheRecycler recycler, @Nullable final CircuitBreakerService breakerService) {
|
||||||
|
@ -375,6 +376,11 @@ public class BigArrays {
|
||||||
this.checkBreaker = checkBreaker;
|
this.checkBreaker = checkBreaker;
|
||||||
this.recycler = recycler;
|
this.recycler = recycler;
|
||||||
this.breakerService = breakerService;
|
this.breakerService = breakerService;
|
||||||
|
if (checkBreaker) {
|
||||||
|
this.circuitBreakingInstance = this;
|
||||||
|
} else {
|
||||||
|
this.circuitBreakingInstance = new BigArrays(recycler, breakerService, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -410,11 +416,11 @@ public class BigArrays {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a new instance of this BigArrays class with circuit breaking
|
* Return an instance of this BigArrays class with circuit breaking
|
||||||
* explicitly enabled, instead of only accounting enabled
|
* explicitly enabled, instead of only accounting enabled
|
||||||
*/
|
*/
|
||||||
public BigArrays withCircuitBreaking() {
|
public BigArrays withCircuitBreaking() {
|
||||||
return new BigArrays(this.recycler, this.breakerService, true);
|
return this.circuitBreakingInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends AbstractBigArray> T resizeInPlace(T array, long newSize) {
|
private <T extends AbstractBigArray> T resizeInPlace(T array, long newSize) {
|
||||||
|
|
Loading…
Reference in New Issue