Package org.apache.ambari.server.state.scheduler

Examples of org.apache.ambari.server.state.scheduler.RequestExecution


   */
  public boolean hasToleranceThresholdExceeded(Long executionId,
      String clusterName, Map<String, Integer> taskCounts) throws AmbariException {

    Cluster cluster = clusters.getCluster(clusterName);
    RequestExecution requestExecution = cluster.getAllRequestExecutions().get(executionId);

    if (requestExecution == null) {
      throw new AmbariException("Unable to find request schedule with id = "
        + executionId);
    }

    BatchSettings batchSettings = requestExecution.getBatch().getBatchSettings();
    if (batchSettings != null
        && batchSettings.getTaskFailureToleranceLimit() != null) {
      return taskCounts.get(BatchRequestJob.BATCH_REQUEST_FAILED_TASKS_KEY) >
        batchSettings.getTaskFailureToleranceLimit();
    }
View Full Code Here


   */
  public void finalizeBatch(long executionId, String clusterName)
    throws AmbariException {

    Cluster cluster = clusters.getCluster(clusterName);
    RequestExecution requestExecution = cluster.getAllRequestExecutions().get(executionId);

    if (requestExecution == null) {
      throw new AmbariException("Unable to find request schedule with id = "
        + executionId);
    }

    Batch batch = requestExecution.getBatch();
    BatchRequest firstBatchRequest = null;

    if (batch != null) {
      List<BatchRequest> batchRequests = batch.getBatchRequests();
      if (batchRequests != null && batchRequests.size() > 0) {
        Collections.sort(batchRequests);
        firstBatchRequest = batchRequests.get(0);
      }
    }

    boolean markCompleted = false;

    if (firstBatchRequest != null) {
      String jobName = getJobName(executionId, firstBatchRequest.getOrderId());
      JobKey jobKey = JobKey.jobKey(jobName, ExecutionJob.LINEAR_EXECUTION_JOB_GROUP);
      JobDetail jobDetail;
      try {
        jobDetail = executionScheduler.getJobDetail(jobKey);
      } catch (SchedulerException e) {
        LOG.warn("Unable to retrieve job details from scheduler. job: " + jobKey);
        e.printStackTrace();
        return;
      }

      if (jobDetail != null) {
        try {
          List<? extends Trigger> triggers = executionScheduler.getTriggersForJob(jobKey);
          if (triggers != null && triggers.size() > 0) {
            if (triggers.size() > 1) {
              throw new AmbariException("Too many triggers defined for job. " +
                "job: " + jobKey);
            }

            Trigger trigger = triggers.get(0);
            // Note: If next fire time is in the past, it could be a misfire
            // If final fire time is null, means it is a forever running job
            if (!trigger.mayFireAgain() ||
                (trigger.getFinalFireTime() != null &&
                  !DateUtils.isFutureTime(trigger.getFinalFireTime()))) {
              markCompleted = true;
            }
          } else {
            // No triggers for job
            markCompleted = true;
          }
        } catch (SchedulerException e) {
          LOG.warn("Unable to retrieve triggers for job: " + jobKey);
          e.printStackTrace();
          return;
        }
      }
    }

    if (markCompleted) {
      requestExecution.updateStatus(RequestExecution.Status.COMPLETED);
    }
  }
View Full Code Here

    batches.getBatchRequests().addAll(batchRequests);

    schedule.setMinutes("10");
    schedule.setEndTime("2014-01-01 00:00:00");

    RequestExecution requestExecution = requestExecutionFactory.createNew
      (cluster, batches, schedule);

    requestExecution.setStatus(RequestExecution.Status.SCHEDULED);
    requestExecution.setDescription("Test Schedule");

    requestExecution.persist();

    return requestExecution;
  }
View Full Code Here

    return requestExecution;
  }

  @Test
  public void testCreateRequestSchedule() throws Exception {
    RequestExecution requestExecution = createRequestSchedule();
    Assert.assertNotNull(requestExecution);

    RequestScheduleEntity scheduleEntity = requestScheduleDAO.findById
      (requestExecution.getId());

    Assert.assertNotNull(scheduleEntity);
    Assert.assertEquals(requestExecution.getBatch().getBatchSettings()
      .getTaskFailureToleranceLimit(), scheduleEntity.getBatchTolerationLimit());
    Assert.assertEquals(scheduleEntity.getRequestScheduleBatchRequestEntities().size(), 2);
    Collection<RequestScheduleBatchRequestEntity> batchRequestEntities =
      scheduleEntity.getRequestScheduleBatchRequestEntities();
    Assert.assertNotNull(batchRequestEntities);
    RequestScheduleBatchRequestEntity reqEntity1 = null;
    RequestScheduleBatchRequestEntity reqEntity2 = null;
    for (RequestScheduleBatchRequestEntity reqEntity : batchRequestEntities) {
      if (reqEntity.getRequestUri().equals("testUri1")) {
        reqEntity1 = reqEntity;
      } else if (reqEntity.getRequestUri().equals("testUri2")) {
        reqEntity2 = reqEntity;
      }
    }
    Assert.assertNotNull(reqEntity1);
    Assert.assertNotNull(reqEntity2);
    Assert.assertEquals(Long.valueOf(10L), reqEntity1.getBatchId());
    Assert.assertEquals(Long.valueOf(12L), reqEntity2.getBatchId());
    Assert.assertEquals(BatchRequest.Type.DELETE.name(), reqEntity1.getRequestType());
    Assert.assertEquals(BatchRequest.Type.POST.name(), reqEntity2.getRequestType());
    Assert.assertEquals(requestExecution.getSchedule().getMinutes(),
      scheduleEntity.getMinutes());
    Assert.assertEquals(requestExecution.getSchedule().getEndTime(),
      scheduleEntity.getEndTime());
  }
