org.apache.lens.server.api.query.QueryContext.getStatus()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(15.8k)|赞(0)|评价(0)|浏览(105)

本文整理了Java中org.apache.lens.server.api.query.QueryContext.getStatus方法的一些代码示例,展示了QueryContext.getStatus的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。QueryContext.getStatus方法的具体详情如下:
包路径:org.apache.lens.server.api.query.QueryContext
类名称:QueryContext
方法名:getStatus

QueryContext.getStatus介绍

暂无

代码示例

代码示例来源:origin: apache/lens

/** Creates the mail message.
 *
 * @param queryContext the query context
 * @return the string */
private String createMailMessage(QueryContext queryContext) {
 StringBuilder msgBuilder = new StringBuilder();
 switch (queryContext.getStatus().getStatus()) {
 case SUCCESSFUL:
  msgBuilder.append(getResultMessage(queryContext));
  break;
 case FAILED:
  msgBuilder.append(queryContext.getStatus().getStatusMessage());
  if (!StringUtils.isBlank(queryContext.getStatus().getErrorMessage())) {
   msgBuilder.append("\n Reason:\n");
   msgBuilder.append(queryContext.getStatus().getErrorMessage());
  }
  break;
 case CANCELED:
  msgBuilder.append(queryContext.getStatus().getStatusMessage());
  break;
 default:
  break;
 }
 return msgBuilder.toString();
}

代码示例来源:origin: apache/lens

/**
 * Sets the cancelled status.
 *
 * @param ctx       the ctx
 * @param statusMsg the status msg
 * @throws LensException the lens exception
 */
private void setCancelledStatus(QueryContext ctx, String statusMsg) throws LensException {
 QueryStatus before = ctx.getStatus();
 ctx.setStatus(new QueryStatus(0.0f, null, CANCELED, statusMsg, false, null, null, null));
 updateFinishedQuery(ctx, before);
 fireStatusChangeEvent(ctx, ctx.getStatus(), before);
}

代码示例来源:origin: apache/lens

private List<QueryHandle> getQueriesInMemory(Set<Status> statuses, String userName, String driver,
 String queryName, long fromTime, long toTime) throws LensException {
 userName = UtilityMethods.removeDomain(userName);
 boolean filterByQueryName = StringUtils.isNotBlank(queryName);
 if (filterByQueryName) {
  queryName = queryName.toLowerCase();
 }
 boolean filterByDriver = StringUtils.isNotBlank(driver);
 List<QueryHandle> all = new ArrayList<QueryHandle>(allQueries.keySet());
 Iterator<QueryHandle> itr = all.iterator();
 while (itr.hasNext()) {
  QueryHandle q = itr.next();
  QueryContext context = allQueries.get(q);
  long querySubmitTime = context.getSubmissionTime();
  if ((!statuses.contains(context.getStatus().getStatus()))
   || (filterByQueryName && !context.getQueryName().toLowerCase().contains(queryName))
   || (filterByDriver && !context.getSelectedDriver().getFullyQualifiedName().equalsIgnoreCase(driver))
   || (!"all".equalsIgnoreCase(userName) && !userName.equalsIgnoreCase(context.getSubmittedUser()))
   || (!(fromTime <= querySubmitTime && querySubmitTime < toTime))) {
   itr.remove();
  }
 }
 return all;
}

代码示例来源:origin: apache/lens

void setSuccessState(QueryContext ctx) throws LensException {
 QueryStatus before = ctx.getStatus();
 ctx.setStatus(new QueryStatus(1.0f, null, SUCCESSFUL, "Query is successful!", ctx
  .isResultAvailableInDriver(), null, null, null));
 updateFinishedQuery(ctx, before);
 fireStatusChangeEvent(ctx, ctx.getStatus(), before);
}

代码示例来源:origin: apache/lens

