Search in sources :

Example 6 with TaskExecLog

use of com.netflix.conductor.common.metadata.tasks.TaskExecLog in project conductor by Netflix.

the class TestElasticSearchRestDAOV6 method createLog.

private TaskExecLog createLog(String taskId, String log) {
    TaskExecLog taskExecLog = new TaskExecLog(log);
    taskExecLog.setTaskId(taskId);
    return taskExecLog;
}
Also used : TaskExecLog(com.netflix.conductor.common.metadata.tasks.TaskExecLog)

Example 7 with TaskExecLog

use of com.netflix.conductor.common.metadata.tasks.TaskExecLog in project conductor by Netflix.

the class TestElasticSearchDAOV6 method createLog.

private TaskExecLog createLog(String taskId, String log) {
    TaskExecLog taskExecLog = new TaskExecLog(log);
    taskExecLog.setTaskId(taskId);
    return taskExecLog;
}
Also used : TaskExecLog(com.netflix.conductor.common.metadata.tasks.TaskExecLog)

Example 8 with TaskExecLog

use of com.netflix.conductor.common.metadata.tasks.TaskExecLog in project conductor by Netflix.

the class ExecutionService method log.

/**
 * Adds task logs
 * @param taskId Id of the task
 * @param log logs
 */
public void log(String taskId, String log) {
    TaskExecLog executionLog = new TaskExecLog();
    executionLog.setTaskId(taskId);
    executionLog.setLog(log);
    executionLog.setCreatedTime(System.currentTimeMillis());
    executionDAOFacade.addTaskExecLog(Collections.singletonList(executionLog));
}
Also used : TaskExecLog(com.netflix.conductor.common.metadata.tasks.TaskExecLog)

Example 9 with TaskExecLog

use of com.netflix.conductor.common.metadata.tasks.TaskExecLog in project conductor by Netflix.

the class ElasticSearchDAOV5 method addTaskExecutionLogs.

@Override
public void addTaskExecutionLogs(List<TaskExecLog> taskExecLogs) {
    if (taskExecLogs.isEmpty()) {
        return;
    }
    try {
        long startTime = Instant.now().toEpochMilli();
        BulkRequestBuilderWrapper bulkRequestBuilder = new BulkRequestBuilderWrapper(elasticSearchClient.prepareBulk());
        for (TaskExecLog log : taskExecLogs) {
            IndexRequest request = new IndexRequest(logIndexName, LOG_DOC_TYPE);
            request.source(objectMapper.writeValueAsBytes(log), XContentType.JSON);
            bulkRequestBuilder.add(request);
        }
        new RetryUtil<BulkResponse>().retryOnException(() -> bulkRequestBuilder.execute().actionGet(5, TimeUnit.SECONDS), null, BulkResponse::hasFailures, RETRY_COUNT, "Indexing task execution logs", "addTaskExecutionLogs");
        long endTime = Instant.now().toEpochMilli();
        logger.debug("Time taken {} for indexing taskExecutionLogs", endTime - startTime);
        Monitors.recordESIndexTime("index_task_execution_logs", LOG_DOC_TYPE, endTime - startTime);
        Monitors.recordWorkerQueueSize("logQueue", ((ThreadPoolExecutor) logExecutorService).getQueue().size());
    } catch (Exception e) {
        List<String> taskIds = taskExecLogs.stream().map(TaskExecLog::getTaskId).collect(Collectors.toList());
        logger.error("Failed to index task execution logs for tasks: {}", taskIds, e);
    }
}
Also used : TaskExecLog(com.netflix.conductor.common.metadata.tasks.TaskExecLog) BulkResponse(org.elasticsearch.action.bulk.BulkResponse) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) IndexRequest(org.elasticsearch.action.index.IndexRequest) CreateIndexRequest(org.elasticsearch.action.admin.indices.create.CreateIndexRequest) IndexNotFoundException(org.elasticsearch.index.IndexNotFoundException) ParserException(com.netflix.conductor.elasticsearch.query.parser.ParserException) ResourceAlreadyExistsException(org.elasticsearch.ResourceAlreadyExistsException) ApplicationException(com.netflix.conductor.core.execution.ApplicationException) IOException(java.io.IOException)

