List of usage examples for java.util.concurrent.atomic AtomicInteger get
public final int get()
From source file:com.twitter.distributedlog.service.balancer.ClusterBalancer.java
public void balance(int rebalanceWaterMark, double rebalanceTolerancePercentage, int rebalanceConcurrency, Optional<String> source, Optional<RateLimiter> rebalanceRateLimiter) { Map<SocketAddress, Set<String>> distribution = monitor.getStreamOwnershipDistribution(); if (distribution.size() <= 1) { return;// w w w . j ava2 s .c o m } SocketAddress sourceAddr = null; if (source.isPresent()) { sourceAddr = DLSocketAddress.parseSocketAddress(source.get()); logger.info("Balancer source is {}", sourceAddr); if (!distribution.containsKey(sourceAddr)) { return; } } // Get the list of hosts ordered by number of streams in DESC order List<Host> hosts = new ArrayList<Host>(distribution.size()); for (Map.Entry<SocketAddress, Set<String>> entry : distribution.entrySet()) { Host host = new Host(entry.getKey(), entry.getValue(), clientBuilder); hosts.add(host); } Collections.sort(hosts, new HostComparator()); try { // find the host to move streams from. int hostIdxMoveFrom = -1; if (null != sourceAddr) { for (Host host : hosts) { ++hostIdxMoveFrom; if (sourceAddr.equals(host.address)) { break; } } } // compute the average load. int totalStream = 0; for (Host host : hosts) { totalStream += host.streams.size(); } double averageLoad; if (hostIdxMoveFrom >= 0) { averageLoad = ((double) totalStream / (hosts.size() - 1)); } else { averageLoad = ((double) totalStream / hosts.size()); } int moveFromLowWaterMark; int moveToHighWaterMark = Math.max(1, (int) (averageLoad + averageLoad * rebalanceTolerancePercentage / 100.0f)); if (hostIdxMoveFrom >= 0) { moveFromLowWaterMark = Math.max(0, rebalanceWaterMark); moveStreams(hosts, new AtomicInteger(hostIdxMoveFrom), moveFromLowWaterMark, new AtomicInteger(hosts.size() - 1), moveToHighWaterMark, rebalanceRateLimiter); moveRemainingStreamsFromSource(hosts.get(hostIdxMoveFrom), hosts, rebalanceRateLimiter); } else { moveFromLowWaterMark = Math.max((int) Math.ceil(averageLoad), rebalanceWaterMark); AtomicInteger moveFrom = new AtomicInteger(0); AtomicInteger moveTo = new AtomicInteger(hosts.size() - 1); while (moveFrom.get() < moveTo.get()) { moveStreams(hosts, moveFrom, moveFromLowWaterMark, moveTo, moveToHighWaterMark, rebalanceRateLimiter); moveFrom.incrementAndGet(); } } } finally { for (Host host : hosts) { host.close(); } } }
From source file:com.linkedin.pinot.core.offline.OfflineTableDataManagerTest.java
private void verifyCount(SegmentDataManager segmentDataManager, int value) throws Exception { Field refcntField = SegmentDataManager.class.getDeclaredField(refCntFieldName); refcntField.setAccessible(true);// w w w . ja v a 2 s . c o m AtomicInteger refCnt = (AtomicInteger) refcntField.get(segmentDataManager); int actualCount = refCnt.get(); Assert.assertEquals(actualCount, value, segmentDataManager.getSegmentName() + " had " + actualCount + " instead of " + value); }
From source file:com.rationaldevelopers.oss.service.CacheService.java
@Scheduled(fixedRate = 60000) public void trueUpCache() { if (!lock.isLocked()) { lock.lock();//from w w w . j av a2 s .c o m try { LOGGER.info("Running Timed Task"); final Iterable<SimpleItem> all = simpleItemService.findAll(); final AtomicInteger itemsUpdated = new AtomicInteger(0); StreamSupport.stream(all.spliterator(), false).filter(i -> !cache.containsKey(i.getSid()) || cache.containsKey(i.getSid()) && !cache.get(i.getSid()).equals(i)).forEach(i -> { cache.put(i.getSid(), i); itemsUpdated.incrementAndGet(); }); LOGGER.info("Total Items Updated: {}", itemsUpdated.get()); } finally { lock.unlock(); } } }
From source file:gov.pnnl.goss.gridappsd.process.ProcessManagerImpl.java
public int assignSimulationPort(int simulationId) throws Exception { Integer simIdKey = new Integer(simulationId); if (!simulationPorts.containsKey(simIdKey)) { int tempPort = 49152 + randPort.nextInt(16384); AtomicInteger tempPortObj = new AtomicInteger(tempPort); while (simulationPorts.containsValue(tempPortObj)) { int newTempPort = 49152 + randPort.nextInt(16384); tempPortObj.set(newTempPort); }/* w w w .j a v a2 s . c o m*/ simulationPorts.put(simIdKey, tempPortObj); return tempPortObj.get(); //TODO: test host:port is available } else { throw new Exception( "The simulation id already exists. This indicates that the simulation id is part of a" + "simulation in progress."); } }
From source file:org.zenoss.zep.dao.impl.DaoUtilsTest.java
@Test public void testDeadlockRetry() throws Exception { final AtomicInteger i = new AtomicInteger(); final int returnVal = new Random().nextInt(); int result = DaoUtils.deadlockRetry(new Callable<Integer>() { @Override/*w w w . j a va 2 s . c o m*/ public Integer call() throws Exception { if (i.incrementAndGet() < 5) { throw new DeadlockLoserDataAccessException("My fake exception", null); } return returnVal; } }); assertEquals(i.get(), 5); assertEquals(result, returnVal); }
From source file:com.twitter.distributedlog.service.balancer.ClusterBalancer.java
void moveStreams(List<Host> hosts, AtomicInteger hostIdxMoveFrom, int moveFromLowWaterMark, AtomicInteger hostIdxMoveTo, int moveToHighWaterMark, Optional<RateLimiter> rateLimiter) { if (hostIdxMoveFrom.get() < 0 || hostIdxMoveFrom.get() >= hosts.size() || hostIdxMoveTo.get() < 0 || hostIdxMoveTo.get() >= hosts.size() || hostIdxMoveFrom.get() >= hostIdxMoveTo.get()) { return;/*w ww .jav a 2s . c o m*/ } if (logger.isDebugEnabled()) { logger.debug( "Moving streams : hosts = {}, from = {}, to = {} : from_low_water_mark = {}, to_high_water_mark = {}", new Object[] { hosts, hostIdxMoveFrom.get(), hostIdxMoveTo.get(), moveFromLowWaterMark, moveToHighWaterMark }); } Host hostMoveFrom = hosts.get(hostIdxMoveFrom.get()); int numStreamsOnFromHost = hostMoveFrom.streams.size(); if (numStreamsOnFromHost <= moveFromLowWaterMark) { // do nothing return; } int numStreamsToMove = numStreamsOnFromHost - moveFromLowWaterMark; LinkedList<String> streamsToMove = new LinkedList<String>(hostMoveFrom.streams); Collections.shuffle(streamsToMove); if (logger.isDebugEnabled()) { logger.debug("Try to move {} streams from host {} : streams = {}", new Object[] { numStreamsToMove, hostMoveFrom.address, streamsToMove }); } while (numStreamsToMove-- > 0 && !streamsToMove.isEmpty()) { if (rateLimiter.isPresent()) { rateLimiter.get().acquire(); } // pick a host to move Host hostMoveTo = hosts.get(hostIdxMoveTo.get()); while (hostMoveTo.streams.size() >= moveToHighWaterMark) { int hostIdx = hostIdxMoveTo.decrementAndGet(); logger.info("move to host : {}, from {}", hostIdx, hostIdxMoveFrom.get()); if (hostIdx <= hostIdxMoveFrom.get()) { return; } else { hostMoveTo = hosts.get(hostIdx); if (logger.isDebugEnabled()) { logger.debug("Target host to move moved to host {} @ {}", hostIdx, hostMoveTo); } } } // pick a stream String stream = streamsToMove.remove(); // move the stream if (moveStream(stream, hostMoveFrom, hostMoveTo)) { hostMoveFrom.streams.remove(stream); hostMoveTo.streams.add(stream); } } }
From source file:org.apache.distributedlog.service.balancer.ClusterBalancer.java
void moveStreams(List<Host> hosts, AtomicInteger hostIdxMoveFrom, int moveFromLowWaterMark, AtomicInteger hostIdxMoveTo, int moveToHighWaterMark, Optional<RateLimiter> rateLimiter) { if (hostIdxMoveFrom.get() < 0 || hostIdxMoveFrom.get() >= hosts.size() || hostIdxMoveTo.get() < 0 || hostIdxMoveTo.get() >= hosts.size() || hostIdxMoveFrom.get() >= hostIdxMoveTo.get()) { return;//w w w . ja v a 2 s . co m } if (logger.isDebugEnabled()) { logger.debug( "Moving streams : hosts = {}, from = {}, to = {} :" + " from_low_water_mark = {}, to_high_water_mark = {}", new Object[] { hosts, hostIdxMoveFrom.get(), hostIdxMoveTo.get(), moveFromLowWaterMark, moveToHighWaterMark }); } Host hostMoveFrom = hosts.get(hostIdxMoveFrom.get()); int numStreamsOnFromHost = hostMoveFrom.streams.size(); if (numStreamsOnFromHost <= moveFromLowWaterMark) { // do nothing return; } int numStreamsToMove = numStreamsOnFromHost - moveFromLowWaterMark; LinkedList<String> streamsToMove = new LinkedList<String>(hostMoveFrom.streams); Collections.shuffle(streamsToMove); if (logger.isDebugEnabled()) { logger.debug("Try to move {} streams from host {} : streams = {}", new Object[] { numStreamsToMove, hostMoveFrom.address, streamsToMove }); } while (numStreamsToMove-- > 0 && !streamsToMove.isEmpty()) { if (rateLimiter.isPresent()) { rateLimiter.get().acquire(); } // pick a host to move Host hostMoveTo = hosts.get(hostIdxMoveTo.get()); while (hostMoveTo.streams.size() >= moveToHighWaterMark) { int hostIdx = hostIdxMoveTo.decrementAndGet(); logger.info("move to host : {}, from {}", hostIdx, hostIdxMoveFrom.get()); if (hostIdx <= hostIdxMoveFrom.get()) { return; } else { hostMoveTo = hosts.get(hostIdx); if (logger.isDebugEnabled()) { logger.debug("Target host to move moved to host {} @ {}", hostIdx, hostMoveTo); } } } // pick a stream String stream = streamsToMove.remove(); // move the stream if (moveStream(stream, hostMoveFrom, hostMoveTo)) { hostMoveFrom.streams.remove(stream); hostMoveTo.streams.add(stream); } } }
From source file:com.opengamma.financial.currency.AbstractCurrencyMatrix.java
protected CurrencyMatrixValue removeConversion(final Currency source, final Currency target) { ArgumentChecker.notNull(source, "source"); ArgumentChecker.notNull(target, "target"); ConcurrentHashMap<Currency, CurrencyMatrixValue> conversions = _values.get(source); if (conversions == null) { // Nothing from that source return null; }/*from w w w . j a v a 2s . co m*/ final CurrencyMatrixValue value = conversions.remove(target); if (value == null) { // No conversion from source to target return null; } // Removed a value, so need to decrease the target's reference count AtomicInteger targetCount = _targets.get(target); if (targetCount != null) { // Target count should never be null at this point if (targetCount.decrementAndGet() == 0) { // This was the last reference to the target, confirm and remove atomically against the "add" operation synchronized (targetCount) { if (targetCount.get() == 0) { _targets.remove(target); } } } } return value; }
From source file:org.zenoss.zep.dao.impl.DaoUtilsTest.java
@Test public void testDeadlockRetryOtherException() throws Exception { final AtomicInteger i = new AtomicInteger(); try {/*from ww w. j a va 2 s . c o m*/ DaoUtils.deadlockRetry(new Callable<Integer>() { @Override public Integer call() throws Exception { i.incrementAndGet(); throw new RuntimeException("Bad exception - no retry"); } }); fail("Should have thrown an exception after first retry"); } catch (RuntimeException e) { assertEquals(1, i.get()); assertEquals("Bad exception - no retry", e.getMessage()); } }
From source file:org.jtheque.features.FeatureServiceTest.java
@Test public void listenerCalledForMainFeatures() { final AtomicInteger addCounter = new AtomicInteger(0); final AtomicInteger removeCounter = new AtomicInteger(0); final AtomicInteger modifyCounter = new AtomicInteger(0); featureService.addFeatureListener(new MyFeatureListener(addCounter, removeCounter, modifyCounter)); featureService.addMenu("no-module", new MenuMain()); assertEquals(1, addCounter.get()); assertEquals(0, removeCounter.get()); assertEquals(0, modifyCounter.get()); featureService.addMenu("no-module", new MenuMain()); assertEquals(2, addCounter.get());//from ww w. j a v a2 s . c o m assertEquals(0, removeCounter.get()); assertEquals(0, modifyCounter.get()); }