mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-02 06:35:28 +02:00
Bug 400073 - More robust clearing of results cache.
This commit is contained in:
parent
d144de5c1d
commit
63c70d737e
1 changed files with 7 additions and 2 deletions
|
@ -1006,6 +1006,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
|
||||||
private DependsOnOutdatedFileException parseFile(Object tu, AbstractLanguage lang,
|
private DependsOnOutdatedFileException parseFile(Object tu, AbstractLanguage lang,
|
||||||
IIndexFileLocation ifl, IScannerInfo scanInfo, FileContext ctx, IProgressMonitor pm)
|
IIndexFileLocation ifl, IScannerInfo scanInfo, FileContext ctx, IProgressMonitor pm)
|
||||||
throws CoreException, InterruptedException {
|
throws CoreException, InterruptedException {
|
||||||
|
boolean resultCacheCleared = false;
|
||||||
IPath path= getLabel(ifl);
|
IPath path= getLabel(ifl);
|
||||||
Throwable th= null;
|
Throwable th= null;
|
||||||
try {
|
try {
|
||||||
|
@ -1025,6 +1026,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
|
||||||
// to the index.
|
// to the index.
|
||||||
((ASTTranslationUnit) ast).setOriginatingTranslationUnit((ITranslationUnit) tu);
|
((ASTTranslationUnit) ast).setOriginatingTranslationUnit((ITranslationUnit) tu);
|
||||||
writeToIndex(lang.getLinkageID(), ast, codeReader, ctx, pm);
|
writeToIndex(lang.getLinkageID(), ast, codeReader, ctx, pm);
|
||||||
|
resultCacheCleared = true; // The cache was cleared while writing to the index.
|
||||||
}
|
}
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
th= e;
|
th= e;
|
||||||
|
@ -1044,8 +1046,11 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
|
||||||
}
|
}
|
||||||
if (th != null) {
|
if (th != null) {
|
||||||
swallowError(path, th);
|
swallowError(path, th);
|
||||||
// In case of a parsing error the result cache may not have been cleared.
|
}
|
||||||
// Clear if under a write lock to reduce interference with index readers.
|
|
||||||
|
if (!resultCacheCleared) {
|
||||||
|
// If the result cache has not been cleared, clear it under a write lock to reduce
|
||||||
|
// interference with index readers.
|
||||||
fIndex.acquireWriteLock();
|
fIndex.acquireWriteLock();
|
||||||
try {
|
try {
|
||||||
fIndex.clearResultCache();
|
fIndex.clearResultCache();
|
||||||
|
|
Loading…
Add table
Reference in a new issue