Hi Andy, Thanks for the prompt response!
> Ideally sharing the source with me will be the fastest way to get it > resolved, but if that isn't possible perhaps we can narrow down the > problem: > - if you comment out the aspects (or pieces of them) does it still happen? > - anything unique about the file you are changing compared to others? > Is it affected by aspects, if so, what kind of advice/itds/declares. > Do you have inner classes? are they anonymous? To answer your questions: - I commented all of my aspects and removed the Spring aspects jars from aspect path, did a clean in Eclipse, and verified that the source class in question does not have any advised-by markers for all of its methods. This re-compilation behavior is still happening, and the event trace reports the same set of referenced files being recompiled. - The file in question is one of the commonly used "service" classes (ex: perform business logic) and the methods are advised by several aspects prior to commenting out the aspects. This behavior seems to happen for other commonly used "service" classes as well. This behavior does not seem to happen when I modify "bean" style classes (ex: basic object representation that contains mostly getters/setters). These "beans" are heavily referenced/imported throughout the code but its methods are mostly just getters/setters (and usually not advised by aspects). - The aspects I'm using are typical around advices that are scoped to either the project packages (using within) and/or to the presence of annotations, as well as the standard spring aspects (ex: transactions). There is also a before advice with similarly scoped pointcut. - There are some inner classes throughout the project, and a few anonymous ones. However, there are neither of those in the source file in question. Here's some additional information from AJDT event trace: AJDT version: 2.1.2.e36x-20110307-1000 for Eclipse 3.6 AspectJ Compiler version: 1.6.11.RC1 usingVisualiser=true usingXref=true usingCUprovider=true org.aspectj.ajdt.core.compiler.weaver.XNoInline = true ajde.version.at.previous.startup = @AJDEVERSION@ org.aspectj.ajdt.core.compiler.problem.suppressWarnings = enabled org.eclipse.ajdt.internal.ui.tracing.checked.filters = set: Compiler,Builder org.aspectj.ajdt.core.compiler.lint.adviceDidNotMatch = ignore 13:34:33 Build kind = AUTOBUILD 13:34:33 Project=<project>, kind of build requested=Incremental AspectJ compilation 13:34:33 Timer event: 0ms: Flush included source file cache 13:34:33 Timer event: 4ms: Check delta 13:34:33 File: <source file path> has changed. 13:34:33 build: Examined delta - 1 changed, 0 added, and 0 deleted source files in required project <project> 13:34:33 Timer event: 5ms: Looking for and marking configuration changes in <project> 13:34:33 Configuration changes found: true 13:34:33 Timer event: 5ms: Look for source/resource changes 13:34:33 Setting list of classpath elements with modified contents: 13:34:33 [] 13:34:33 Timer event: 13ms: Pre compile 13:34:33 Sending the following configuration changes to the compiler: [] 13:34:33 1 source file changes since last build 13:34:33 Compiler configuration for project <project> has been read by compiler. Resetting. 13:34:33 Configuration was [] 13:34:33 Resetting list of modified source files. Was [<source file>] 13:34:33 Preparing for build: planning to be an incremental build 13:34:33 Starting incremental compilation loop 1 of possibly 5 13:34:34 Timer event: 182ms: Time to first compiled message 13:34:34 Timer event: 258ms: Time to first woven message 13:34:34 Examining whether any other files now need compilation based on just compiling: '{<source file>}' ... determines "Need to recompile" all the referenced files ... 13:34:34 Starting incremental compilation loop 2 of possibly 5 13:34:35 Examining whether any other files now need compilation based on just compiling: '{recompiled files}' ... so on and so forth to loop 5 of 5 ... 13:34:47 AspectJ reports build successful, build was: INCREMENTAL 13:34:47 AJDE Callback: finish. Was full build: false 13:34:47 Timer event: 13840ms: Total time spent in AJDE 13:34:47 Timer event: 0ms: Refresh after build 13:34:47 Types affected during build = 216 13:34:47 Timer event: 13890ms: Total time spent in AJBuilder.build() 13:34:47 Timer event: 20ms: Delete markers: <project> 13:34:47 Timer event: 5ms: Update visualizer, xref, advice listeners for (separate thread): <project> 13:34:49 Timer event: 1913ms: Create markers: <project> 13:34:49 Created 1148 markers in 216 files I will go ahead and raise a bugzilla. Please let me know if there's any other information I can provide. Thanks so much, Jonathan On Thu, Apr 28, 2011 at 12:42 PM, Andy Clement <andrew.clem...@gmail.com> wrote: > Hi Jonathan, > >> Why is that? Why does it need to recompile all dependent source files >> when all I've changed is a whitespace or comment? Please note that I >> am not changing the aspects or pointcuts here at all. What am I >> missing? Has anyone else encountered this? > > If more than just the file you are changing gets compiled after making > a whitespace change that usually indicates a bug. We have fixed many > of these over the years but there are still some lurking and some > characteristic of your project/source is triggering the problem. > Please raise a bugzilla for it: > https://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ > > Ideally sharing the source with me will be the fastest way to get it > resolved, but if that isn't possible perhaps we can narrow down the > problem: > - if you comment out the aspects (or pieces of them) does it still happen? > - anything unique about the file you are changing compared to others? > Is it affected by aspects, if so, what kind of advice/itds/declares. > Do you have inner classes? are they anonymous? > > cheers > Andy > > On 28 April 2011 12:28, Jonathan Su <jonat...@cloudwords.com> wrote: >> Hi there, >> >> I'm currently using Eclipse 3.6.2 with AJDT 2.1.2 (which comes with >> AspectJ 1.6.11), with incremental compilation turned on. There are a >> couple of aspects advising the java sources as well as some third >> party aspects (primarily those from Spring). >> >> I'm noticing in AJDT event trace view that when I change and save some >> java source files (not the aspect source files), it first compiles the >> changed file, then it proceed to recompile all source files that >> import the changed file. Then it recompiles files that are dependent >> on the recompiled files, so on and so forth. For some other source >> files, It doesn't seem to do this as it only recompiles the saved >> file. >> >> AJDT event trace reports successful incremental build - it compiles >> the single changed file, then it hits "Examining whether any other >> files now need compilation based on just compiling: <changed file>" >> and proceed to report that it needs to recompile all the files that >> reference the changed file. It then does this for 4 more iterations. >> >> Why is that? Why does it need to recompile all dependent source files >> when all I've changed is a whitespace or comment? Please note that I >> am not changing the aspects or pointcuts here at all. What am I >> missing? Has anyone else encountered this? >> >> Because of this behavior, merely adding a whitespace or changing >> comment causes a wait time for build, which is a behavior not present >> with JDT projects. >> >> Thanks so much for your help. >> Jonathan >> _______________________________________________ >> aspectj-users mailing list >> aspectj-users@eclipse.org >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users