Search in sources :

Example 1 with ExternalReferencedHolder

use of io.siddhi.core.util.extension.holder.ExternalReferencedHolder in project siddhi by wso2.

the class SiddhiAppRuntimeImpl method startWithoutSources.

public synchronized void startWithoutSources() {
    if (running || runningWithoutSources) {
        log.warn("Error calling startWithoutSources() for Siddhi App '" + siddhiAppContext.getName() + "', " + "SiddhiApp already started.");
    } else {
        try {
            memoryUsageTracker.disableMemoryUsageMetrics();
            if (siddhiAppContext.getRootMetricsLevel().compareTo(Level.OFF) != 0 && siddhiAppContext.getStatisticsManager() != null) {
                if (siddhiAppContext.getRootMetricsLevel().compareTo(Level.DETAIL) == 0) {
                    memoryUsageTracker.enableMemoryUsageMetrics();
                }
                siddhiAppContext.getStatisticsManager().startReporting();
            }
            for (ExternalReferencedHolder externalReferencedHolder : siddhiAppContext.getExternalReferencedHolders()) {
                externalReferencedHolder.start();
            }
            for (List<Sink> sinks : sinkMap.values()) {
                for (Sink sink : sinks) {
                    sink.connectWithRetry();
                }
            }
            for (Table table : tableMap.values()) {
                table.connectWithRetry();
            }
            for (StreamJunction streamJunction : streamJunctionMap.values()) {
                streamJunction.startProcessing();
            }
            if (incrementalDataPurging) {
                for (AggregationRuntime aggregationRuntime : aggregationMap.values()) {
                    aggregationRuntime.startPurging();
                }
            }
            for (Trigger trigger : siddhiAppContext.getTriggerHolders()) {
                trigger.start();
            }
            inputManager.connect();
            runningWithoutSources = true;
        } catch (Throwable t) {
            log.error("Error starting Siddhi App '" + siddhiAppContext.getName() + "', " + "triggering shutdown process. " + t.getMessage());
            try {
                shutdown();
            } catch (Throwable t1) {
                log.error("Error shutting down partially started Siddhi App '" + siddhiAppContext.getName() + "', " + t1.getMessage());
            }
        }
    }
}
Also used : Table(io.siddhi.core.table.Table) Trigger(io.siddhi.core.trigger.Trigger) Sink(io.siddhi.core.stream.output.sink.Sink) StreamJunction(io.siddhi.core.stream.StreamJunction) ExternalReferencedHolder(io.siddhi.core.util.extension.holder.ExternalReferencedHolder) AggregationRuntime(io.siddhi.core.aggregation.AggregationRuntime)

Example 2 with ExternalReferencedHolder

use of io.siddhi.core.util.extension.holder.ExternalReferencedHolder in project siddhi by wso2.

the class SiddhiAppRuntimeImpl method shutdown.

