while (!registered.get()) { LockSupport.parkNanos(100L); if (throwable.isTriggered()) throw new RuntimeException(throwable.get()); throwable.setIfFirst(e); throw new RuntimeException(e);
@Override public void registerConsumers(int numConsumers) { // we don't want double spending here if (registered.get()) { if (isDebug) log.info("Master thread locks at RC"); while (registered.get()) { LockSupport.parkNanos(100L); if (throwable.isTriggered()) throw new RuntimeException(throwable.get()); } if (isDebug) log.info("Master thread unlocks at RC"); } // we're passing number of consumers for current session to externalSource, if applicable if (externalSource != null && externalSource instanceof Registerable) ((Registerable) externalSource).registerConsumers(numConsumers); currentConsumers.set(numConsumers); registered.set(true); }
throwable.setIfFirst(e); throw new RuntimeException(e);
if (throwable.isTriggered()) throw new RuntimeException(throwable.get()); while (!isFirst.get()) { LockSupport.parkNanos(1000L); if (throwable.isTriggered()) throw new RuntimeException(throwable.get());
function.step(params, updates); } catch (Exception e) { throwable.setIfFirst(e); throw new RuntimeException(e);
function.step(params, updates, alpha); } catch (Exception e) { throwable.setIfFirst(e); throw new RuntimeException(e);