/[projects]/CircuitBreaker/src/dk/thoerup/circuitbreaker/AccountingCircuitBreaker.java
ViewVC logotype

Diff of /CircuitBreaker/src/dk/thoerup/circuitbreaker/AccountingCircuitBreaker.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

CircuitBreaker/src/dk/thoerup/curcuitbreaker/AccountingCircuitBreaker.java revision 460 by torben, Wed Oct 21 07:56:37 2009 UTC CircuitBreaker/src/dk/thoerup/circuitbreaker/AccountingCircuitBreaker.java revision 1306 by torben, Tue Apr 19 15:22:09 2011 UTC
# Line 1  Line 1 
1  package dk.thoerup.curcuitbreaker;  package dk.thoerup.circuitbreaker;
2    
3  import java.util.concurrent.atomic.AtomicInteger;  import java.util.concurrent.atomic.AtomicInteger;
4  import java.util.concurrent.atomic.AtomicLong;  import java.util.concurrent.atomic.AtomicLong;
# Line 6  import java.util.concurrent.atomic.Atomi Line 6  import java.util.concurrent.atomic.Atomi
6  public class AccountingCircuitBreaker extends CircuitBreaker {  public class AccountingCircuitBreaker extends CircuitBreaker {
7    
8          private AtomicInteger tripCount = new AtomicInteger(0); // how many times ahs the CB tripped            private AtomicInteger tripCount = new AtomicInteger(0); // how many times ahs the CB tripped  
9            private AtomicInteger retripCount = new AtomicInteger(0);  
10          private AtomicInteger blockCount = new AtomicInteger(0); //how many times has this CB blocked a call that would otherwise go to the backend          private AtomicInteger blockCount = new AtomicInteger(0); //how many times has this CB blocked a call that would otherwise go to the backend
11          private AtomicInteger totalFailureCount = new AtomicInteger(0); //how many times has the backend thrown an exception          private AtomicInteger totalFailureCount = new AtomicInteger(0); //how many times has the backend thrown an exception
12          private AtomicInteger totalCallCount = new AtomicInteger(0);          private AtomicInteger totalCallCount = new AtomicInteger(0);
13            
14          private AtomicLong lastTrip = new AtomicLong(0);          private AtomicLong lastTrip = new AtomicLong(0);
15            private AtomicLong lastRetrip = new AtomicLong(0);
16            private AtomicLong lastFailure = new AtomicLong(0);
17            private AtomicLong lastReset = new AtomicLong(0);
18            
19          private long lastResetCounters = 0;          private long lastResetCounters = 0;
20                    
21          public AccountingCircuitBreaker(String name, int threshold, long timeoutMS) {          public AccountingCircuitBreaker(String name, int threshold, int timeoutMS) {
22                  super(name, threshold, timeoutMS);                  super(name, threshold, timeoutMS);
23    
24                  resetCounters();                  resetCounters();
# Line 29  public class AccountingCircuitBreaker ex Line 35  public class AccountingCircuitBreaker ex
35                                  blockCount.incrementAndGet();                                  blockCount.incrementAndGet();
36                          } else {                          } else {
37                                  totalFailureCount.incrementAndGet();                                  totalFailureCount.incrementAndGet();
38                                    lastFailure.set( System.currentTimeMillis() );
39                          }                          }
40                          throw e;                          throw e;
41                  }                  }
# Line 43  public class AccountingCircuitBreaker ex Line 50  public class AccountingCircuitBreaker ex
50                  lastTrip.set( System.currentTimeMillis() );                  lastTrip.set( System.currentTimeMillis() );
51          }          }
52                    
53            @Override
54            public void retripBreaker() {
55                    super.retripBreaker();
56                    retripCount.incrementAndGet();
57                    lastRetrip.set( System.currentTimeMillis() );
58            }
59            
60            
61            @Override
62            public void reset() {
63                    super.reset();
64                    lastReset.set( System.currentTimeMillis());
65            }
66    
67          public int getTripCount() {          public int getTripCount() {
68                  return tripCount.get();                  return tripCount.get();
69          }          }
70                    
71            public int getRetripCount() {
72                    return retripCount.get();
73            }
74    
75          public int getBlockCount() {          public int getBlockCount() {
76                  return blockCount.get();                          return blockCount.get();        
77          }          }
# Line 63  public class AccountingCircuitBreaker ex Line 88  public class AccountingCircuitBreaker ex
88                  return lastTrip.get();                  return lastTrip.get();
89          }          }
90                    
91            public long getLastRetrip() {
92                    return lastRetrip.get();
93            }
94    
95            public long getLastFailure() {
96                    return lastFailure.get();
97            }
98            
99            public long getLastReset() {
100                    return lastReset.get();
101            }
102            
103          public int getTotalCallCount() {          public int getTotalCallCount() {
104                  return totalCallCount.get();                  return totalCallCount.get();
105          }          }
106                    
107          public void resetCounters() {          public void resetCounters() {
108                  tripCount.set(0);                  tripCount.set(0);
109                    retripCount.set(0);
110                  blockCount.set(0);                  blockCount.set(0);
111                  totalFailureCount.set(0);                  totalFailureCount.set(0);
112                  totalCallCount.set(0);                  totalCallCount.set(0);
113                  lastTrip.set(0);                  lastTrip.set(0);
114                    lastRetrip.set(0);
115                    lastReset.set(0);
116                    lastFailure.set(0);
117                                    
118                  lastResetCounters = System.currentTimeMillis();                  lastResetCounters = System.currentTimeMillis();
119          }          }

Legend:
Removed from v.460  
changed lines
  Added in v.1306

  ViewVC Help
Powered by ViewVC 1.1.20