public BadQueryHistory getProjectBadQueryHistory(String project) throws IOException { aclEvaluate.checkProjectOperationPermission(project); return getBadQueryHistoryManager().getBadQueriesForProject(project); }
public BadQueryHistory upsertEntryToProject(BadQueryEntry badQueryEntry, String project) throws IOException { if (StringUtils.isEmpty(project) || badQueryEntry.getAdj() == null || badQueryEntry.getSql() == null) throw new IllegalArgumentException(); BadQueryHistory badQueryHistory = getBadQueriesForProject(project); NavigableSet<BadQueryEntry> entries = badQueryHistory.getEntries(); entries.remove(badQueryEntry); // in case the entry already exists and this call means to update entries.add(badQueryEntry); int maxSize = kylinConfig.getBadQueryHistoryNum(); if (entries.size() > maxSize) { entries.pollFirst(); } getStore().checkAndPutResource(badQueryHistory.getResourcePath(), badQueryHistory, BAD_QUERY_INSTANCE_SERIALIZER); return badQueryHistory; }
@Test public void testDiagnosisService() throws IOException { BadQueryHistory history = BadQueryHistoryManager.getInstance(getTestConfig()) .getBadQueriesForProject("default"); List<BadQueryEntry> allEntries = new ArrayList<>(); allEntries.addAll(history.getEntries()); DiagnosisService diagnosisService = new DiagnosisService(); Object obj = diagnosisService.getQueries(0, 10, BadQueryEntry.ADJ_PUSHDOWN, allEntries).get("badQueries"); List<BadQueryEntry> pushDownList = (List<BadQueryEntry>) obj; Assert.assertEquals(1, pushDownList.size()); obj = diagnosisService.getQueries(0, 10, BadQueryEntry.ADJ_SLOW, allEntries).get("badQueries"); List<BadQueryEntry> slowList = (List<BadQueryEntry>) obj; Assert.assertEquals(2, slowList.size()); } }
private void requireProject(ProjectInstance projectInstance) throws IOException { addRequired(projectInstance.getResourcePath()); List<RealizationEntry> realizationEntries = projectInstance.getRealizationEntries(); for (RealizationEntry realizationEntry : realizationEntries) { retrieveResourcePath(getRealization(realizationEntry)); } List<DataModelDesc> modelDescs = metadataManager.getModels(projectInstance.getName()); for (DataModelDesc modelDesc : modelDescs) { addRequired(DataModelDesc.concatResourcePath(modelDesc.getName())); } addOptional(badQueryHistoryManager.getBadQueriesForProject(projectInstance.getName()).getResourcePath()); }
@Test public void testBasics() throws Exception { BadQueryHistory history = BadQueryHistoryManager.getInstance(getTestConfig()) .getBadQueriesForProject("default"); System.out.println(JsonUtil.writeValueAsIndentString(history)); NavigableSet<BadQueryEntry> entries = history.getEntries(); assertEquals(3, entries.size()); BadQueryEntry entry1 = entries.first(); assertEquals("Pushdown", entry1.getAdj()); assertEquals("sandbox.hortonworks.com", entry1.getServer()); assertEquals("select * from test_kylin_fact limit 10", entry1.getSql()); entries.pollFirst(); BadQueryEntry entry2 = entries.first(); assertTrue(entry2.getStartTime() > entry1.getStartTime()); }
public BadQueryHistory upsertEntryToProject(BadQueryEntry badQueryEntry, String project) throws IOException { if (StringUtils.isEmpty(project) || badQueryEntry.getAdj() == null || badQueryEntry.getSql() == null) throw new IllegalArgumentException(); BadQueryHistory badQueryHistory = getBadQueriesForProject(project); NavigableSet<BadQueryEntry> entries = badQueryHistory.getEntries(); entries.remove(badQueryEntry); // in case the entry already exists and this call means to update entries.add(badQueryEntry); int maxSize = kylinConfig.getBadQueryHistoryNum(); if (entries.size() > maxSize) { entries.pollFirst(); } getStore().checkAndPutResource(badQueryHistory.getResourcePath(), badQueryHistory, BAD_QUERY_INSTANCE_SERIALIZER); return badQueryHistory; }
private void requireProject(ProjectInstance projectInstance) throws IOException { addRequired(projectInstance.getResourcePath()); List<RealizationEntry> realizationEntries = projectInstance.getRealizationEntries(); for (RealizationEntry realizationEntry : realizationEntries) { retrieveResourcePath(getRealization(realizationEntry)); } List<DataModelDesc> modelDescs = metadataManager.getModels(projectInstance.getName()); for (DataModelDesc modelDesc : modelDescs) { addRequired(DataModelDesc.concatResourcePath(modelDesc.getName())); } addOptional(badQueryHistoryManager.getBadQueriesForProject(projectInstance.getName()).getResourcePath()); }