Skip to content

Commit 6d794ac

Browse files
committed
Make BuildSettingsLogger an instance member of BuildServerManager
Having `BuildSettingsLogger` can be problematic if we launch multple `SourceKitLSPServer` instances in the same process (such as during testing). In that case it could happen that a previous `SourceKitLSPServer` instance logs build settings and then the second instance doesn’t log its build settings (if they are the same) because the shared logger has already logged them. This issue is resolved by scoping `BuildSettingsLogger` to the lifetime of `BuildServerManager` (ie. one per workspace).
1 parent 10411dd commit 6d794ac

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

Sources/BuildServerIntegration/BuildServerManager.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ package actor BuildServerManager: QueueBasedMessageHandler {
341341
/// Build server delegate that will receive notifications about setting changes, etc.
342342
private weak var delegate: BuildServerManagerDelegate?
343343

344+
private let buildSettingsLogger = BuildSettingsLogger()
345+
344346
/// The list of toolchains that are available.
345347
///
346348
/// Used to determine which toolchain to use for a given document.
@@ -1033,7 +1035,7 @@ package actor BuildServerManager: QueueBasedMessageHandler {
10331035
settings = settings.patching(newFile: document, originalFile: mainFile)
10341036
}
10351037

1036-
await BuildSettingsLogger.shared.log(settings: settings, for: document)
1038+
await buildSettingsLogger.log(settings: settings, for: document)
10371039
return settings
10381040
}
10391041

Sources/BuildServerIntegration/BuildSettingsLogger.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ package import SKLogging
1717

1818
/// Shared logger that only logs build settings for a file once unless they change
1919
package actor BuildSettingsLogger {
20-
package static let shared = BuildSettingsLogger()
21-
2220
private var loggedSettings: [DocumentURI: FileBuildSettings] = [:]
2321

2422
package func log(level: LogLevel = .default, settings: FileBuildSettings, for uri: DocumentURI) {

0 commit comments

Comments
 (0)