Example 10 with TaskExecLog

use of com.netflix.conductor.common.metadata.tasks.TaskExecLog in project conductor by Netflix.

the class ElasticSearchRestDAOV5 method addTaskExecutionLogs.

@Override
public void addTaskExecutionLogs(List<TaskExecLog> taskExecLogs) {
    if (taskExecLogs.isEmpty()) {
        return;
    }
    long startTime = Instant.now().toEpochMilli();
    BulkRequest bulkRequest = new BulkRequest();
    for (TaskExecLog log : taskExecLogs) {
        byte[] docBytes;
        try {
            docBytes = objectMapper.writeValueAsBytes(log);
        } catch (JsonProcessingException e) {
            logger.error("Failed to convert task log to JSON for task {}", log.getTaskId());
            continue;
        }
        IndexRequest request = new IndexRequest(logIndexName, LOG_DOC_TYPE);
        request.source(docBytes, XContentType.JSON);
        bulkRequest.add(request);
    }
    try {
        new RetryUtil<BulkResponse>().retryOnException(() -> {
            try {
                return elasticSearchClient.bulk(bulkRequest);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }, null, BulkResponse::hasFailures, RETRY_COUNT, "Indexing task execution logs", "addTaskExecutionLogs");
        long endTime = Instant.now().toEpochMilli();
        logger.debug("Time taken {} for indexing taskExecutionLogs", endTime - startTime);
        Monitors.recordESIndexTime("index_task_execution_logs", LOG_DOC_TYPE, endTime - startTime);
        Monitors.recordWorkerQueueSize("logQueue", ((ThreadPoolExecutor) logExecutorService).getQueue().size());
    } catch (Exception e) {
        List<String> taskIds = taskExecLogs.stream().map(TaskExecLog::getTaskId).collect(Collectors.toList());
        logger.error("Failed to index task execution logs for tasks: {}", taskIds, e);
    }
}
Also used : TaskExecLog(com.netflix.conductor.common.metadata.tasks.TaskExecLog) BulkResponse(org.elasticsearch.action.bulk.BulkResponse) IOException(java.io.IOException) IndexRequest(org.elasticsearch.action.index.IndexRequest) ResponseException(org.elasticsearch.client.ResponseException) ApplicationException(com.netflix.conductor.core.execution.ApplicationException) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) BulkRequest(org.elasticsearch.action.bulk.BulkRequest) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Aggregations

TaskExecLog (com.netflix.conductor.common.metadata.tasks.TaskExecLog)17 ArrayList (java.util.ArrayList)10 ApplicationException (com.netflix.conductor.core.execution.ApplicationException)6 IOException (java.io.IOException)6 LinkedList (java.util.LinkedList)5 List (java.util.List)5 ThreadPoolExecutor (java.util.concurrent.ThreadPoolExecutor)5 BulkResponse (org.elasticsearch.action.bulk.BulkResponse)5 IndexRequest (org.elasticsearch.action.index.IndexRequest)5 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)4 ParserException (com.netflix.conductor.elasticsearch.query.parser.ParserException)4 SearchHit (org.elasticsearch.search.SearchHit)4 BulkRequest (org.elasticsearch.action.bulk.BulkRequest)3 ResponseException (org.elasticsearch.client.ResponseException)3 Test (org.junit.Test)3 ResourceAlreadyExistsException (org.elasticsearch.ResourceAlreadyExistsException)2 CreateIndexRequest (org.elasticsearch.action.admin.indices.create.CreateIndexRequest)2 IndexNotFoundException (org.elasticsearch.index.IndexNotFoundException)2 Expression (com.netflix.conductor.dao.es5.index.query.parser.Expression)1 SearchRequest (org.elasticsearch.action.search.SearchRequest)1