@Test @ClientCompatibleTest public void isNull() { HazelcastInstance hazelcastInstance = createHazelcastInstance(); IAtomicReference<String> ref = hazelcastInstance.getAtomicReference("isNull"); assertTrue(ref.isNull()); ref.set("foo"); assertFalse(ref.isNull()); }
@Override public boolean addJobToCurrent(Job j) throws Exception { IAtomicReference<Job> r = h.getAtomicReference("job-" + j.getWorkerId()); if (r.get() != null || !r.isNull()) { boolean sent = false; while (!sent) { // always update for (String s : workers()) { if (jobFor(s) == null) { log.info( "Redirecting worker " + j.getWorkerId() + " to " + s + " due to work already being allocated"); r = h.getAtomicReference("job-" + s); j.setWorkerId(s); sent = true; } } } } r.set(j); // iterate over jobs without the work/data j.setWork(null); jobs.add(j); return true; }
@Override public void clearJob(String id) throws Exception { if (id == null) { log.warn("No job to clear; was null, returning"); return; } IAtomicReference<Job> jRef = h.getAtomicReference("job-" + id); if (jRef.isNull()) return; jRef.clear(); log.info("Destroyed job ref " + id); Job remove = null; for (Job j : jobs) { if (j.getWorkerId().equals(id)) { remove = j; break; } } jobs.remove(remove); }
@Override public Job jobFor(String id) { IAtomicReference<Job> j = h.getAtomicReference("job-" + id); if (j.isNull() || isCurrentlyJob(id)) return null; return j.get(); }