Multi Module Maven Project desyncs when running git pull.
- Dominant language
- Java
- Stars
- 3.1k
- Forks
- 935
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 17
Description
### Apache NetBeans version
Apache NetBeans 13
### What happened
I work on a multimodule project with Maven, with code generation(hibernate-jpamodelgen). In NetBeans 12.4, 12.5 and 13.0(always), when pulling from the remote repository, some files are desync. Some compilation errors are reported in the interface, however the project is built normally in the IDE. When deleting the NetBeans cache/index directory, on filesystem, the messages are no longer displayed.
### How to reproduce
Pull Git remote repository via IDE, into Maven Multimodule Project with code generation.
### Did this work correctly in an earlier version?
Apache NetBeans 12.3 or earlier
### Operating System
Windows
### JDK
Oracle JDK 1.8.301
### Apache NetBeans packaging
Apache NetBeans provided installer
### Anything else
When deleting the NetBeans cache/index directory, on filesystem, the messages are no longer displayed. StackTrace
```
java.lang.NullPointerException
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitIdent(Flow.java:2821)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2584)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:444)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1724)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.scanExpr(Flow.java:1981)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitApply(Flow.java:2688)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1797)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:444)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1724)
at com.sun.tools.javac.tree.TreeScanner.visitExec(TreeScanner.java:219)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1584)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:444)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1724)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitBlock(Flow.java:2257)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1091)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:444)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1724)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitMethodDef(Flow.java:2160)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:921)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:444)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1724)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitClassDef(Flow.java:2098)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:819)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:444)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1724)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2871)
at com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2853)
at com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:221)
at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1377)
at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1341)
at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:404)
at com.sun.tools.javac.api.JavacTaskImpl.generate(JavacTaskImpl.java:465)
at org.netbeans.modules.java.source.indexing.VanillaCompileWorker$2.run(VanillaCompileWorker.java:355)
at org.netbeans.modules.java.source.parsing.FileManagerTransaction.runConcurrent(FileManagerTransaction.java:180)
[catch] at org.netbeans.modules.java.source.indexing.VanillaCompileWorker.compile(VanillaCompileWorker.java:342)
at org.netbeans.modules.java.source.indexing.JavaCustomIndexer.index(JavaCustomIndexer.java:359)
at org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor$2.run(Indexable.java:138)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runIndexer(RepositoryUpdater.java:273)
at org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor.index(Indexable.java:136)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doIndex(RepositoryUpdater.java:2748)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.lambda$index$0(RepositoryUpdater.java:2625)
at org.netbeans.modules.parsing.impl.indexing.errors.TaskCache.refreshTransaction(TaskCache.java:540)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.index(RepositoryUpdater.java:2624)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.lambda$scanFiles$4(RepositoryUpdater.java:3344)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.lambda$runInContext$4(RepositoryUpdater.java:2118)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:279)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2116)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2097)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.access$1400(RepositoryUpdater.java:134)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.scanFiles(RepositoryUpdater.java:3302)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$FileListWork.getDone(RepositoryUpdater.java:3844)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:3464)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:6209)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.access$3400(RepositoryUpdater.java:5867)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.lambda$call$0(RepositoryUpdater.java:6128)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:279)
at org.netbeans.modules.parsing.impl.RunWhenScanFinishedSupport.performScan(RunWhenScanFinishedSupport.java:83)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6128)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6124)
at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:6124)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
```
### Are you willing to submit a pull request?
Yes
### Code of Conduct
Yes
Contributor guide
Research direction
Reproduce the issue by pulling a Git repository into a Maven multimodule project with code generation on NetBeans 13 and Windows. Start with VanillaCompileWorker, JavaCustomIndexer, and the RepositoryUpdater paths shown in the stack trace, then inspect the cache/index behavior. Done means a pull no longer leaves stale errors or desynchronized files, without requiring manual cache deletion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100