Search in sources :

Example 1 with StatisticsOpenEvent

use of org.apache.synapse.aspects.flow.statistics.log.templates.StatisticsOpenEvent in project wso2-synapse by wso2.

the class OpenEventCollector method reportEntryEvent.

/**
 * Enqueue StatisticOpenEvent to the event Queue. This receives open events from Proxy Services, Endpoints, APIs,
 * Inbound Endpoints and Sequences which are considered as entry components for statistics collection. These
 * components can start statistic collection if their individual statistic collection is enabled. If statistics
 * is already enabled, this will enqueue open event to the queue regardless of its individual statistics collection.
 *
 * @param messageContext      synapse message context.
 * @param componentName       statistic reporting component name.
 * @param aspectConfiguration aspect configuration of the reporting component.
 * @param componentType       component type of the reporting component.
 * @return component's level in this message flow.
 */
public static Integer reportEntryEvent(MessageContext messageContext, String componentName, AspectConfiguration aspectConfiguration, ComponentType componentType) {
    boolean isCollectingStatistics = (aspectConfiguration != null && aspectConfiguration.isStatisticsEnable());
    // Enable statistics, if user enabled for all artifacts
    if (!isCollectingStatistics) {
        isCollectingStatistics = isCollectingStatistics || RuntimeStatisticCollector.isCollectingAllStatistics();
    }
    boolean isCollectingTracing = false;
    if (isCollectingProperties() || isCollectingPayloads()) {
        isCollectingTracing = (aspectConfiguration != null && aspectConfiguration.isTracingEnabled());
    }
    Boolean isFlowStatisticEnabled = // todo try to use single object for "FLOW_TRACE_IS_COLLECTED"
    (Boolean) messageContext.getProperty(StatisticsConstants.FLOW_STATISTICS_IS_COLLECTED);
    Boolean isTracingEnabled;
    if (isCollectingStatistics) {
        messageContext.setProperty(StatisticsConstants.FLOW_STATISTICS_IS_COLLECTED, true);
        setStatisticsTraceId(messageContext);
        if (isCollectingTracing) {
            messageContext.setProperty(StatisticsConstants.FLOW_TRACE_IS_COLLECTED, true);
        }
    } else if (isFlowStatisticEnabled == null) {
        // To signal lower levels that statistics was disabled in upper component in the flow
        messageContext.setProperty(StatisticsConstants.FLOW_STATISTICS_IS_COLLECTED, false);
    }
    isTracingEnabled = (Boolean) messageContext.getProperty(StatisticsConstants.FLOW_TRACE_IS_COLLECTED);
    if (shouldReportStatistic(messageContext)) {
        StatisticDataUnit statisticDataUnit = new StatisticDataUnit();
        statisticDataUnit.setComponentName(componentName);
        statisticDataUnit.setComponentType(componentType);
        statisticDataUnit.setTracingEnabled(isCollectingTracing);
        statisticDataUnit.setSynapseEnvironment(messageContext.getEnvironment());
        statisticDataUnit.setCurrentIndex(StatisticDataCollectionHelper.getFlowPosition(messageContext));
        if (aspectConfiguration != null) {
            statisticDataUnit.setComponentId(aspectConfiguration.getUniqueId());
            statisticDataUnit.setHashCode(aspectConfiguration.getHashCode());
        }
        int parentIndex = StatisticDataCollectionHelper.getParentFlowPosition(messageContext, statisticDataUnit.getCurrentIndex());
        statisticDataUnit.setParentIndex(parentIndex);
        if (statisticDataUnit.getComponentType() != ComponentType.ENDPOINT) {
            statisticDataUnit.setFlowContinuableMediator(true);
        }
        if (aspectConfiguration != null) {
            statisticDataUnit.setIsIndividualStatisticCollected(isCollectingStatistics);
        }
        StatisticDataCollectionHelper.collectData(messageContext, true, isTracingEnabled, statisticDataUnit);
        StatisticsOpenEvent openEvent = new StatisticsOpenEvent(statisticDataUnit);
        addEventAndIncrementCount(messageContext, openEvent);
        if (isOpenTracingEnabled()) {
            OpenTracingManagerHolder.getOpenTracingManager().getHandler().handleOpenEntryEvent(statisticDataUnit, messageContext);
        }
        return statisticDataUnit.getCurrentIndex();
    }
    return null;
}
Also used : BasicStatisticDataUnit(org.apache.synapse.aspects.flow.statistics.data.raw.BasicStatisticDataUnit) StatisticDataUnit(org.apache.synapse.aspects.flow.statistics.data.raw.StatisticDataUnit) StatisticsOpenEvent(org.apache.synapse.aspects.flow.statistics.log.templates.StatisticsOpenEvent)

Example 2 with StatisticsOpenEvent

use of org.apache.synapse.aspects.flow.statistics.log.templates.StatisticsOpenEvent in project wso2-synapse by wso2.

the class OpenEventCollector method reportMediatorStatistics.

private static void reportMediatorStatistics(MessageContext messageContext, String componentName, ComponentType componentType, boolean isContentAltering, StatisticDataUnit statisticDataUnit, AspectConfiguration aspectConfiguration) {
    Boolean isCollectingTracing = (Boolean) messageContext.getProperty(StatisticsConstants.FLOW_TRACE_IS_COLLECTED);
    statisticDataUnit.setComponentName(componentName);
    statisticDataUnit.setComponentType(componentType);
    statisticDataUnit.setCurrentIndex(StatisticDataCollectionHelper.getFlowPosition(messageContext));
    if (aspectConfiguration != null) {
        statisticDataUnit.setComponentId(aspectConfiguration.getUniqueId());
        statisticDataUnit.setHashCode(aspectConfiguration.getHashCode());
    }
    int parentIndex = StatisticDataCollectionHelper.getParentFlowPosition(messageContext, statisticDataUnit.getCurrentIndex());
    statisticDataUnit.setParentIndex(parentIndex);
    StatisticDataCollectionHelper.collectData(messageContext, isContentAltering, isCollectingTracing, statisticDataUnit);
    StatisticsOpenEvent openEvent = new StatisticsOpenEvent(statisticDataUnit);
    addEventAndIncrementCount(messageContext, openEvent);
}
Also used : StatisticsOpenEvent(org.apache.synapse.aspects.flow.statistics.log.templates.StatisticsOpenEvent)

Aggregations

StatisticsOpenEvent (org.apache.synapse.aspects.flow.statistics.log.templates.StatisticsOpenEvent)2 BasicStatisticDataUnit (org.apache.synapse.aspects.flow.statistics.data.raw.BasicStatisticDataUnit)1 StatisticDataUnit (org.apache.synapse.aspects.flow.statistics.data.raw.StatisticDataUnit)1