private static boolean isBlockedWaitingForMemory(BasicQueryInfo info) { BasicQueryStats stats = info.getQueryStats(); boolean isWaitingForMemory = stats.getBlockedReasons().contains(WAITING_FOR_MEMORY); if (!isWaitingForMemory) { return false; } // queries are not marked as fully blocked if there are no running drivers return stats.isFullyBlocked() || stats.getRunningDrivers() == 0; }
private static void logQueryTimeline(BasicQueryInfo queryInfo) { DateTime queryStartTime = queryInfo.getQueryStats().getCreateTime(); DateTime queryEndTime = queryInfo.getQueryStats().getEndTime(); // query didn't finish cleanly if (queryStartTime == null || queryEndTime == null) { return; } long elapsed = max(queryEndTime.getMillis() - queryStartTime.getMillis(), 0); logQueryTimeline( queryInfo.getQueryId(), queryInfo.getSession().getTransactionId().map(TransactionId::toString).orElse(""), elapsed, elapsed, 0, 0, 0, queryStartTime, queryEndTime); }
public static QueryProgressStats createQueryProgressStats(BasicQueryStats queryStats) { return new QueryProgressStats( queryStats.getElapsedTime().toMillis(), queryStats.getQueuedTime().toMillis(), queryStats.getTotalCpuTime().toMillis(), queryStats.getTotalScheduledTime().toMillis(), queryStats.getUserMemoryReservation().toBytes(), queryStats.getPeakUserMemoryReservation().toBytes(), queryStats.getRawInputPositions(), queryStats.getRawInputDataSize().toBytes(), queryStats.isFullyBlocked(), queryStats.getProgressPercentage()); }
assertEquals(basicInfo.getQuery(), "SELECT 4"); assertEquals(basicInfo.getQueryStats().getCreateTime(), DateTime.parse("1991-09-06T05:00-05:30")); assertEquals(basicInfo.getQueryStats().getEndTime(), DateTime.parse("1991-09-06T06:00-05:30")); assertEquals(basicInfo.getQueryStats().getElapsedTime(), Duration.valueOf("8m")); assertEquals(basicInfo.getQueryStats().getExecutionTime(), Duration.valueOf("44m")); assertEquals(basicInfo.getQueryStats().getTotalDrivers(), 16); assertEquals(basicInfo.getQueryStats().getQueuedDrivers(), 17); assertEquals(basicInfo.getQueryStats().getRunningDrivers(), 18); assertEquals(basicInfo.getQueryStats().getCompletedDrivers(), 19); assertEquals(basicInfo.getQueryStats().getCumulativeUserMemory(), 20.0); assertEquals(basicInfo.getQueryStats().getUserMemoryReservation(), DataSize.valueOf("21GB")); assertEquals(basicInfo.getQueryStats().getPeakUserMemoryReservation(), DataSize.valueOf("23GB")); assertEquals(basicInfo.getQueryStats().getTotalCpuTime(), Duration.valueOf("24m")); assertEquals(basicInfo.getQueryStats().isFullyBlocked(), true); assertEquals(basicInfo.getQueryStats().getBlockedReasons(), ImmutableSet.of(BlockedReason.WAITING_FOR_MEMORY)); assertEquals(basicInfo.getQueryStats().getProgressPercentage(), OptionalDouble.of(100));
if (query.getQueryStats().isFullyBlocked()) { blockedQueries++; totalInputBytes += query.getQueryStats().getRawInputDataSize().toBytes(); totalInputRows += query.getQueryStats().getRawInputPositions(); totalCpuTimeSecs += query.getQueryStats().getTotalCpuTime().getValue(SECONDS); memoryReservation += query.getQueryStats().getUserMemoryReservation().toBytes(); runningDrivers += query.getQueryStats().getRunningDrivers();
public BasicQueryInfo(QueryInfo queryInfo) { this(queryInfo.getQueryId(), queryInfo.getSession(), queryInfo.getResourceGroupId(), queryInfo.getState(), queryInfo.getMemoryPool(), queryInfo.isScheduled(), queryInfo.getSelf(), queryInfo.getQuery(), new BasicQueryStats(queryInfo.getQueryStats()), queryInfo.getErrorType(), queryInfo.getErrorCode()); }
public void queryCreatedEvent(BasicQueryInfo queryInfo) { eventListenerManager.queryCreated( new QueryCreatedEvent( queryInfo.getQueryStats().getCreateTime().toDate().toInstant(), createQueryContext(queryInfo.getSession(), queryInfo.getResourceGroupId()), new QueryMetadata( queryInfo.getQueryId().toString(), queryInfo.getSession().getTransactionId().map(TransactionId::toString), queryInfo.getQuery(), QUEUED.toString(), queryInfo.getSelf(), Optional.empty(), Optional.empty()))); }
private static boolean isLeaked(Map<QueryId, BasicQueryInfo> queryIdToInfo, QueryId queryId) { BasicQueryInfo queryInfo = queryIdToInfo.get(queryId); if (queryInfo == null) { return true; } DateTime queryEndTime = queryInfo.getQueryStats().getEndTime(); if (queryInfo.getState() == RUNNING || queryEndTime == null) { return false; } return secondsBetween(queryEndTime, now()).getSeconds() >= DEFAULT_LEAK_CLAIM_DELTA_SEC; }
assertEquals(basicInfo.getQuery(), "SELECT 4"); assertEquals(basicInfo.getQueryStats().getCreateTime(), DateTime.parse("1991-09-06T05:00-05:30")); assertEquals(basicInfo.getQueryStats().getEndTime(), DateTime.parse("1991-09-06T06:00-05:30")); assertEquals(basicInfo.getQueryStats().getElapsedTime(), Duration.valueOf("8m")); assertEquals(basicInfo.getQueryStats().getExecutionTime(), Duration.valueOf("44m")); assertEquals(basicInfo.getQueryStats().getTotalDrivers(), 16); assertEquals(basicInfo.getQueryStats().getQueuedDrivers(), 17); assertEquals(basicInfo.getQueryStats().getRunningDrivers(), 18); assertEquals(basicInfo.getQueryStats().getCompletedDrivers(), 19); assertEquals(basicInfo.getQueryStats().getCumulativeUserMemory(), 20.0); assertEquals(basicInfo.getQueryStats().getUserMemoryReservation(), DataSize.valueOf("21GB")); assertEquals(basicInfo.getQueryStats().getPeakUserMemoryReservation(), DataSize.valueOf("23GB")); assertEquals(basicInfo.getQueryStats().getTotalCpuTime(), Duration.valueOf("24m")); assertEquals(basicInfo.getQueryStats().isFullyBlocked(), true); assertEquals(basicInfo.getQueryStats().getBlockedReasons(), ImmutableSet.of(BlockedReason.WAITING_FOR_MEMORY)); assertEquals(basicInfo.getQueryStats().getProgressPercentage(), OptionalDouble.of(100));
if (query.getQueryStats().isFullyBlocked()) { blockedQueries++; totalInputBytes += query.getQueryStats().getRawInputDataSize().toBytes(); totalInputRows += query.getQueryStats().getRawInputPositions(); totalCpuTimeSecs += query.getQueryStats().getTotalCpuTime().getValue(SECONDS); memoryReservation += query.getQueryStats().getUserMemoryReservation().toBytes(); runningDrivers += query.getQueryStats().getRunningDrivers();
public BasicQueryInfo(QueryInfo queryInfo) { this(queryInfo.getQueryId(), queryInfo.getSession(), queryInfo.getResourceGroupId(), queryInfo.getState(), queryInfo.getMemoryPool(), queryInfo.isScheduled(), queryInfo.getSelf(), queryInfo.getQuery(), new BasicQueryStats(queryInfo.getQueryStats()), queryInfo.getErrorType(), queryInfo.getErrorCode()); }
public void queryCreatedEvent(BasicQueryInfo queryInfo) { eventListenerManager.queryCreated( new QueryCreatedEvent( queryInfo.getQueryStats().getCreateTime().toDate().toInstant(), createQueryContext(queryInfo.getSession(), queryInfo.getResourceGroupId()), new QueryMetadata( queryInfo.getQueryId().toString(), queryInfo.getSession().getTransactionId().map(TransactionId::toString), queryInfo.getQuery(), QUEUED.toString(), queryInfo.getSelf(), Optional.empty(), Optional.empty()))); }
private static boolean isLeaked(Map<QueryId, BasicQueryInfo> queryIdToInfo, QueryId queryId) { BasicQueryInfo queryInfo = queryIdToInfo.get(queryId); if (queryInfo == null) { return true; } DateTime queryEndTime = queryInfo.getQueryStats().getEndTime(); if (queryInfo.getState() == RUNNING || queryEndTime == null) { return false; } return secondsBetween(queryEndTime, now()).getSeconds() >= DEFAULT_LEAK_CLAIM_DELTA_SEC; }
public static QueryProgressStats createQueryProgressStats(BasicQueryStats queryStats) { return new QueryProgressStats( queryStats.getElapsedTime().toMillis(), queryStats.getQueuedTime().toMillis(), queryStats.getTotalCpuTime().toMillis(), queryStats.getTotalScheduledTime().toMillis(), queryStats.getUserMemoryReservation().toBytes(), queryStats.getPeakUserMemoryReservation().toBytes(), queryStats.getRawInputPositions(), queryStats.getRawInputDataSize().toBytes(), queryStats.isFullyBlocked(), queryStats.getProgressPercentage()); }
private static void logQueryTimeline(BasicQueryInfo queryInfo) { DateTime queryStartTime = queryInfo.getQueryStats().getCreateTime(); DateTime queryEndTime = queryInfo.getQueryStats().getEndTime(); // query didn't finish cleanly if (queryStartTime == null || queryEndTime == null) { return; } long elapsed = max(queryEndTime.getMillis() - queryStartTime.getMillis(), 0); logQueryTimeline( queryInfo.getQueryId(), queryInfo.getSession().getTransactionId().map(TransactionId::toString).orElse(""), elapsed, elapsed, 0, 0, 0, queryStartTime, queryEndTime); }
URI.create("1"), "", new BasicQueryStats( DateTime.parse("1991-09-06T05:00-05:30"), DateTime.parse("1991-09-06T05:01-05:30"),
private static QueryStateInfo createQueryStateInfo( BasicQueryInfo queryInfo, Optional<ResourceGroupId> groupId, Optional<List<ResourceGroupInfo>> pathToRoot, Optional<QueryProgressStats> progress) { return new QueryStateInfo( queryInfo.getQueryId(), queryInfo.getState(), groupId, queryInfo.getQuery(), queryInfo.getQueryStats().getCreateTime(), queryInfo.getSession().getUser(), queryInfo.getSession().getSource(), queryInfo.getSession().getClientInfo(), queryInfo.getSession().getCatalog(), queryInfo.getSession().getSchema(), pathToRoot, progress); }
createQueryFailureInfo(failure, Optional.empty()), ImmutableList.of(), ofEpochMilli(queryInfo.getQueryStats().getCreateTime().getMillis()), ofEpochMilli(queryInfo.getQueryStats().getCreateTime().getMillis()), ofEpochMilli(queryInfo.getQueryStats().getEndTime().getMillis())));
BasicQueryStats queryStats = new BasicQueryStats( queryStateTimer.getCreateTime(), getEndTime().orElse(null),
private static QueryStateInfo createQueryStateInfo( BasicQueryInfo queryInfo, Optional<ResourceGroupId> groupId, Optional<List<ResourceGroupInfo>> pathToRoot, Optional<QueryProgressStats> progress) { return new QueryStateInfo( queryInfo.getQueryId(), queryInfo.getState(), groupId, queryInfo.getQuery(), queryInfo.getQueryStats().getCreateTime(), queryInfo.getSession().getUser(), queryInfo.getSession().getSource(), queryInfo.getSession().getClientInfo(), queryInfo.getSession().getCatalog(), queryInfo.getSession().getSchema(), pathToRoot, progress); }