本文整理了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
暂无
代码示例来源: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);
}
}
内容来源于网络,如有侵权,请联系作者删除!