View Full Code Here

      scheduleEntity.getEndTime());
  }

  @Test
  public void testUpdateRequestSchedule() throws Exception {
    RequestExecution requestExecution = createRequestSchedule();
    Assert.assertNotNull(requestExecution);
    Long id = requestExecution.getId();
    RequestScheduleEntity scheduleEntity = requestScheduleDAO.findById(id);
    Assert.assertNotNull(scheduleEntity);

    // Read from DB
    requestExecution = requestExecutionFactory.createExisting(cluster,
      scheduleEntity);

    // Remove host and add host
    Batch batches = new Batch();

    List<BatchRequest> batchRequests = new ArrayList<BatchRequest>();
    BatchRequest batchRequest1 = new BatchRequest();
    batchRequest1.setOrderId(10L);
    batchRequest1.setType(BatchRequest.Type.PUT);
    batchRequest1.setUri("testUri3");

    BatchRequest batchRequest2 = new BatchRequest();
    batchRequest2.setOrderId(12L);
    batchRequest2.setType(BatchRequest.Type.POST);
    batchRequest2.setUri("testUri4");
    batchRequest2.setBody("testBody");

    batchRequests.add(batchRequest1);
    batchRequests.add(batchRequest2);

    batches.getBatchRequests().addAll(batchRequests);


    requestExecution.setBatch(batches);

    // Change schedule
    requestExecution.getSchedule().setHours("11");

    // Save
    requestExecution.persist();

    scheduleEntity = requestScheduleDAO.findById(id);
    Assert.assertNotNull(scheduleEntity);
    Collection<RequestScheduleBatchRequestEntity> batchRequestEntities =
      scheduleEntity.getRequestScheduleBatchRequestEntities();
View Full Code Here

    Assert.assertEquals("11", scheduleEntity.getHours());
  }

  @Test
  public void testGetRequestSchedule() throws Exception {
    RequestExecution requestExecution = createRequestSchedule();
    Assert.assertNotNull(requestExecution);

    RequestScheduleEntity scheduleEntity = requestScheduleDAO.findById
      (requestExecution.getId());
    Assert.assertNotNull(scheduleEntity);

    Assert.assertNotNull(cluster.getAllRequestExecutions().get
      (requestExecution.getId()));

    Assert.assertNotNull(scheduleEntity);
    Assert.assertEquals(requestExecution.getBatch().getBatchSettings()
      .getTaskFailureToleranceLimit(), scheduleEntity.getBatchTolerationLimit());
    Assert.assertEquals(scheduleEntity.getRequestScheduleBatchRequestEntities().size(), 2);
    Collection<RequestScheduleBatchRequestEntity> batchRequestEntities =
      scheduleEntity.getRequestScheduleBatchRequestEntities();
    Assert.assertNotNull(batchRequestEntities);
    RequestScheduleBatchRequestEntity reqEntity1 = null;
    RequestScheduleBatchRequestEntity reqEntity2 = null;
    for (RequestScheduleBatchRequestEntity reqEntity : batchRequestEntities) {
      if (reqEntity.getRequestUri().equals("testUri1")) {
        reqEntity1 = reqEntity;
      } else if (reqEntity.getRequestUri().equals("testUri2")) {
        reqEntity2 = reqEntity;
      }
    }
    Assert.assertNotNull(reqEntity1);
    Assert.assertNotNull(reqEntity2);
    Assert.assertEquals(Long.valueOf(10L), reqEntity1.getBatchId());
    Assert.assertEquals(Long.valueOf(12L), reqEntity2.getBatchId());
    Assert.assertEquals(BatchRequest.Type.DELETE.name(), reqEntity1.getRequestType());
    Assert.assertEquals(BatchRequest.Type.POST.name(), reqEntity2.getRequestType());
    Assert.assertEquals(requestExecution.getSchedule().getMinutes(),
      scheduleEntity.getMinutes());
    Assert.assertEquals(requestExecution.getSchedule().getEndTime(),
      scheduleEntity.getEndTime());
  }