@Override
public boolean canLaunch(final QueryContext candidateQuery, final EstimatedImmutableQueryCollection launchedQueries) {
 Set<QueryLaunchingConstraint> allConstraints = prepareAllConstraints(candidateQuery);
 for (QueryLaunchingConstraint queryConstraint : allConstraints) {
  String launchRejectionMessage = queryConstraint.allowsLaunchOf(candidateQuery, launchedQueries);
  if (launchRejectionMessage != null) {
   log.info("query {} not allowed to launch. Constraint failed: {} with message: {}",
    candidateQuery, queryConstraint, launchRejectionMessage);
   candidateQuery.getStatus().setProgressMessage(launchRejectionMessage);
   return false;
  }
 }
 return true;
}

代码示例来源:origin: apache/lens

public boolean canBePurged() {
 try {
  if (getCtx().getStatus().getStatus().equals(SUCCESSFUL) && getCtx().getStatus().isResultSetAvailable()) {
   LensResultSet serverRS = getResultset();
   log.info("Server Resultset for {} is {}", getQueryHandle(), serverRS.getClass().getSimpleName());
   // driverRS and serverRS will not match when server persistence is enabled. Check for purgability of both
   // result sets in this case
   if (driverRS != null && driverRS != serverRS) {
    log.info("Driver Resultset for {} is {}", getQueryHandle(), driverRS.getClass().getSimpleName());
    return serverRS.canBePurged() && (driverRS.canBePurged() || hasResultSetExceededTTL(driverRS));
   } else {
    return serverRS.canBePurged() || hasResultSetExceededTTL(serverRS);
   }
  }
  return true;
 } catch (Throwable e) {
  log.error("Error while accessing result set for query handle while purging: {}."
   + " Hence, going ahead with purge", getQueryHandle(), e);
  return true;
 }
}

代码示例来源:origin: apache/lens

private QueryHandle submitQuery(final QueryContext ctx) throws LensException {
 synchronized (ctx) {
  QueryStatus before = ctx.getStatus();
  ctx.setStatus(QueryStatus.getQueuedStatus());
  queuedQueries.add(ctx);
  log.info("Added to Queued Queries:{}", ctx.getQueryHandleString());
  allQueries.put(ctx.getQueryHandle(), ctx);
  // Add to session's active query list
  getSession(SESSION_MAP.get(ctx.getLensSessionIdentifier())).addToActiveQueries(ctx.getQueryHandle());
  fireStatusChangeEvent(ctx, ctx.getStatus(), before);
  log.info("Returning handle {}", ctx.getQueryHandle().getHandleId());
  return ctx.getQueryHandle();
 }
}

代码示例来源:origin: apache/lens

/**
 * Sets the failed status.
 *
 * @param ctx       the ctx
 * @param statusMsg the status msg
 * @param e    the LensException
 * @throws LensException the lens exception
 */
void setFailedStatus(QueryContext ctx, String statusMsg, Exception e) throws LensException {
 QueryStatus before = ctx.getStatus();
 ctx.setStatus(new QueryStatus(0.0f, null, FAILING, statusMsg, false, null, LensUtil.getCauseMessage(e),
  e instanceof LensException ? ((LensException)e).buildLensErrorTO(this.errorCollection) : null));
 handleRetries(ctx);
 if (ctx.finished()) {
  updateFinishedQuery(ctx, before);
 }
 fireStatusChangeEvent(ctx, ctx.getStatus(), before);
}

代码示例来源:origin: apache/lens

