@Override public ListenableFuture<String> add(String queueName, Element element) { return queueMap.getUnchecked(queueName).add(element); }
@Override public ListenableFuture<String> add(Element element) { return getQueue().add(element); }
/** * Write a provisioner, and queue jobs to rebalance workers for all tenants in the system. * * @param provisioner Provisioner to write * @throws IOException */ public void writeProvisioner(Provisioner provisioner) throws IOException { tenantLock.lock(); try { provisionerStore.writeProvisioner(provisioner); // rebalance tenants every time a provisioner registers itself for (Tenant tenant : tenantStore.getAllTenants()) { balanceQueue.add(new Element(tenant.getId())); } } finally { tenantLock.unlock(); } }
/** * Delete and reassign workers for provisioners that have not sent a heartbeat since the given timestamp in * milliseconds. * * @param timeoutTs Timestamp in milliseconds to use as a cut off for deleting provisioners. * @throws IOException */ public void timeoutProvisioners(long timeoutTs) throws IOException { tenantLock.lock(); try { Set<String> affectedTenants = Sets.newHashSet(); for (Provisioner provisioner : provisionerStore.getTimedOutProvisioners(timeoutTs)) { String provisionerId = provisioner.getId(); LOG.error("provisioner {} has not sent a heartbeat in over {} seconds, deleting it...", provisionerId, provisionerTimeoutSecs); provisionerStore.deleteProvisioner(provisioner.getId()); affectedTenants.addAll(provisioner.getAssignedTenants()); } for (String affectedTenant : affectedTenants) { balanceQueue.add(new Element(affectedTenant)); } } finally { tenantLock.unlock(); } }
private void deleteProvisioner(Provisioner provisioner) throws IOException { for (String tenant : provisioner.getAssignedTenants()) { balanceQueue.add(new Element(tenant)); } provisionerStore.deleteProvisioner(provisioner.getId()); }
for (int i = 0; i < 60; i++) { Element element = new Element(producerName + "_" + i, String.valueOf(i)); results.put(element.getId(), queue.add(element)); System.out.println("produced: " + element.getId()); producedCount++;
balanceQueue.add(new Element(id)); tenantStore.writeTenant(updatedTenant); return id;