protected void startComputations() { getDescriptors(XP_STREAM_PROCESSOR).forEach(d -> { StreamProcessor manager = processors.get(d.getId()); if (manager != null) { manager.start(); } }); }
@Override protected boolean unregister(String xp, Descriptor descriptor) { boolean removed = super.unregister(xp, descriptor); if (removed) { TransientStoreProvider store = stores.remove(descriptor.getId()); if (store != null) { store.shutdown(); } } return removed; }
@Override public void enableProcessing(boolean value) { getDescriptors(QUEUES_EP).forEach(d -> enableProcessing(d.getId(), value)); }
@Override public boolean isProcessingEnabled() { for (Descriptor d : getDescriptors(QUEUES_EP)) { if (queuing.getQueue(d.getId()).active) { return true; } } return false; }
@Override public void afterStart(ComponentManager mgr, boolean isResume) { streamProcessor.start(); for (Descriptor d : getDescriptors(QUEUES_EP)) { activateQueueMetrics(d.getId()); } }
@Override public void start(ComponentContext context) { // make sure we have a default store getStore(DEFAULT_STORE_NAME); // instantiate all registered stores getDescriptors(EP_STORE).forEach(desc -> getStore(desc.getId())); }
@Override public boolean awaitCompletion(String queueId, long duration, TimeUnit unit) throws InterruptedException { if (queueId != null) { return awaitCompletionOnQueue(queueId, duration, unit); } for (Descriptor item : getDescriptors(QUEUES_EP)) { if (!awaitCompletionOnQueue(item.getId(), duration, unit)) { return false; } } return true; }
@Override protected boolean unregister(String xp, Descriptor descriptor) { MarshallerRegistryDescriptor mrd = getDescriptor(xp, descriptor.getId()); if (mrd == null) { return false; } boolean unregistered = super.unregister(xp, descriptor); if (unregistered) { if (mrd.enable) { deregister(mrd.klass); } } return unregistered; }
@Override public void registerContribution(Object contribution, String xp, ComponentInstance component) { if (QUEUES_EP.equals(xp)) { WorkQueueDescriptor descriptor = (WorkQueueDescriptor) contribution; if (ALL_QUEUES.equals(descriptor.getId())) { Boolean processing = descriptor.processing; if (processing == null) { log.error("Ignoring work queue descriptor {} with no processing/queuing", ALL_QUEUES); return; } log.info("Setting on all work queues:{}", () -> " processing=" + processing + (queuing == null ? "" : " queuing=" + queuing)); // activate/deactivate processing on all queues getDescriptors(QUEUES_EP).forEach(d -> { WorkQueueDescriptor wqd = new WorkQueueDescriptor(); wqd.id = d.getId(); wqd.processing = processing; register(QUEUES_EP, wqd); }); } else { register(QUEUES_EP, descriptor); } } else { super.registerContribution(contribution, xp, component); } }
@Override public void afterStop(ComponentManager mgr, boolean isStandby) { Framework.getRuntime().getComponentManager().removeListener(this); for (Descriptor d : getDescriptors(QUEUES_EP)) { deactivateQueueMetrics(d.getId()); } } }
@Override public void init() { if (started) { return; } WorkManagerImpl wmi = (WorkManagerImpl) Framework.getRuntime().getComponent("org.nuxeo.ecm.core.work.service"); wmi.active = false; log.debug("Initializing"); synchronized (this) { if (started) { return; } getDescriptors(QUEUES_EP).forEach(d -> categoryToQueueId.put(d.getId(), d.getId())); index(); initTopology(); logManager = getLogManager(); streamProcessor = new LogStreamProcessor(logManager); streamProcessor.init(topology, settings); started = true; new ComponentListener().install(); log.info("Initialized"); } }
@Override protected boolean register(String xp, Descriptor descriptor) { boolean registered = super.register(xp, descriptor); if (registered) { MarshallerRegistryDescriptor mrd = getDescriptor(xp, descriptor.getId()); if (mrd.enable) { register(mrd.klass); } else { deregister(mrd.klass); } } return registered; }