@Test
public void testCanLaunchShouldReturnFalseWhenAtleastOneConstraintFails() {
 QueryContext mockCandidateQuery = mock(QueryContext.class);
 EstimatedImmutableQueryCollection mockRunningQueries = mock(EstimatedImmutableQueryCollection.class);
 final QueryLaunchingConstraint constraint1 = mock(QueryLaunchingConstraint.class);
 final QueryLaunchingConstraint constraint2 = mock(QueryLaunchingConstraint.class);
 QueryLaunchingConstraintsChecker constraintsChecker
  = new DefaultQueryLaunchingConstraintsChecker(ImmutableSet.of(constraint1, constraint2));
 QueryStatus status = QueryStatus.getQueuedStatus();
 final QueryLaunchingConstraint driverConstraint = mock(QueryLaunchingConstraint.class);
 when(mockCandidateQuery.getSelectedDriverQueryConstraints()).thenReturn(ImmutableSet.of(driverConstraint));
 when(mockCandidateQuery.getStatus()).thenReturn(status);
 /* Constraint1 stubbed to pass */
 when(constraint1.allowsLaunchOf(mockCandidateQuery, mockRunningQueries)).thenReturn(null);
 /* Constraint2 stubbed to fail */
 when(constraint2.allowsLaunchOf(mockCandidateQuery, mockRunningQueries)).thenReturn("constraint 2 failed");
 /* DriverConstraint stubbed to fail */
 when(driverConstraint.allowsLaunchOf(mockCandidateQuery, mockRunningQueries))
  .thenReturn("driver constraint failed");
 /* Execute test */
 boolean canLaunchQuery = constraintsChecker.canLaunch(mockCandidateQuery, mockRunningQueries);
 /* Verify */
 Assert.assertFalse(canLaunchQuery);
 Assert.assertEquals(mockCandidateQuery.getStatus().getProgressMessage(), "constraint 2 failed");
}

代码示例来源:origin: apache/lens

private BackOffRetryHandler<QueryContext> getServerRetryPolicy(QueryContext ctx) {
 if (ctx.getServerRetryPolicy() == null) {
  // allow new driver to retry
  ctx.setDriverRetryPolicy(null);
  ctx.setServerRetryPolicy(queryRetryPolicyDecider.decidePolicy(ctx.getStatus().getErrorMessage()));
 }
 return ctx.getServerRetryPolicy();
}

代码示例来源:origin: org.apache.lens/lens-server-api

/**
 * Default implementation for fetchResultSet for all drivers. Should hold good in most cases.
 * Note : If a driver is sticking to this default implementation, it should
 * override {@link #createResultSet(QueryContext)}
 */
@Override
public LensResultSet fetchResultSet(QueryContext ctx) throws LensException {
 log.info("FetchResultSet: {}", ctx.getQueryHandle());
 if (!ctx.getDriverStatus().isSuccessful()) {
  throw new LensException("Can't fetch results for a " + ctx.getQueryHandleString() + " because it's status is "
   + ctx.getStatus());
 }
 ctx.registerDriverResult(createResultSet(ctx)); // registerDriverResult makes sure registration happens ony once
 return ctx.getDriverResult();
}

代码示例来源:origin: apache/lens

/**
 * Default implementation for fetchResultSet for all drivers. Should hold good in most cases.
 * Note : If a driver is sticking to this default implementation, it should
 * override {@link #createResultSet(QueryContext)}
 */
@Override
public LensResultSet fetchResultSet(QueryContext ctx) throws LensException {
 log.info("FetchResultSet: {}", ctx.getQueryHandle());
 if (!ctx.getDriverStatus().isSuccessful()) {
  throw new LensException("Can't fetch results for a " + ctx.getQueryHandleString() + " because it's status is "
   + ctx.getStatus());
 }
 ctx.registerDriverResult(createResultSet(ctx)); // registerDriverResult makes sure registration happens ony once
 return ctx.getDriverResult();
}

代码示例来源:origin: apache/lens

private void persistQuery(FinishedQuery finished) throws SQLException {
  FinishedLensQuery finishedQuery = new FinishedLensQuery(finished.getCtx());
  if (finished.ctx.getStatus().getStatus() == SUCCESSFUL) {
   if (finished.ctx.getStatus().isResultSetAvailable()) {
    try {
     LensResultSet set = finished.getResultset();
     if (set != null && PersistentResultSet.class.isAssignableFrom(set.getClass())) {
      LensResultSetMetadata metadata = set.getMetadata();
      String outputPath = set.getOutputPath();
      Long fileSize = ((PersistentResultSet) set).getFileSize();
      Integer rows = set.size();
      finishedQuery.setResult(outputPath);
      finishedQuery.setMetadata(metadata.toJson());
      finishedQuery.setRows(rows);
      finishedQuery.setFileSize(fileSize);
     }
    } catch (Exception e) {
     log.error("Couldn't obtain result set info for the query: {}. Going ahead with perstsiting the query",
      finished.getQueryHandle(), e);
    }
   }
  }
  lensServerDao.insertFinishedQuery(finishedQuery);
  log.info("Saved query {} to DB", finishedQuery.getHandle());
 }
}

