Package com.ngdata.hbaseindexer.model.api

Examples of com.ngdata.hbaseindexer.model.api.IndexerModelEvent


            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) {
View Full Code Here


                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));
                }
            }
        }
View Full Code Here

                    int queueSize = eventQueue.size();
                    if (queueSize >= 10) {
                        log.warn("EventWorker queue getting large, size = " + queueSize);
                    }

                    IndexerModelEvent event = eventQueue.take();
                    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())) {
                                    restartIndexer(indexerDef);
                                } else {
                                    startIndexer(indexerDef);
                                }
                            } else {
                                stopIndexer(indexerDef.getName());
                            }
                        } catch (IndexerNotFoundException e) {
                            stopIndexer(event.getIndexerName());
                        } catch (Throwable t) {
                            log.error("Error in IndexerWorker's IndexerModelListener.", t);
                        }
                    } else if (event.getType() == INDEXER_DELETED) {
                        stopIndexer(event.getIndexerName());
                    }
                    eventCount.incrementAndGet();
                } catch (InterruptedException e) {
                    log.info("IndexerWorker.EventWorker interrupted.");
                    return;
View Full Code Here

                    .configuration("my-conf".getBytes("UTF-8"))
                    .build();
            model1.addIndexer(indexer1);

            listener.waitForEvents(1);
            listener.verifyEvents(new IndexerModelEvent(IndexerModelEventType.INDEXER_ADDED, "indexer1"));

            // Verify that a fresh indexer model has the index
            model2 = new IndexerModelImpl(zk2, "/test");
            Collection<IndexerDefinition> indexers = model2.getIndexers();
            assertEquals("Expected indexer1, got " + indexers, 1, indexers.size());
            assertTrue(model2.hasIndexer("indexer1"));

            // Update the indexer -- verify INDEXER_UPDATED event
            indexer1 = new IndexerDefinitionBuilder()
                    .startFrom(indexer1)
                    .incrementalIndexingState(IncrementalIndexingState.SUBSCRIBE_DO_NOT_CONSUME)
                    .build();
            String lock = model1.lockIndexer("indexer1");
            model1.updateIndexer(indexer1, lock);

            listener.waitForEvents(1);
            listener.verifyEvents(new IndexerModelEvent(IndexerModelEventType.INDEXER_UPDATED, "indexer1"));
            model1.unlockIndexer(lock);

            // Delete the indexer -- verify INDEXER_DELETED event
            model1.deleteIndexerInternal("indexer1");
            listener.waitForEvents(1);
            listener.verifyEvents(new IndexerModelEvent(IndexerModelEventType.INDEXER_DELETED, "indexer1"));

            // Create some more indexes and verify we get the correct number of INDEXER_ADDED events
            IndexerModelEvent[] expectedEvents = new IndexerModelEvent[9];
            for (int i = 2; i <= 10; i++) {
                String name = "indexer" + i;
                IndexerDefinition indexer = new IndexerDefinitionBuilder()
                        .name(name)
                        .configuration("my-conf".getBytes("UTF-8"))
                        .build();
                model1.addIndexer(indexer);
                expectedEvents[i - 2] = new IndexerModelEvent(IndexerModelEventType.INDEXER_ADDED, name);
            }

            listener.waitForEvents(9);
            listener.verifyEvents(expectedEvents);

            // Terminate ZK connections: clients should automatically re-establish the connection and things
            // should work as before
            assertEquals(2, terminateZooKeeperConnections());

            // Do another index update and check we get an event
            IndexerDefinition indexer2 = new IndexerDefinitionBuilder()
                    .name("indexer2")
                    .incrementalIndexingState(IncrementalIndexingState.DO_NOT_SUBSCRIBE)
                    .configuration("my-conf".getBytes(Charsets.UTF_8))
                    .build();
            lock = model1.lockIndexer("indexer2");
            model1.updateIndexer(indexer2, lock);
            model1.unlockIndexer(lock);

            listener.waitForEvents(1);
            listener.verifyEvents(new IndexerModelEvent(IndexerModelEventType.INDEXER_UPDATED, "indexer2"));
        } finally {
            Closer.close(model1);
            Closer.close(model2);
            Closer.close(zk1);
            Closer.close(zk2);
View Full Code Here

                .build();
        indexerModel.addIndexer(indexDef);

        //repoSetup.getSepModel().addSubscription(indexDef.getSubscriptionId());
        listener.waitForEvents(2);
        listener.verifyEvents(new IndexerModelEvent(IndexerModelEventType.INDEXER_ADDED, indexName),
                new IndexerModelEvent(IndexerModelEventType.INDEXER_UPDATED, indexName));

        waitForIndexesInfoUpdate(1);
        lilyProxy.getHBaseProxy().waitOnReplicationPeerReady("Indexer_" + indexName);
    }
View Full Code Here

                indexerModel.updateIndexer(new IndexerDefinitionBuilder()
                        .startFrom(def)
                        .lifecycleState(IndexerDefinition.LifecycleState.DELETE_REQUESTED).build(), lock);

                listener.waitForEvents(2);
                listener.verifyEvents(new IndexerModelEvent(IndexerModelEventType.INDEXER_DELETED, indexName),
                        new IndexerModelEvent(IndexerModelEventType.INDEXER_UPDATED, indexName));
                indexerModel.unlockIndexer(lock, true);
                lilyProxy.getHBaseProxy().waitOnReplicationPeerStopped("Indexer_" + indexName);
            } else {
                System.out.println("Not doing cleanup because index does not exist in indexer model, index name = " + indexName);
            }
View Full Code Here

TOP

Related Classes of com.ngdata.hbaseindexer.model.api.IndexerModelEvent

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.