View Full Code Here

      scheduleEntity.getEndTime());
  }

  @Test
  public void testDeleteRequestSchedule() throws Exception {
    RequestExecution requestExecution = createRequestSchedule();
    Assert.assertNotNull(requestExecution);

    Long id = requestExecution.getId();

    requestExecution.delete();

    Assert.assertNull(requestScheduleDAO.findById(id));
    Assert.assertNull(cluster.getAllRequestExecutions().get(id));
  }
View Full Code Here

    Assert.assertNull(cluster.getAllRequestExecutions().get(id));
  }

  @Test
  public void testGetRequestScheduleWithRequestBody() throws Exception {
    RequestExecution requestExecution = createRequestSchedule();
    Assert.assertNotNull(requestExecution);
    Assert.assertNotNull(cluster.getAllRequestExecutions().get
      (requestExecution.getId()));

    RequestScheduleEntity scheduleEntity = requestScheduleDAO.findById
      (requestExecution.getId());
    Assert.assertNotNull(scheduleEntity);

    // Default Read
    requestExecution = requestExecutionFactory.createExisting(cluster,
      scheduleEntity);

    BatchRequest postBatchRequest = null;
    List<BatchRequest> batchRequests = requestExecution.getBatch()
      .getBatchRequests();
    Assert.assertNotNull(batchRequests);
    for (BatchRequest batchRequest : batchRequests) {
      if (batchRequest.getType().equals(BatchRequest.Type.POST.name())) {
        postBatchRequest = batchRequest;
      }
    }
    Assert.assertNotNull(postBatchRequest);
    // Not read by default
    Assert.assertNull(postBatchRequest.getBody());

    RequestScheduleResponse requestScheduleResponse = requestExecution
      .convertToResponseWithBody();

    Assert.assertNotNull(requestScheduleResponse);

    batchRequests = requestExecution.getBatch().getBatchRequests();
    Assert.assertNotNull(batchRequests);
    for (BatchRequest batchRequest : batchRequests) {
      if (batchRequest.getType().equals(BatchRequest.Type.POST.name())) {
        postBatchRequest = batchRequest;
      }
View Full Code Here

    Assert.assertNotNull(postBatchRequest.getBody());
  }

  @Test
  public void testUpdateStatus() throws Exception {
    RequestExecution requestExecution = createRequestSchedule();
    Assert.assertNotNull(requestExecution);
    Assert.assertNotNull(cluster.getAllRequestExecutions().get
      (requestExecution.getId()));

    RequestScheduleEntity scheduleEntity = requestScheduleDAO.findById
      (requestExecution.getId());
    Assert.assertNotNull(scheduleEntity);
    Assert.assertEquals(RequestExecution.Status.SCHEDULED.name(),
      scheduleEntity.getStatus());

    requestExecution.updateStatus(RequestExecution.Status.COMPLETED);

    scheduleEntity = requestScheduleDAO.findById(requestExecution.getId());
    Assert.assertNotNull(scheduleEntity);
    Assert.assertEquals(RequestExecution.Status.COMPLETED.name(),
      scheduleEntity.getStatus());
  }
View Full Code Here

      scheduleEntity.getStatus());
  }

  @Test
  public void testUpdateBatchRequest() throws Exception {
    RequestExecution requestExecution = createRequestSchedule();
    Assert.assertNotNull(requestExecution);
    Assert.assertNotNull(cluster.getAllRequestExecutions().get
      (requestExecution.getId()));

    RequestScheduleEntity scheduleEntity = requestScheduleDAO.findById(requestExecution.getId());
    Assert.assertNotNull(scheduleEntity);
    Assert.assertEquals(RequestExecution.Status.SCHEDULED.name(), scheduleEntity.getStatus());

    Collection<RequestScheduleBatchRequestEntity> batchRequestEntities =
      scheduleEntity.getRequestScheduleBatchRequestEntities();

    Assert.assertNotNull(batchRequestEntities);
    Assert.assertEquals(2, batchRequestEntities.size());

    BatchRequestResponse batchRequestResponse = new BatchRequestResponse();
    batchRequestResponse.setRequestId(1L);
    batchRequestResponse.setReturnCode(200);
    batchRequestResponse.setReturnMessage("test");
    batchRequestResponse.setStatus("IN_PROGRESS");

    requestExecution.updateBatchRequest(10L, batchRequestResponse, false);

    scheduleEntity = requestScheduleDAO.findById(requestExecution.getId());
    RequestScheduleBatchRequestEntity testEntity = null;

    for (RequestScheduleBatchRequestEntity entity :
        scheduleEntity.getRequestScheduleBatchRequestEntities()) {
      if (entity.getBatchId().equals(10L)) {
View Full Code Here

TOP

Related Classes of org.apache.ambari.server.state.scheduler.RequestExecution

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.