代码示例来源:origin: apache/lens

@Test
public void testFailureAfterRetry() throws LensException, InterruptedException {
 QueryHandle handle = getQueryService().executeAsync(session, "select 1",
  getLensConf("driver.retry/double_failure.cost", "1"),
  "random query");
 QueryContext ctx = getQueryService().getQueryContext(handle);
 while (!ctx.getStatus().finished()) {
  ctx = getQueryService().getQueryContext(handle);
  Thread.sleep(1000);
 }
 assertTrue(ctx.getStatus().failed());
 assertEquals(ctx.getFailedAttempts().size(), 1);
 FailedAttempt attempt1 = ctx.getFailedAttempts().get(0);
 assertEquals(attempt1.getDriverName(), "retry/double_failure");
 assertEquals(ctx.getSelectedDriver().getFullyQualifiedName(), "retry/double_failure");
 assertTrue(ctx.getStatus().failed());
}

代码示例来源:origin: apache/lens

private void launchQuery(final QueryContext query) throws LensException {
  checkEstimatedQueriesState(query);
  query.getSelectedDriver().getQueryHook().preLaunch(query);
  QueryStatus oldStatus = query.getStatus();
  // If driver supports async updates.
  if (query.getSelectedDriver().getStatusUpdateMethod() == StatusUpdateMethod.PUSH) {
   query.registerStatusUpdateListener(asyncStatusUpdater);
  }
  QueryStatus newStatus = new QueryStatus(query.getStatus().getProgress(), null,
   QueryStatus.Status.LAUNCHED, "Query is launched on driver", false, null, null, null);
  query.validateTransition(newStatus);
  // Check if we need to pass session's effective resources to selected driver
  addSessionResourcesToDriver(query);
  query.getSelectedDriver().executeAsync(query);
  query.setStatusSkippingTransitionTest(newStatus);
  query.clearTransientStateAfterLaunch();
  log.info("Added to launched queries. QueryId:{}", query.getQueryHandleString());
  fireStatusChangeEvent(query, newStatus, oldStatus);
 }
}

代码示例来源:origin: apache/lens

@Test
public void testDelayedLaunch() throws LensException, InterruptedException {
 QueryHandle handle = getQueryService().executeAsync(session, "select 1",
  getLensConf("driver.retry/double_failure.cost", "1",
   "driver.retry/double_failure.error.message", "fibonacci.500"),
  "random query");
 QueryContext ctx = getQueryService().getQueryContext(handle);
 while (!ctx.getStatus().finished()) {
  ctx = getQueryService().getQueryContext(handle);
  Thread.sleep(1000);
 }
 assertTrue(ctx.getStatus().successful());
 assertEquals(ctx.getFailedAttempts().size(), 2);
 FailedAttempt attempt1 = ctx.getFailedAttempts().get(0);
 FailedAttempt attempt2 = ctx.getFailedAttempts().get(1);
 assertTrue(attempt2.getDriverStartTime() - attempt1.getDriverFinishTime() >= 500);
 assertTrue(ctx.getDriverStatus().getDriverStartTime() - attempt2.getDriverFinishTime() >= 1000);
}

代码示例来源:origin: apache/lens

