Skip to content

Commit ad53c29

Browse files
author
MikhailArkhipov
committed
Extend lock in invalidate
1 parent fd9445d commit ad53c29

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

src/Analysis/Ast/Impl/Analyzer/PythonAnalyzer.cs

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -119,28 +119,21 @@ public void RemoveAnalysis(IPythonModule module) {
119119

120120
public void EnqueueDocumentForAnalysis(IPythonModule module, ImmutableArray<IPythonModule> analysisDependencies) {
121121
var key = new AnalysisModuleKey(module);
122-
PythonAnalyzerEntry entry;
123-
int version;
124122
lock (_syncObj) {
125-
if (!_analysisEntries.TryGetValue(key, out entry)) {
123+
if (!_analysisEntries.TryGetValue(key, out var entry)) {
126124
return;
127125
}
128-
version = _version + 1;
129-
}
130-
131-
if (entry.Invalidate(analysisDependencies, version, out var dependencies)) {
132-
AnalyzeDocument(key, entry, dependencies);
126+
var version = _version + 1;
127+
if (entry.Invalidate(analysisDependencies, version, out var dependencies)) {
128+
AnalyzeDocument(key, entry, dependencies);
129+
}
133130
}
134131
}
135132

136133
public void EnqueueDocumentForAnalysis(IPythonModule module, PythonAst ast, int bufferVersion) {
137-
PythonAnalyzerEntry entry;
138-
AnalysisModuleKey key;
139-
int version;
140-
141134
lock (_syncObj) {
142-
entry = GetOrCreateAnalysisEntry(module, out key);
143-
version = _version + 1;
135+
var entry = GetOrCreateAnalysisEntry(module, out var key);
136+
var version = _version + 1;
144137
if (entry.BufferVersion >= bufferVersion) {
145138
return;
146139
}
@@ -152,10 +145,10 @@ public void EnqueueDocumentForAnalysis(IPythonModule module, PythonAst ast, int
152145
key = nonUserAsDocumentKey;
153146
entry = documentEntry;
154147
}
155-
}
156148

157-
if (entry.Invalidate(module, ast, bufferVersion, version, out var dependencies)) {
158-
AnalyzeDocument(key, entry, dependencies);
149+
if (entry.Invalidate(module, ast, bufferVersion, version, out var dependencies)) {
150+
AnalyzeDocument(key, entry, dependencies);
151+
}
159152
}
160153
}
161154

@@ -220,16 +213,13 @@ private void AnalyzeDocument(in AnalysisModuleKey key, in PythonAnalyzerEntry en
220213
_log?.Log(TraceEventType.Verbose, $"Analysis of {entry.Module.Name} ({entry.Module.ModuleType}) queued. Dependencies: {string.Join(", ", dependencies.Select(d => d.IsTypeshed ? $"{d.Name} (stub)" : d.Name))}");
221214

222215
var graphVersion = _dependencyResolver.ChangeValue(key, entry, entry.IsUserOrBuiltin || key.IsNonUserAsDocument, dependencies);
223-
224-
lock (_syncObj) {
225-
if (_version > graphVersion) {
226-
return;
227-
}
228-
229-
_version = graphVersion;
230-
_currentSession?.Cancel();
216+
if (_version > graphVersion) {
217+
return;
231218
}
232219

220+
_version = graphVersion;
221+
_currentSession?.Cancel();
222+
233223
if (TryCreateSession(graphVersion, entry, out var session)) {
234224
session.Start(true);
235225
}

0 commit comments

Comments
 (0)