@Override protected Subject getSubjectInstance(final String subjectName) { final Subject subject = subjectCache.lookup(subjectName); if (subject == null) { throw new IllegalStateException("Unexpected: subject must've been cached by #registerSubjectInBackend"); } return subject; }
@Override protected Subject getSubjectInstance(final String subjectName) { final Subject subject = subjectCache.lookup(subjectName); if (subject == null) { throw new IllegalStateException("Unexpected: subject must've been cached by #registerSubjectInBackend"); } return subject; }
@Override public synchronized Subject register(final String subjectName, final SubjectConfig config) { isValid(); Subject subject = subjectCache.lookup(subjectName); if (subject == null) { registerSubjectInBackend(subjectName, config); subject = getAndCacheSubject(subjectName); } else { logger.debug("Subject {} already exists, reusing", subjectName); } return subject; }
@Override public synchronized Iterable<Subject> subjects() { isValid(); try { // TODO: Allow this behavior to be disabled once we have async updating // of the cache via ZK Observers... This would protect ZK from getting // hammered too much at the expense of slightly stale data. Iterable<String> subjectsInZk = zkClient.getChildren().forPath(""); for (String subjectInZk : subjectsInZk) { if (!subjectInZk.equals(LOCKFILE)) { if (subjectCache.lookup(subjectInZk) == null) { getAndCacheSubject(subjectInZk); } } } } catch (Exception e) { logger.error("An exception occurred while accessing ZK!", e); throw new RuntimeException(e); } return super.subjects(); }
@Override public synchronized Subject register(final String subjectName, final SubjectConfig config) { isValid(); Subject subject = subjectCache.lookup(subjectName); if (subject == null) { registerSubjectInBackend(subjectName, config); subject = getAndCacheSubject(subjectName); } else { logger.debug("Subject {} already exists, reusing", subjectName); } return subject; }
@Override public synchronized Subject lookup(final String subjectName) { isValid(); Subject subject = subjectCache.lookup(subjectName); if (subject == null) { if (checkSubjectExistsInBackend(subjectName)) { subject = getAndCacheSubject(subjectName); } } return subject; }
@Override public synchronized Subject lookup(final String subjectName) { isValid(); Subject subject = subjectCache.lookup(subjectName); if (subject == null) { if (checkSubjectExistsInBackend(subjectName)) { subject = getAndCacheSubject(subjectName); } } return subject; }