Search in sources :

Example 21 with Service

use of org.jvnet.hk2.annotations.Service in project Payara by payara.

the class ConfigModule method bindInjector.

private void bindInjector(DynamicConfiguration configurator, String elementName, Class contract, final Class clz) {
    DescriptorBuilder db = BuilderHelper.link(clz).to(ConfigInjector.class).to(InjectionTarget.class).to(contract).in(Singleton.class.getName()).qualifiedBy(clz.getAnnotation(InjectionTarget.class)).named(elementName).andLoadWith(new MyHk2Loader(clz.getClassLoader()));
    String metaData = ((Service) clz.getAnnotation(Service.class)).metadata();
    Map<String, List<String>> metaMap = new HashMap<String, List<String>>();
    for (StringTokenizer st = new StringTokenizer(metaData, ","); st.hasMoreTokens(); ) {
        String tok = st.nextToken();
        int index = tok.indexOf('=');
        if (index > 0) {
            String key = tok.substring(0, index);
            String value = tok.substring(index + 1);
            List<String> lst = metaMap.get(key);
            if (lst == null) {
                lst = new LinkedList<String>();
                metaMap.put(key, lst);
            }
            lst.add(value);
        // System.out.println("**     Added Metadata: " + tok.substring(0, index) + "  : " + tok.substring(index+1));
        }
    // db.andLoadWith(new MyHk2Loader(clz.getClassLoader()));
    }
    for (String key : metaMap.keySet()) {
        db.has(key, metaMap.get(key));
    }
    ActiveDescriptor desc = configurator.bind(db.build());
    configurator.bind(new AliasDescriptor(serviceLocator, desc, InjectionTarget.class.getName(), contract.getName()));
    System.out.println("**Successfully bound an alias descriptor for: " + elementName);
}
Also used : ActiveDescriptor(org.glassfish.hk2.api.ActiveDescriptor) Service(org.jvnet.hk2.annotations.Service) DescriptorBuilder(org.glassfish.hk2.utilities.DescriptorBuilder) AliasDescriptor(org.glassfish.hk2.utilities.AliasDescriptor) InjectionTarget(org.jvnet.hk2.config.InjectionTarget)

Example 22 with Service

use of org.jvnet.hk2.annotations.Service in project Payara by payara.

the class HealthCheckServiceThresholdConfigurer method execute.

