private void refreshIndexers(List<IndexerModelEvent> events) throws InterruptedException, KeeperException { List<String> indexerNames = zk.getChildren(indexerCollectionPath, watcher); Set<String> indexerNameSet = new HashSet<String>(); indexerNameSet.addAll(indexerNames); // Remove indexers which no longer exist in ZK Iterator<String> currentIndexerNamesIt = indexers.keySet().iterator(); while (currentIndexerNamesIt.hasNext()) { String indexerName = currentIndexerNamesIt.next(); if (!indexerNameSet.contains(indexerName)) { currentIndexerNamesIt.remove(); events.add(new IndexerModelEvent(INDEXER_DELETED, indexerName)); } } // Add/update the other indexers for (String indexerName : indexerNames) { refreshIndexer(indexerName, events); } }
log.debug("Took event from queue: " + event.toString()); if (event.getType() == INDEXER_ADDED || event.getType() == INDEXER_UPDATED) { try { IndexerDefinition indexerDef = indexerModel.getIndexer(event.getIndexerName()); if (shouldRunIndexer(indexerDef)) { if (indexers.containsKey(indexerDef.getName())) { stopIndexer(event.getIndexerName()); } catch (Throwable t) { log.error("Error in IndexerWorker's IndexerModelListener.", t); } else if (event.getType() == INDEXER_DELETED) { stopIndexer(event.getIndexerName());
log.debug("EventWorker received event type = " + event.getType()); if (event.getType() == INDEXER_ADDED || event.getType() == INDEXER_UPDATED) { IndexerDefinition indexer = null; try { indexer = indexerModel.getIndexer(event.getIndexerName()); } catch (IndexerNotFoundException e) {
if (event.getType() == INDEXER_ADDED || event.getType() == INDEXER_UPDATED) { IndexerDefinition indexer = null; try { indexer = indexerModel.getIndexer(event.getIndexerName()); } catch (IndexerNotFoundException e) {
/** * Adds or updates the given index to the internal cache. */ private void refreshIndexer(final String indexerName, List<IndexerModelEvent> events) throws InterruptedException, KeeperException { try { IndexerDefinition indexer = loadIndexer(indexerName, true); IndexerDefinition oldIndexer = indexers.get(indexerName); if (oldIndexer != null && oldIndexer.getOccVersion() == indexer.getOccVersion()) { // nothing changed } else { final boolean isNew = oldIndexer == null; indexers.put(indexerName, indexer); events.add(new IndexerModelEvent(isNew ? INDEXER_ADDED : INDEXER_UPDATED, indexerName)); } } catch (IndexerNotFoundException e) { Object oldIndexer = indexers.remove(indexerName); if (oldIndexer != null) { events.add(new IndexerModelEvent(INDEXER_DELETED, indexerName)); } } } }
log.debug("Took event from queue: " + event.toString()); if (event.getType() == INDEXER_ADDED || event.getType() == INDEXER_UPDATED) { try { IndexerDefinition indexerDef = indexerModel.getIndexer(event.getIndexerName()); if (shouldRunIndexer(indexerDef)) { if (indexers.containsKey(indexerDef.getName())) { stopIndexer(event.getIndexerName()); } catch (Throwable t) { log.error("Error in IndexerWorker's IndexerModelListener.", t); } else if (event.getType() == INDEXER_DELETED) { stopIndexer(event.getIndexerName());
private void refreshIndexers(List<IndexerModelEvent> events) throws InterruptedException, KeeperException { List<String> indexerNames = zk.getChildren(indexerCollectionPath, watcher); Set<String> indexerNameSet = new HashSet<String>(); indexerNameSet.addAll(indexerNames); // Remove indexers which no longer exist in ZK Iterator<String> currentIndexerNamesIt = indexers.keySet().iterator(); while (currentIndexerNamesIt.hasNext()) { String indexerName = currentIndexerNamesIt.next(); if (!indexerNameSet.contains(indexerName)) { currentIndexerNamesIt.remove(); events.add(new IndexerModelEvent(INDEXER_DELETED, indexerName)); } } // Add/update the other indexers for (String indexerName : indexerNames) { refreshIndexer(indexerName, events); } }
/** * Adds or updates the given index to the internal cache. */ private void refreshIndexer(final String indexerName, List<IndexerModelEvent> events) throws InterruptedException, KeeperException { try { IndexerDefinition indexer = loadIndexer(indexerName, true); IndexerDefinition oldIndexer = indexers.get(indexerName); if (oldIndexer != null && oldIndexer.getOccVersion() == indexer.getOccVersion()) { // nothing changed } else { final boolean isNew = oldIndexer == null; indexers.put(indexerName, indexer); events.add(new IndexerModelEvent(isNew ? INDEXER_ADDED : INDEXER_UPDATED, indexerName)); } } catch (IndexerNotFoundException e) { Object oldIndexer = indexers.remove(indexerName); if (oldIndexer != null) { events.add(new IndexerModelEvent(INDEXER_DELETED, indexerName)); } } } }
@Override public void activateAsLeader() throws Exception { log.info("Starting up as indexer master."); // Start these processes, but it is not until we have registered our model listener // that these will receive work. eventWorker.start(); Collection<IndexerDefinition> indexers = indexerModel.getIndexers(listener); // Rather than performing any work that might to be done for the indexers here, // we push out fake events. This way there's only one place where these actions // need to be performed. for (IndexerDefinition index : indexers) { eventWorker.putEvent(new IndexerModelEvent(INDEXER_UPDATED, index.getName())); } log.info("Startup as indexer master successful."); }
@Override public void activateAsLeader() throws Exception { log.info("Starting up as indexer master."); // Start these processes, but it is not until we have registered our model listener // that these will receive work. eventWorker.start(); Collection<IndexerDefinition> indexers = indexerModel.getIndexers(listener); // Rather than performing any work that might to be done for the indexers here, // we push out fake events. This way there's only one place where these actions // need to be performed. for (IndexerDefinition index : indexers) { eventWorker.putEvent(new IndexerModelEvent(INDEXER_UPDATED, index.getName())); } log.info("Startup as indexer master successful."); }