Search in sources :

Example 46 with Result

use of org.apache.sling.hc.api.Result in project sling by apache.

the class DistributionQueueHealthCheck method execute.

public Result execute() {
    final FormattingResultLog resultLog = new FormattingResultLog();
    Map<String, Integer> failures = new HashMap<String, Integer>();
    if (distributionAgents.size() > 0) {
        for (DistributionAgent distributionAgent : distributionAgents) {
            for (String queueName : distributionAgent.getQueueNames()) {
                try {
                    DistributionQueue q = distributionAgent.getQueue(queueName);
                    DistributionQueueEntry entry = q.getHead();
                    if (entry != null) {
                        DistributionQueueItemStatus status = entry.getStatus();
                        if (status.getAttempts() <= numberOfRetriesAllowed) {
                            resultLog.debug("Queue: [{}], first item: [{}], number of retries: {}", q.getName(), entry.getId(), status.getAttempts());
                        } else {
                            // the no. of attempts is higher than the configured threshold
                            resultLog.warn("Queue: [{}], first item: [{}], number of retries: {}, expected number of retries <= {}", q.getName(), entry.getId(), status.getAttempts(), numberOfRetriesAllowed);
                            failures.put(q.getName(), status.getAttempts());
                        }
                    } else {
                        resultLog.debug("No items in queue [{}]", q.getName());
                    }
                } catch (Exception e) {
                    resultLog.warn("Exception while inspecting distribution queue [{}]: {}", queueName, e);
                }
            }
        }
    } else {
        resultLog.debug("No distribution queue providers found");
    }
    if (failures.size() > 0) {
        // a specific log entry (using markdown) to provide a recommended user action
        for (Map.Entry<String, Integer> entry : failures.entrySet()) {
            resultLog.warn("Distribution queue {}'s first item in the default queue has been retried {} times (threshold: {})", entry.getKey(), entry.getValue(), numberOfRetriesAllowed);
        }
    }
    return new Result(resultLog);
}
Also used : DistributionAgent(org.apache.sling.distribution.agent.DistributionAgent) DistributionQueueItemStatus(org.apache.sling.distribution.queue.DistributionQueueItemStatus) HashMap(java.util.HashMap) DistributionQueue(org.apache.sling.distribution.queue.DistributionQueue) DistributionQueueEntry(org.apache.sling.distribution.queue.DistributionQueueEntry) FormattingResultLog(org.apache.sling.hc.util.FormattingResultLog) Result(org.apache.sling.hc.api.Result) HashMap(java.util.HashMap) Map(java.util.Map)

Example 47 with Result

use of org.apache.sling.hc.api.Result in project sling by apache.

the class OsgiInstallerHealthCheck method execute.

@Override
public Result execute() {
    InstallationState installationState = infoProvider.getInstallationState();
    FormattingResultLog hcLog = new FormattingResultLog();
    int numCheckedConfigurations = 0;
    int numCheckedBundles = 0;
    // go through all resource groups of the OSGi Installer
    for (final ResourceGroup group : installationState.getInstalledResources()) {
        String type = evaluateGroup(group, hcLog);
        switch(type) {
            case InstallableResource.TYPE_CONFIG:
                numCheckedConfigurations++;
                break;
            case InstallableResource.TYPE_BUNDLE:
                numCheckedBundles++;
                break;
        }
    }
    hcLog.info("Checked {} OSGi bundles and {} configurations.", numCheckedBundles, numCheckedConfigurations);
    if (hcLog.getAggregateStatus().ordinal() >= Result.Status.WARN.ordinal()) {
        hcLog.info("Refer to the OSGi installer's documentation page at {} for further details on how to fix those issues.", DOCUMENTATION_URL);
    }
    return new Result(hcLog);
}
Also used : InstallationState(org.apache.sling.installer.api.info.InstallationState) FormattingResultLog(org.apache.sling.hc.util.FormattingResultLog) ResourceGroup(org.apache.sling.installer.api.info.ResourceGroup) Result(org.apache.sling.hc.api.Result)

Example 48 with Result

use of org.apache.sling.hc.api.Result in project sling by apache.

the class DistributionQueueHealthCheckTest method testWithNotOkItemInTheQueue.

@Test
public void testWithNotOkItemInTheQueue() throws Exception {
    DistributionQueueHealthCheck distributionQueueHealthCheck = new DistributionQueueHealthCheck();
    distributionQueueHealthCheck.activate(Collections.<String, Object>emptyMap());
    DistributionQueue queue = mock(DistributionQueue.class);
    DistributionQueueItem item = mock(DistributionQueueItem.class);
    DistributionQueueItemStatus status = mock(DistributionQueueItemStatus.class);
    when(status.getAttempts()).thenReturn(10);
    when(queue.getItem(any(String.class))).thenReturn(new DistributionQueueEntry(null, item, status));
    when(queue.getHead()).thenReturn(new DistributionQueueEntry(null, item, status));
    DistributionAgent distributionAgent = mock(DistributionAgent.class);
    List<String> queues = new ArrayList<String>();
    queues.add("queueName");
    when(distributionAgent.getQueueNames()).thenReturn(queues);
    when(distributionAgent.getQueue(anyString())).thenReturn(queue);
    distributionQueueHealthCheck.bindDistributionAgent(distributionAgent);
    Result result = distributionQueueHealthCheck.execute();
    assertNotNull(result);
    assertFalse(result.isOk());
}
Also used : DistributionAgent(org.apache.sling.distribution.agent.DistributionAgent) DistributionQueueItemStatus(org.apache.sling.distribution.queue.DistributionQueueItemStatus) DistributionQueue(org.apache.sling.distribution.queue.DistributionQueue) DistributionQueueEntry(org.apache.sling.distribution.queue.DistributionQueueEntry) ArrayList(java.util.ArrayList) Matchers.anyString(org.mockito.Matchers.anyString) DistributionQueueItem(org.apache.sling.distribution.queue.DistributionQueueItem) Result(org.apache.sling.hc.api.Result) Test(org.junit.Test)

Aggregations

Result (org.apache.sling.hc.api.Result)48 HealthCheckExecutionResult (org.apache.sling.hc.api.execution.HealthCheckExecutionResult)24 Test (org.junit.Test)19 FormattingResultLog (org.apache.sling.hc.util.FormattingResultLog)15 ExecutionResult (org.apache.sling.hc.core.impl.executor.ExecutionResult)9 HealthCheckExecutionOptions (org.apache.sling.hc.api.execution.HealthCheckExecutionOptions)8 Matchers.anyString (org.mockito.Matchers.anyString)8 ArrayList (java.util.ArrayList)7 Date (java.util.Date)7 HealthCheckMetadata (org.apache.sling.hc.util.HealthCheckMetadata)7 ServiceReference (org.osgi.framework.ServiceReference)6 HealthCheck (org.apache.sling.hc.api.HealthCheck)5 HealthCheckSelector (org.apache.sling.hc.api.execution.HealthCheckSelector)5 Hashtable (java.util.Hashtable)4 DistributionAgent (org.apache.sling.distribution.agent.DistributionAgent)4 DistributionQueue (org.apache.sling.distribution.queue.DistributionQueue)4 SimpleDateFormat (java.text.SimpleDateFormat)3 ObjectName (javax.management.ObjectName)3 DistributionQueueEntry (org.apache.sling.distribution.queue.DistributionQueueEntry)3 DistributionQueueItemStatus (org.apache.sling.distribution.queue.DistributionQueueItemStatus)3