added more detailed timing log output for reconciling operations

This commit is contained in:
Martin Lippert
2022-12-29 12:36:26 +01:00
parent f17a3b0a0b
commit b753e45e9f
2 changed files with 31 additions and 7 deletions

View File

@@ -24,6 +24,8 @@ import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.MarkerAnnotation;
import org.eclipse.jdt.core.dom.NormalAnnotation;
import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.boot.java.handlers.SpelExpressionReconciler;
import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache;
import org.springframework.ide.vscode.boot.java.value.Constants;
@@ -34,6 +36,9 @@ import org.springframework.ide.vscode.commons.util.text.IDocument;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
public class JdtReconciler implements JavaReconciler {
private static final Logger log = LoggerFactory.getLogger(JdtReconciler.class);
// annotations with SpEL expression params
public static final String SPRING_CACHEABLE = "org.springframework.cache.annotation.Cacheable";
public static final String SPRING_CACHE_EVICT = "org.springframework.cache.annotation.CacheEvict";
@@ -89,6 +94,10 @@ public class JdtReconciler implements JavaReconciler {
@Override
public void reconcile(IJavaProject project, final IDocument doc, final IProblemCollector problemCollector) {
log.info("reconciling (JDT): " + project.getElementName() + " - " + doc.getUri());
long start = System.currentTimeMillis();
URI uri = URI.create(doc.getUri());
compilationUnitCache.withCompilationUnit(project, uri, cu -> {
if (cu != null) {
@@ -96,6 +105,9 @@ public class JdtReconciler implements JavaReconciler {
}
return null;
});
long end = System.currentTimeMillis();
log.info("reconciling (JDT): " + project.getElementName() + " done in " + (end - start) + "ms");
}
private void reconcileAST(IJavaProject project, IDocument doc, CompilationUnit cu, IProblemCollector problemCollector) {
@@ -147,7 +159,8 @@ public class JdtReconciler implements JavaReconciler {
@Override
public Map<IDocument, Collection<ReconcileProblem>> reconcile(IJavaProject project, List<TextDocument> docs,
Function<TextDocument, IProblemCollector> problemCollectorFactory) {
// TODO Auto-generated method stub
log.info("reconciling (JDT, multiple docs): " + project.getElementName() + " - " + docs.size());
return Collections.emptyMap();
}

View File

@@ -61,11 +61,8 @@ public class RewriteReconciler implements JavaReconciler {
private static final Logger log = LoggerFactory.getLogger(RewriteReconciler.class);
private RewriteCompilationUnitCache cuCache;
private QuickfixRegistry quickfixRegistry;
private RewriteRecipeRepository recipeRepo;
private BootJavaConfig config;
public RewriteReconciler(RewriteRecipeRepository recipeRepo, RewriteCompilationUnitCache cuCache, QuickfixRegistry quickfixRegistry, BootJavaConfig config) {
@@ -77,10 +74,14 @@ public class RewriteReconciler implements JavaReconciler {
@Override
public void reconcile(IJavaProject project, IDocument doc, IProblemCollector problemCollector) {
if (!config.isRewriteReconcileEnabled()) {
return;
}
log.info("reconciling (OpenRewrite): " + project.getElementName() + " - " + doc.getUri());
long start = System.currentTimeMillis();
try {
problemCollector.beginCollecting();
@@ -100,7 +101,10 @@ public class RewriteReconciler implements JavaReconciler {
}
} finally {
problemCollector.endCollecting();
}
}
long end = System.currentTimeMillis();
log.info("reconciling (OpenRewrite): " + project.getElementName() + " done in " + (end - start) + "ms");
}
private List<ReconcileProblem> createProblems(IDocument doc, FixAssistMarker m, J astNode) {
@@ -138,7 +142,10 @@ public class RewriteReconciler implements JavaReconciler {
@Override
public Map<IDocument, Collection<ReconcileProblem>> reconcile(IJavaProject project, List<TextDocument> docs,
Function<TextDocument, IProblemCollector> problemCollectorFactory) {
log.info("Validating project " + project.getElementName());
log.info("reconciling (OpenRewrite, multiple docs): " + project.getElementName() + " - " + docs.size());
long start = System.currentTimeMillis();
Map<IDocument, Collection<ReconcileProblem>> allProblems = new HashMap<>();
List<Path> testSourceFolders = IClasspathUtil.getProjectTestJavaSources(project.getClasspath()).map(f -> f.toPath()).collect(Collectors.toList());
List<TextDocument> testSources = new ArrayList<>(docs.size());
@@ -156,6 +163,10 @@ public class RewriteReconciler implements JavaReconciler {
allProblems.putAll(doReconcile(project, mainSources, problemCollectorFactory, javaParser));
javaParser.setSourceSet(MavenProjectParser.TEST);
allProblems.putAll(doReconcile(project, testSources, problemCollectorFactory, javaParser));
long end = System.currentTimeMillis();
log.info("reconciling (OpenRewrite, multiple docs): " + project.getElementName() + " - " + docs.size() + " done in " + (end - start) + "ms");
return allProblems;
}
@@ -241,7 +252,7 @@ public class RewriteReconciler implements JavaReconciler {
if (!descriptors.isEmpty()) {
for (int i = 0; i < docs.size(); i+=BATCH) {
for (int i = 0; i < docs.size(); i += BATCH) {
List<TextDocument> batchList = docs.subList(i, Math.min(i + BATCH, docs.size()));
List<CompilationUnit> cus = ORAstUtils.parseInputs(javaParser,