private BackOffRetryHandler<QueryContext> getDriverRetryPolicy(QueryContext ctx) {
 if (ctx.getDriverRetryPolicy() == null) {
  String errorMessage = ctx.getDriverStatus().getErrorMessage() != null ? ctx.getDriverStatus().getErrorMessage()
   : ctx.getStatus().getErrorMessage();
  ctx.setDriverRetryPolicy(ctx.getSelectedDriver().getRetryPolicyDecider()
   .decidePolicy(errorMessage));
 }
 return ctx.getDriverRetryPolicy();
}

代码示例来源:origin: apache/lens

@Test
public void testSingleRetrySameDriver() throws LensException, InterruptedException {
 QueryHandle handle = getQueryService().executeAsync(session, "select 1",
  getLensConf("driver.retry/single_failure.cost", "1", "driver.retry/double_failure.cost", "2"),
  "random query");
 QueryContext ctx = getQueryService().getQueryContext(handle);
 while (!ctx.getStatus().finished()) {
  ctx = getQueryService().getQueryContext(handle);
  Thread.sleep(1000);
 }
 assertEquals(ctx.getFailedAttempts().size(), 1);
 FailedAttempt failedAttempt = ctx.getFailedAttempts().get(0);
 assertEquals(failedAttempt.getDriverName(), "retry/single_failure");
 assertEquals(ctx.getSelectedDriver().getFullyQualifiedName(), "retry/single_failure");
 assertTrue(failedAttempt.getDriverFinishTime() > failedAttempt.getDriverStartTime());
 assertTrue(ctx.getDriverStatus().getDriverStartTime() > failedAttempt.getDriverFinishTime());
}

代码示例来源:origin: apache/lens

@Test
public void testAutoCancelOnTimeOut() throws Exception {
 queryService.pauseQuerySubmitter(true);
 //First query will not be queued. @see QueryExecutionServiceImpl.QuerySubmitter.run
 queryService.executeAsync(lensSessionId, "select 1 from " + TEST_TABLE, new LensConf(), "dummyQuery");
 //Second query after pause will be queued
 QueryHandleWithResultSet result = queryService.execute(lensSessionId, "select ID, IDSTR from "+ TEST_TABLE, 100,
  new LensConf(),  "testQuery");
 assertNotNull(result.getQueryHandle());
 assertTrue(result.getStatus().queued());
 int checkCtr = 0;
 boolean cancelled = false;
 while (!cancelled && checkCtr++ < 100) { //Max 10 secs wait
  Thread.sleep(100); //wait for query to get auto cancelled
  cancelled = queryService.getUpdatedQueryContext(lensSessionId, result.getQueryHandle()).getStatus().cancelled();
 }
 assertTrue(cancelled); //auto cancelled beyond timeout
 queryService.pauseQuerySubmitter(false);
}

代码示例来源:origin: apache/lens

@Test
 public void testRestartWhileRetry() throws LensException, InterruptedException {
  QueryHandle handle = getQueryService().executeAsync(session, "select 1",
   getLensConf("driver.retry/double_failure.cost", "1",
    "driver.retry/double_failure.error.message", "fibonacci.5000"),
   "random query");
  QueryContext ctx = getQueryService().getQueryContext(handle);

  while (ctx.getFailedAttempts().size() == 0) {
   ctx = getQueryService().getQueryContext(handle);
   Thread.sleep(1000);
  }
  restartLensServer(getServerConf(), false);
  ctx = getQueryService().getQueryContext(handle);
  while (!ctx.getStatus().finished()) {
   ctx = getQueryService().getQueryContext(handle);
   Thread.sleep(1000);
  }
  assertTrue(ctx.getStatus().successful());
  assertEquals(ctx.getFailedAttempts().size(), 2);
  FailedAttempt attempt1 = ctx.getFailedAttempts().get(0);
  FailedAttempt attempt2 = ctx.getFailedAttempts().get(1);
  assertTrue(attempt2.getDriverStartTime() - attempt1.getDriverFinishTime() >= 5000);
  assertTrue(ctx.getDriverStatus().getDriverStartTime() - attempt2.getDriverFinishTime() >= 10000);
 }
}

相关文章

微信公众号

最新文章

更多