public synchronized void shutdown() {
    SourceHandlerManager sourceHandlerManager = siddhiAppContext.getSiddhiContext().getSourceHandlerManager();
    for (List<Source> sources : sourceMap.values()) {
        for (Source source : sources) {
            try {
                if (sourceHandlerManager != null) {
                    sourceHandlerManager.unregisterSourceHandler(source.getMapper().getHandler().getId());
                }
                source.shutdown();
            } catch (Throwable t) {
                log.error(StringUtil.removeCRLFCharacters(ExceptionUtil.getMessageWithContext(t, siddhiAppContext)) + " Error in shutting down source '" + StringUtil.removeCRLFCharacters(source.getType()) + "' at '" + StringUtil.removeCRLFCharacters(source.getStreamDefinition().getId()) + "' on Siddhi App '" + siddhiAppContext.getName() + "'.", t);
            }
        }
    }
    for (Table table : tableMap.values()) {
        try {
            table.shutdown();
        } catch (Throwable t) {
            log.error(StringUtil.removeCRLFCharacters(ExceptionUtil.getMessageWithContext(t, siddhiAppContext)) + " Error in shutting down table '" + StringUtil.removeCRLFCharacters(table.getTableDefinition().getId()) + "' on Siddhi App '" + StringUtil.removeCRLFCharacters(siddhiAppContext.getName()) + "'.", t);
        }
    }
    SinkHandlerManager sinkHandlerManager = siddhiAppContext.getSiddhiContext().getSinkHandlerManager();
    for (List<Sink> sinks : sinkMap.values()) {
        for (Sink sink : sinks) {
            try {
                if (sinkHandlerManager != null) {
                    sinkHandlerManager.unregisterSinkHandler(sink.getHandler().getId());
                }
                sink.shutdown();
            } catch (Throwable t) {
                log.error(StringUtil.removeCRLFCharacters(ExceptionUtil.getMessageWithContext(t, siddhiAppContext)) + " Error in shutting down sink '" + StringUtil.removeCRLFCharacters(sink.getType()) + "' at '" + StringUtil.removeCRLFCharacters(sink.getStreamDefinition().getId()) + "' on Siddhi App '" + StringUtil.removeCRLFCharacters(siddhiAppContext.getName()) + "'.", t);
            }
        }
    }
    for (Table table : tableMap.values()) {
        RecordTableHandlerManager recordTableHandlerManager = siddhiAppContext.getSiddhiContext().getRecordTableHandlerManager();
        if (recordTableHandlerManager != null) {
            String elementId = null;
            RecordTableHandler recordTableHandler = table.getHandler();
            if (recordTableHandler != null) {
                elementId = recordTableHandler.getId();
            }
            if (elementId != null) {
                recordTableHandlerManager.unregisterRecordTableHandler(elementId);
            }
        }
        table.shutdown();
    }
    for (ExternalReferencedHolder externalReferencedHolder : siddhiAppContext.getExternalReferencedHolders()) {
        try {
            externalReferencedHolder.stop();
        } catch (Throwable t) {
            log.error(StringUtil.removeCRLFCharacters(ExceptionUtil.getMessageWithContext(t, siddhiAppContext)) + " Error while stopping ExternalReferencedHolder '" + StringUtil.removeCRLFCharacters(externalReferencedHolder.toString()) + "' down Siddhi app '" + StringUtil.removeCRLFCharacters(siddhiAppContext.getName()) + "'.", t);
        }
    }
    inputManager.disconnect();
    Thread thread = new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            for (StreamJunction streamJunction : streamJunctionMap.values()) {
                streamJunction.stopProcessing();
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            siddhiAppContext.getScheduledExecutorService().shutdownNow();
            siddhiAppContext.getExecutorService().shutdownNow();
        }
    }, "Siddhi-SiddhiApp-" + siddhiAppContext.getName() + "-Shutdown-Cleaner");
    thread.start();
    if (siddhiAppRuntimeMap != null) {
        siddhiAppRuntimeMap.remove(siddhiAppContext.getName());
    }
    if (siddhiAppContext.getStatisticsManager() != null) {
        if (siddhiAppContext.getRootMetricsLevel().compareTo(Level.OFF) != 0) {
            siddhiAppContext.getStatisticsManager().stopReporting();
        }
        siddhiAppContext.getStatisticsManager().cleanup();
    }
    running = false;
    runningWithoutSources = false;
}
Also used : Table(io.siddhi.core.table.Table) SourceHandlerManager(io.siddhi.core.stream.input.source.SourceHandlerManager) RecordTableHandler(io.siddhi.core.table.record.RecordTableHandler) ExternalReferencedHolder(io.siddhi.core.util.extension.holder.ExternalReferencedHolder) Source(io.siddhi.core.stream.input.source.Source) Sink(io.siddhi.core.stream.output.sink.Sink) StreamJunction(io.siddhi.core.stream.StreamJunction) SinkHandlerManager(io.siddhi.core.stream.output.sink.SinkHandlerManager) RecordTableHandlerManager(io.siddhi.core.table.record.RecordTableHandlerManager)

Aggregations

StreamJunction (io.siddhi.core.stream.StreamJunction)2 Sink (io.siddhi.core.stream.output.sink.Sink)2 Table (io.siddhi.core.table.Table)2 ExternalReferencedHolder (io.siddhi.core.util.extension.holder.ExternalReferencedHolder)2 AggregationRuntime (io.siddhi.core.aggregation.AggregationRuntime)1 Source (io.siddhi.core.stream.input.source.Source)1 SourceHandlerManager (io.siddhi.core.stream.input.source.SourceHandlerManager)1 SinkHandlerManager (io.siddhi.core.stream.output.sink.SinkHandlerManager)1 RecordTableHandler (io.siddhi.core.table.record.RecordTableHandler)1 RecordTableHandlerManager (io.siddhi.core.table.record.RecordTableHandlerManager)1 Trigger (io.siddhi.core.trigger.Trigger)1