@Override
public void execute(AdminCommandContext context) {
    final ActionReport actionReport = context.getActionReport();
    final AdminCommandContext theContext = context;
    Properties extraProperties = actionReport.getExtraProperties();
    if (extraProperties == null) {
        extraProperties = new Properties();
        actionReport.setExtraProperties(extraProperties);
    }
    final BaseThresholdHealthCheck service = habitat.getService(BaseThresholdHealthCheck.class, serviceName);
    Config config = targetUtil.getConfig(target);
    if (service == null) {
        actionReport.appendMessage(strings.getLocalString("healthcheck.service.configure.status.error", "Service with name {0} could not be found.", serviceName));
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    HealthCheckServiceConfiguration healthCheckServiceConfiguration = config.getExtensionByType(HealthCheckServiceConfiguration.class);
    final ThresholdDiagnosticsChecker checker = healthCheckServiceConfiguration.<ThresholdDiagnosticsChecker>getCheckerByType(service.getCheckerType());
    if (checker == null) {
        actionReport.appendMessage(strings.getLocalString("healthcheck.service.configure.threshold.checker.not.exists", "Health Check Service Checker Configuration with name {0} could not be found.", serviceName));
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    try {
        evaluateThresholdProp(actionReport, checker, HealthCheckConstants.THRESHOLD_CRITICAL, thresholdCritical);
        evaluateThresholdProp(actionReport, checker, HealthCheckConstants.THRESHOLD_WARNING, thresholdWarning);
        evaluateThresholdProp(actionReport, checker, HealthCheckConstants.THRESHOLD_GOOD, thresholdGood);
    } catch (TransactionFailure ex) {
        logger.log(Level.WARNING, "Exception during command ", ex);
        actionReport.setMessage(ex.getCause().getMessage());
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    if (dynamic) {
        if (service.getOptions() == null) {
            service.setOptions(service.constructOptions(checker));
        }
        if (server.isDas()) {
            if (targetUtil.getConfig(target).isDas()) {
                configureDynamically(actionReport, service);
                healthCheckService.reboot();
            }
        } else {
            // it implicitly targeted to us as we are not the DAS
            // restart the service
            configureDynamically(actionReport, service);
            healthCheckService.reboot();
        }
    }
}
Also used : TransactionFailure(org.jvnet.hk2.config.TransactionFailure) Config(com.sun.enterprise.config.serverbeans.Config) HealthCheckServiceConfiguration(fish.payara.nucleus.healthcheck.configuration.HealthCheckServiceConfiguration) ThresholdDiagnosticsChecker(fish.payara.nucleus.healthcheck.configuration.ThresholdDiagnosticsChecker) ActionReport(org.glassfish.api.ActionReport) Properties(java.util.Properties) BaseThresholdHealthCheck(fish.payara.nucleus.healthcheck.preliminary.BaseThresholdHealthCheck)

Example 23 with Service

use of org.jvnet.hk2.annotations.Service in project Payara by payara.

the class GetHealthCheckConfiguration method execute.

@Override
public void execute(AdminCommandContext context) {
    Config config = targetUtil.getConfig(target);
    if (config == null) {
        context.getActionReport().setMessage("No such config named: " + target);
        context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    ActionReport mainActionReport = context.getActionReport();
    // subReport(0)
    ActionReport baseActionReport = mainActionReport.addSubActionsReport();
    // subReport(1)
    ActionReport hoggingThreadsActionReport = mainActionReport.addSubActionsReport();
    // subReport(2)
    ActionReport thresholdDiagnosticsActionReport = mainActionReport.addSubActionsReport();
    // subReport(3)
    ActionReport stuckThreadsActionReport = mainActionReport.addSubActionsReport();
    // subReport(4)
    ActionReport mpHealthcheckCheckerActionReport = mainActionReport.addSubActionsReport();
    // subReport(5)
    ActionReport microProfileMetricsActionReport = mainActionReport.addSubActionsReport();
    // subReport(6)
    ActionReport monitoredMicroProfileMetricsActionReport = mainActionReport.addSubActionsReport();
    ColumnFormatter baseColumnFormatter = new ColumnFormatter(baseHeaders);
    ColumnFormatter hoggingThreadsColumnFormatter = new ColumnFormatter(hoggingThreadsHeaders);
    ColumnFormatter stuckThreadsColumnFormatter = new ColumnFormatter(stuckThreadsHeaders);
    ColumnFormatter thresholdDiagnosticsColumnFormatter = new ColumnFormatter(thresholdDiagnosticsHeaders);
    ColumnFormatter mpHealthCheckColumnFormatter = new ColumnFormatter(MPHealthCheckHeaders);
    ColumnFormatter microProfileMetricsColumnFormatter = new ColumnFormatter(microProfileMetricsCheckHeaders);
    ColumnFormatter monitoredMicroProfileMetricsColumnFormatter = new ColumnFormatter(monitoredMicroProfileMetricHeaders);
    ColumnFormatter notifiersColumnFormatter = new ColumnFormatter(notifierHeaders);
    HealthCheckServiceConfiguration configuration = config.getExtensionByType(HealthCheckServiceConfiguration.class);
    List<ServiceHandle<BaseHealthCheck>> allServiceHandles = habitat.getAllServiceHandles(BaseHealthCheck.class);
    List<ServiceHandle<PayaraNotifier>> allNotifierServiceHandles = habitat.getAllServiceHandles(PayaraNotifier.class);
    mainActionReport.appendMessage("Health Check Service Configuration is enabled?: " + configuration.getEnabled() + "\n");
    if (Boolean.parseBoolean(configuration.getEnabled())) {
        mainActionReport.appendMessage("Historical Tracing Enabled?: " + configuration.getHistoricalTraceEnabled() + "\n");
        if (Boolean.parseBoolean(configuration.getHistoricalTraceEnabled())) {
            mainActionReport.appendMessage("Historical Tracing Store Size: " + configuration.getHistoricalTraceStoreSize() + "\n");
        }
        if (StringUtils.ok(configuration.getHistoricalTraceStoreTimeout())) {
            mainActionReport.appendMessage("Health Check Historical Tracing Store Timeout in Seconds: " + configuration.getHistoricalTraceStoreTimeout() + "\n");
        }
    }
    // Create the extraProps map for the general healthcheck configuration
    Properties mainExtraProps = new Properties();
    Map<String, Object> mainExtraPropsMap = new HashMap<>();
    mainExtraPropsMap.put("enabled", configuration.getEnabled());
    mainExtraPropsMap.put("historicalTraceEnabled", configuration.getHistoricalTraceEnabled());
    mainExtraPropsMap.put("historicalTraceStoreSize", configuration.getHistoricalTraceStoreSize());
    mainExtraPropsMap.put("historicalTraceStoreTimeout", configuration.getHistoricalTraceStoreTimeout());
    mainExtraProps.put("healthcheckConfiguration", mainExtraPropsMap);
    mainActionReport.setExtraProperties(mainExtraProps);
    final List<String> notifiers = configuration.getNotifierList();
    if (!notifiers.isEmpty()) {
        Properties extraProps = new Properties();
        for (ServiceHandle<PayaraNotifier> serviceHandle : allNotifierServiceHandles) {
            final String notifierClassName = serviceHandle.getActiveDescriptor().getImplementationClass().getSimpleName();
            final String notifierName = NotifierUtils.getNotifierName(serviceHandle.getActiveDescriptor());
            Object[] values = new Object[2];
            values[0] = notifierName;
            values[1] = notifiers.contains(notifierName);
            notifiersColumnFormatter.addRow(values);
            Map<String, Object> map = new HashMap<>(2);
            map.put("notifierName", values[0]);
            map.put("notifierEnabled", values[1]);
            extraProps.put("notifierList" + notifierClassName, map);
        }
        mainActionReport.getExtraProperties().putAll(extraProps);
        mainActionReport.appendMessage(notifiersColumnFormatter.toString());
        mainActionReport.appendMessage(StringUtils.EOL);
    }
    mainActionReport.appendMessage("Below are the list of configuration details of each checker listed by its name.");
    mainActionReport.appendMessage(StringUtils.EOL);
    Properties baseExtraProps = new Properties();
    Properties hoggingThreadsExtraProps = new Properties();
    Properties stuckThreadsExtrasProps = new Properties();
    Properties thresholdDiagnosticsExtraProps = new Properties();
    Properties mpHealthcheckExtrasProps = new Properties();
    Properties microProfileMetricsExtrasProps = new Properties();
    Properties monitoredMicroProfileMetricsExtrasProps = new Properties();
    for (ServiceHandle<BaseHealthCheck> serviceHandle : allServiceHandles) {
        Checker checker = configuration.getCheckerByType(serviceHandle.getService().getCheckerType());
        if (checker instanceof HoggingThreadsChecker) {
            HoggingThreadsChecker hoggingThreadsChecker = (HoggingThreadsChecker) checker;
            Object[] values = new Object[7];
            values[0] = hoggingThreadsChecker.getName();
            values[1] = hoggingThreadsChecker.getEnabled();
            values[2] = hoggingThreadsChecker.getTime();
            values[3] = hoggingThreadsChecker.getUnit();
            values[4] = hoggingThreadsChecker.getAddToMicroProfileHealth();
            values[5] = hoggingThreadsChecker.getThresholdPercentage();
            values[6] = hoggingThreadsChecker.getRetryCount();
            hoggingThreadsColumnFormatter.addRow(values);
            // Create the extra props map for a hogging thread checker
            addHoggingThreadsCheckerExtraProps(hoggingThreadsExtraProps, hoggingThreadsChecker);
        } else if (checker instanceof ThresholdDiagnosticsChecker) {
            ThresholdDiagnosticsChecker thresholdDiagnosticsChecker = (ThresholdDiagnosticsChecker) checker;
            Object[] values = new Object[8];
            values[0] = thresholdDiagnosticsChecker.getName();
            values[1] = thresholdDiagnosticsChecker.getEnabled();
            values[2] = thresholdDiagnosticsChecker.getTime();
            values[3] = thresholdDiagnosticsChecker.getUnit();
            values[4] = thresholdDiagnosticsChecker.getAddToMicroProfileHealth();
            Property thresholdCriticalProperty = thresholdDiagnosticsChecker.getProperty(THRESHOLD_CRITICAL);
            values[5] = thresholdCriticalProperty != null ? thresholdCriticalProperty.getValue() : "-";
            Property thresholdWarningProperty = thresholdDiagnosticsChecker.getProperty(THRESHOLD_WARNING);
            values[6] = thresholdWarningProperty != null ? thresholdWarningProperty.getValue() : "-";
            Property thresholdGoodProperty = thresholdDiagnosticsChecker.getProperty(THRESHOLD_GOOD);
            values[7] = thresholdGoodProperty != null ? thresholdGoodProperty.getValue() : "-";
            thresholdDiagnosticsColumnFormatter.addRow(values);
            // Create the extra props map for a checker with thresholds
            addThresholdDiagnosticsCheckerExtraProps(thresholdDiagnosticsExtraProps, thresholdDiagnosticsChecker);
        } else if (checker instanceof StuckThreadsChecker) {
            StuckThreadsChecker stuckThreadsChecker = (StuckThreadsChecker) checker;
            Object[] values = new Object[7];
            values[0] = stuckThreadsChecker.getName();
            values[1] = stuckThreadsChecker.getEnabled();
            values[2] = stuckThreadsChecker.getTime();
            values[3] = stuckThreadsChecker.getUnit();
            values[4] = stuckThreadsChecker.getAddToMicroProfileHealth();
            values[5] = stuckThreadsChecker.getThreshold();
            values[6] = stuckThreadsChecker.getThresholdTimeUnit();
            stuckThreadsColumnFormatter.addRow(values);
            addStuckThreadsCheckerExtrasProps(stuckThreadsExtrasProps, stuckThreadsChecker);
        } else if (checker instanceof MicroProfileHealthCheckerConfiguration) {
            MicroProfileHealthCheckerConfiguration mpHealthcheckChecker = (MicroProfileHealthCheckerConfiguration) checker;
            Object[] values = new Object[6];
            values[0] = mpHealthcheckChecker.getName();
            values[1] = mpHealthcheckChecker.getEnabled();
            values[2] = mpHealthcheckChecker.getTime();
            values[3] = mpHealthcheckChecker.getUnit();
            values[4] = mpHealthcheckChecker.getAddToMicroProfileHealth();
            values[5] = mpHealthcheckChecker.getTimeout();
            mpHealthCheckColumnFormatter.addRow(values);
            addMPHealthcheckCheckerExtrasProps(mpHealthcheckExtrasProps, mpHealthcheckChecker);
        } else if (checker instanceof MicroProfileMetricsChecker) {
            MicroProfileMetricsChecker microProfileMetricsChecker = (MicroProfileMetricsChecker) checker;
            Object[] values = new Object[5];
            values[0] = microProfileMetricsChecker.getName();
            values[1] = microProfileMetricsChecker.getEnabled();
            values[2] = microProfileMetricsChecker.getTime();
            values[3] = microProfileMetricsChecker.getUnit();
            values[4] = microProfileMetricsChecker.getAddToMicroProfileHealth();
            microProfileMetricsColumnFormatter.addRow(values);
            addMicroProfileMetricsCheckerExtrasProps(microProfileMetricsExtrasProps, microProfileMetricsChecker);
            Map<String, String> monitoredAttributes = new HashMap<>();
            List<MonitoredMetric> metrics = microProfileMetricsChecker.getMonitoredMetrics();
            if (!metrics.isEmpty()) {
                for (MonitoredMetric monitoredBean : metrics) {
                    Object[] metricValues = new Object[2];
                    metricValues[0] = monitoredBean.getMetricName();
                    metricValues[1] = monitoredBean.getDescription();
                    monitoredMicroProfileMetricsColumnFormatter.addRow(metricValues);
                    monitoredAttributes.put("MetricsName", monitoredBean.getMetricName());
                }
                monitoredMicroProfileMetricsExtrasProps.put("monitoredMetrics", monitoredAttributes);
            }
        } else if (checker != null) {
            Object[] values = new Object[5];
            values[0] = checker.getName();
            values[1] = checker.getEnabled();
            values[2] = checker.getTime();
            values[3] = checker.getUnit();
            values[4] = checker.getAddToMicroProfileHealth();
            baseColumnFormatter.addRow(values);
            // Create the extra props map for a base checker
            addBaseCheckerExtraProps(baseExtraProps, checker);
        }
    }
    if (!baseColumnFormatter.getContent().isEmpty()) {
        baseActionReport.setMessage(baseColumnFormatter.toString());
        baseActionReport.appendMessage(StringUtils.EOL);
    }
    if (!hoggingThreadsColumnFormatter.getContent().isEmpty()) {
        hoggingThreadsActionReport.setMessage(hoggingThreadsColumnFormatter.toString());
        hoggingThreadsActionReport.appendMessage(StringUtils.EOL);
    }
    if (!thresholdDiagnosticsColumnFormatter.getContent().isEmpty()) {
        thresholdDiagnosticsActionReport.setMessage(thresholdDiagnosticsColumnFormatter.toString());
        thresholdDiagnosticsActionReport.appendMessage(StringUtils.EOL);
    }
    if (!stuckThreadsColumnFormatter.getContent().isEmpty()) {
        stuckThreadsActionReport.setMessage(stuckThreadsColumnFormatter.toString());
        stuckThreadsActionReport.appendMessage(StringUtils.EOL);
    }
    if (!mpHealthCheckColumnFormatter.getContent().isEmpty()) {
        mpHealthcheckCheckerActionReport.setMessage(mpHealthCheckColumnFormatter.toString());
        mpHealthcheckCheckerActionReport.appendMessage(StringUtils.EOL);
    }
    if (!microProfileMetricsColumnFormatter.getContent().isEmpty()) {
        microProfileMetricsActionReport.setMessage(microProfileMetricsColumnFormatter.toString());
        microProfileMetricsActionReport.appendMessage(StringUtils.EOL);
    }
    if (!monitoredMicroProfileMetricsColumnFormatter.getContent().isEmpty()) {
        monitoredMicroProfileMetricsActionReport.setMessage(monitoredMicroProfileMetricsColumnFormatter.toString());
        monitoredMicroProfileMetricsActionReport.appendMessage(StringUtils.EOL);
    }
    // Populate the extraProps with defaults for any checker that isn't present
    baseExtraProps = checkCheckerPropertyPresence(thresholdDiagnosticsExtraProps, garbageCollectorPropertyName);
    hoggingThreadsExtraProps = checkCheckerPropertyPresence(hoggingThreadsExtraProps, hoggingThreadsPropertyName);
    stuckThreadsExtrasProps = checkCheckerPropertyPresence(stuckThreadsExtrasProps, stuckThreadsPropertyName);
    thresholdDiagnosticsExtraProps = checkCheckerPropertyPresence(thresholdDiagnosticsExtraProps, cpuUsagePropertyName);
    thresholdDiagnosticsExtraProps = checkCheckerPropertyPresence(thresholdDiagnosticsExtraProps, connectionPoolPropertyName);
    thresholdDiagnosticsExtraProps = checkCheckerPropertyPresence(thresholdDiagnosticsExtraProps, heapMemoryUsagePropertyName);
    thresholdDiagnosticsExtraProps = checkCheckerPropertyPresence(thresholdDiagnosticsExtraProps, machineMemoryUsagePropertyName);
    mpHealthcheckExtrasProps = checkCheckerPropertyPresence(mpHealthcheckExtrasProps, mpHealthcheckPropertyName);
    microProfileMetricsExtrasProps = checkCheckerPropertyPresence(microProfileMetricsExtrasProps, microProfileMetricsPropertyName);
    // Add the extra props to their respective action reports
    baseActionReport.setExtraProperties(baseExtraProps);
    hoggingThreadsActionReport.setExtraProperties(hoggingThreadsExtraProps);
    thresholdDiagnosticsActionReport.setExtraProperties(thresholdDiagnosticsExtraProps);
    stuckThreadsActionReport.setExtraProperties(stuckThreadsExtrasProps);
    mpHealthcheckCheckerActionReport.setExtraProperties(mpHealthcheckExtrasProps);
    microProfileMetricsActionReport.setExtraProperties(microProfileMetricsExtrasProps);
    monitoredMicroProfileMetricsActionReport.setExtraProperties(monitoredMicroProfileMetricsExtrasProps);
    mainActionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
}
Also used : PayaraNotifier(fish.payara.internal.notification.PayaraNotifier) HashMap(java.util.HashMap) Config(com.sun.enterprise.config.serverbeans.Config) MicroProfileMetricsChecker(fish.payara.nucleus.healthcheck.configuration.MicroProfileMetricsChecker) HealthCheckServiceConfiguration(fish.payara.nucleus.healthcheck.configuration.HealthCheckServiceConfiguration) ActionReport(org.glassfish.api.ActionReport) Properties(java.util.Properties) Property(org.jvnet.hk2.config.types.Property) ColumnFormatter(com.sun.enterprise.util.ColumnFormatter) MicroProfileHealthCheckerConfiguration(fish.payara.nucleus.healthcheck.configuration.MicroProfileHealthCheckerConfiguration) MonitoredMetric(fish.payara.nucleus.healthcheck.configuration.MonitoredMetric) HoggingThreadsChecker(fish.payara.nucleus.healthcheck.configuration.HoggingThreadsChecker) StuckThreadsChecker(fish.payara.nucleus.healthcheck.configuration.StuckThreadsChecker) MicroProfileMetricsChecker(fish.payara.nucleus.healthcheck.configuration.MicroProfileMetricsChecker) Checker(fish.payara.nucleus.healthcheck.configuration.Checker) ThresholdDiagnosticsChecker(fish.payara.nucleus.healthcheck.configuration.ThresholdDiagnosticsChecker) BaseHealthCheck(fish.payara.nucleus.healthcheck.preliminary.BaseHealthCheck) ThresholdDiagnosticsChecker(fish.payara.nucleus.healthcheck.configuration.ThresholdDiagnosticsChecker) HoggingThreadsChecker(fish.payara.nucleus.healthcheck.configuration.HoggingThreadsChecker) StuckThreadsChecker(fish.payara.nucleus.healthcheck.configuration.StuckThreadsChecker) ServiceHandle(org.glassfish.hk2.api.ServiceHandle)

Example 24 with Service

use of org.jvnet.hk2.annotations.Service in project Payara by payara.

the class HoggingThreadsConfigurer method execute.

@Override
public void execute(AdminCommandContext context) {
    Config config = targetUtil.getConfig(target);
    HoggingThreadsHealthCheck service = habitat.getService(HoggingThreadsHealthCheck.class);
    final ActionReport actionReport = context.getActionReport();
    if (service == null) {
        actionReport.appendMessage(strings.getLocalString("healthcheck.hoggingthreads.configure.status.error", "Hogging Threads Checker Service could not be found"));
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    // Warn about deprecated option
    if (name != null) {
        actionReport.appendMessage("\n--name parameter is decremented, please begin using the --checkerName option\n");
    }
    try {
        HealthCheckServiceConfiguration healthCheckServiceConfiguration = config.getExtensionByType(HealthCheckServiceConfiguration.class);
        HoggingThreadsChecker hoggingThreadConfiguration = healthCheckServiceConfiguration.getCheckerByType(HoggingThreadsChecker.class);
        if (hoggingThreadConfiguration == null) {
            ConfigSupport.apply(new SingleConfigCode<HealthCheckServiceConfiguration>() {

                @Override
                public Object run(final HealthCheckServiceConfiguration healthCheckServiceConfigurationProxy) throws PropertyVetoException, TransactionFailure {
                    HoggingThreadsChecker checkerProxy = healthCheckServiceConfigurationProxy.createChild(HoggingThreadsChecker.class);
                    applyValues(checkerProxy);
                    healthCheckServiceConfigurationProxy.getCheckerList().add(checkerProxy);
                    actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
                    return healthCheckServiceConfigurationProxy;
                }
            }, healthCheckServiceConfiguration);
        } else {
            ConfigSupport.apply(new SingleConfigCode<HoggingThreadsChecker>() {

                @Override
                public Object run(final HoggingThreadsChecker hoggingThreadConfigurationProxy) throws PropertyVetoException, TransactionFailure {
                    applyValues(hoggingThreadConfigurationProxy);
                    actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
                    return hoggingThreadConfigurationProxy;
                }
            }, hoggingThreadConfiguration);
        }
        if (dynamic) {
            if (server.isDas()) {
                if (targetUtil.getConfig(target).isDas()) {
                    HoggingThreadsChecker checkerByType = healthCheckServiceConfiguration.getCheckerByType(HoggingThreadsChecker.class);
                    service.setOptions(service.constructOptions(checkerByType));
                    healthCheckService.registerCheck(checkerByType.getName(), service);
                    healthCheckService.reboot();
                }
            } else {
                // it implicitly targetted to us as we are not the DAS
                // restart the service
                HoggingThreadsChecker checkerByType = healthCheckServiceConfiguration.getCheckerByType(HoggingThreadsChecker.class);
                service.setOptions(service.constructOptions(hoggingThreadConfiguration));
                healthCheckService.registerCheck(checkerByType.getName(), service);
                healthCheckService.reboot();
            }
        }
    } catch (TransactionFailure ex) {
        logger.log(Level.WARNING, "Exception during command ", ex);
        actionReport.setMessage(ex.getCause().getMessage());
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    }
}
Also used : PropertyVetoException(java.beans.PropertyVetoException) TransactionFailure(org.jvnet.hk2.config.TransactionFailure) HoggingThreadsChecker(fish.payara.nucleus.healthcheck.configuration.HoggingThreadsChecker) Config(com.sun.enterprise.config.serverbeans.Config) HoggingThreadsHealthCheck(fish.payara.nucleus.healthcheck.preliminary.HoggingThreadsHealthCheck) HealthCheckServiceConfiguration(fish.payara.nucleus.healthcheck.configuration.HealthCheckServiceConfiguration) ActionReport(org.glassfish.api.ActionReport)

Example 25 with Service

use of org.jvnet.hk2.annotations.Service in project Payara by payara.

the class SetHealthCheckServiceConfiguration method updateServiceConfiguration.

private <O extends HealthCheckExecutionOptions, C extends Checker> void updateServiceConfiguration(BaseHealthCheck<O, C> service) {
    HealthCheckServiceConfiguration config = targetConfig.getExtensionByType(HealthCheckServiceConfiguration.class);
    final Class<C> checkerType = service.getCheckerType();
    C checker = config.getCheckerByType(checkerType);
    try {
        if (checker == null) {
            ConfigSupport.apply(configProxy -> {
                Checker newChecker = configProxy.createChild(checkerType);
                configProxy.getCheckerList().add(newChecker);
                updateProperties(newChecker, checkerType);
                return configProxy;
            }, config);
        } else {
            ConfigSupport.apply(proxy -> updateProperties(proxy, checkerType), checker);
        }
        if (ThresholdDiagnosticsChecker.class.isAssignableFrom(checkerType)) {
            ThresholdDiagnosticsChecker thresholdDiagnosisConfig = (ThresholdDiagnosticsChecker) config.getCheckerByType(// get updated checker
            checkerType);
            updateProperty(thresholdDiagnosisConfig, HealthCheckConstants.THRESHOLD_CRITICAL, thresholdCritical);
            updateProperty(thresholdDiagnosisConfig, HealthCheckConstants.THRESHOLD_WARNING, thresholdWarning);
            updateProperty(thresholdDiagnosisConfig, HealthCheckConstants.THRESHOLD_GOOD, thresholdGood);
        }
        report.setActionExitCode(ActionReport.ExitCode.SUCCESS);
    } catch (TransactionFailure ex) {
        logger.log(Level.WARNING, "Exception during command ", ex);
        report.setMessage(ex.getCause().getMessage());
        report.setActionExitCode(ActionReport.ExitCode.FAILURE);
    }
    if (dynamic && (!server.isDas() || targetConfig.isDas())) {
        configureDynamically(service, config.getCheckerByType(checkerType));
    }
}
Also used : TransactionFailure(org.jvnet.hk2.config.TransactionFailure) HoggingThreadsChecker(fish.payara.nucleus.healthcheck.configuration.HoggingThreadsChecker) ThresholdDiagnosticsChecker(fish.payara.nucleus.healthcheck.configuration.ThresholdDiagnosticsChecker) StuckThreadsChecker(fish.payara.nucleus.healthcheck.configuration.StuckThreadsChecker) MicroProfileMetricsChecker(fish.payara.nucleus.healthcheck.configuration.MicroProfileMetricsChecker) Checker(fish.payara.nucleus.healthcheck.configuration.Checker) HealthCheckServiceConfiguration(fish.payara.nucleus.healthcheck.configuration.HealthCheckServiceConfiguration) ThresholdDiagnosticsChecker(fish.payara.nucleus.healthcheck.configuration.ThresholdDiagnosticsChecker)

Aggregations

TransactionFailure (org.jvnet.hk2.config.TransactionFailure)34 PropertyVetoException (java.beans.PropertyVetoException)26 ActionReport (org.glassfish.api.ActionReport)25 Config (com.sun.enterprise.config.serverbeans.Config)21 Property (org.jvnet.hk2.config.types.Property)17 ArrayList (java.util.ArrayList)9 Properties (java.util.Properties)9 HealthCheckServiceConfiguration (fish.payara.nucleus.healthcheck.configuration.HealthCheckServiceConfiguration)7 Service (org.jvnet.hk2.annotations.Service)7 File (java.io.File)6 HashMap (java.util.HashMap)6 List (java.util.List)6 PropertyChangeEvent (java.beans.PropertyChangeEvent)5 StuckThreadsChecker (fish.payara.nucleus.healthcheck.configuration.StuckThreadsChecker)4 ServiceLocator (org.glassfish.hk2.api.ServiceLocator)4 ObservableBean (org.jvnet.hk2.config.ObservableBean)4 SingleConfigCode (org.jvnet.hk2.config.SingleConfigCode)4 Transactions (org.jvnet.hk2.config.Transactions)4 UnprocessedChangeEvent (org.jvnet.hk2.config.UnprocessedChangeEvent)4 UnprocessedChangeEvents (org.jvnet.hk2.config.UnprocessedChangeEvents)4