public long getThreadID(long orderingKey) { // skip hashcode generation in this special case if (threadIds.length == 1) { return threadIds[0]; } return threadIds[MathUtils.signSafeMod(orderingKey, threadIds.length)]; }
/** * skip hashcode generation in this special case. * * @param orderingKey long ordering key * @return the thread for executing this order key */ public ExecutorService chooseThread(long orderingKey) { if (threads.length == 1) { return threads[0]; } return threads[MathUtils.signSafeMod(orderingKey, threads.length)]; }
public ExecutorService chooseThread(Object orderingKey) { // skip hashcode generation in this special case if (threads.length == 1) { return threads[0]; } if (null == orderingKey) { return threads[rand.nextInt(threads.length)]; } else { return threads[MathUtils.signSafeMod(orderingKey.hashCode(), threads.length)]; } }
private SingleDirectoryDbLedgerStorage getLedgerSorage(long ledgerId) { return ledgerStorageList.get(MathUtils.signSafeMod(ledgerId, numberOfDirs)); }
/** * Find next broker {@link LoadManagerReport} in round-robin fashion. * * @return * @throws PulsarServerException */ LoadManagerReport nextBroker() throws PulsarServerException { List<LoadManagerReport> availableBrokers = localZkCache.getAvailableBrokers(); if (availableBrokers.isEmpty()) { throw new PulsarServerException("No active broker is available"); } else { int brokersCount = availableBrokers.size(); int nextIdx = signSafeMod(counter.getAndIncrement(), brokersCount); return availableBrokers.get(nextIdx); } }
List<File> ledgerDirs = ledgerDirsManager.getAllLedgerDirs(); int dirIndex = MathUtils.signSafeMod(ledgerId, ledgerDirs.size()); String ledgerBasePath = ledgerDirs.get(dirIndex).toString();