Skip to content
This repository has been archived by the owner on Feb 3, 2024. It is now read-only.

Commit

Permalink
Merge pull request #114 from zzzz465/fix/memory-leak
Browse files Browse the repository at this point in the history
fix: memory leak
  • Loading branch information
zzzz465 authored Apr 10, 2022
2 parents cac5c6e + b313ba6 commit 3efb7e6
Show file tree
Hide file tree
Showing 27 changed files with 31 additions and 26 deletions.
2 changes: 1 addition & 1 deletion language-server/src/clientFileEventListener.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export class ClientFileEventListener {
private readonly fileStore: FileStore,
@tsyringe.inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

connection.onNotification(ProjectFileAdded, ({ uri }) => this.onFileAdded(uri))
connection.onNotification(ProjectFileChanged, ({ uri }) => this.onFileChanged(uri))
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/defManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class DefManager {
baseLogger: winston.Logger,
public readonly version?: RimWorldVersion
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

const defType = typeInfoMap.getTypeInfoByName('Def')
if (!defType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export class DefListRequestHandler implements Provider {
private readonly projectHelper: ProjectHelper,
@tsyringe.inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

init(connection: Connection): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export class ParsedTypeInfoRequestHandler implements Provider {
private readonly projectHelper: ProjectHelper,
@tsyringe.inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

init(connection: Connection): void {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/decorate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export class DecoProvider implements Provider {
private readonly defProvider: Definition,
@tsyringe.inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

init(connection: Connection): void {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/diagnostics/duplicatedNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export class DuplicatedNode implements DiagnosticsContributor {
private readonly log: winston.Logger

constructor(private readonly rangeConverter: RangeConverter, @tsyringe.inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

getDiagnostics(project: Project, document: Document): { uri: string; diagnostics: ls.Diagnostic[] } {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/diagnostics/primitive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export class PrimitiveValue implements DiagnosticsContributor {
private readonly log: winston.Logger

constructor(private readonly rangeConverter: RangeConverter, @tsyringe.inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

getDiagnostics(_: Project, document: Document): { uri: string; diagnostics: ls.Diagnostic[] } {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/diagnostics/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export class DiagnosticsProvider implements Provider {
@tsyringe.injectAll(DiagnosticsContributor.token) private readonly contributors: DiagnosticsContributor[],
@tsyringe.inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

projectManager.events.on('onProjectInitialized', this.onProjectInitialized.bind(this))
configuration.events.on('onConfigurationChanged', this.onConfigurationChanged.bind(this))
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/diagnostics/reference.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export class Reference implements DiagnosticsContributor {
private readonly definition: Definition,
@tsyringe.inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

getDiagnostics(project: Project, document: DocumentWithNodeMap): { uri: string; diagnostics: ls.Diagnostic[] } {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/hover/def.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export class DefHoverProvider {
private readonly log: winston.Logger

constructor(@tsyringe.inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

onDefHover(node: Def, offset: number): ls.Hover | null {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/hover/hover.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export class HoverProvider implements Provider {
private readonly projectHelper: ProjectHelper,
@inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

protected getLogger(): winston.Logger {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/features/hover/tag.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export class TagHoverProvider {
private readonly log: winston.Logger

constructor(@tsyringe.inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

onTagHover(node: Injectable, offset: number): ls.Hover | null {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/fileStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export class FileStore {
private readonly referenceCounter: DefaultDictionary<string, number> = new DefaultDictionary(() => 0)

constructor(@inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

get(uri: string) {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/fs/reader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export class TextReader {
@inject(ConnectionToken) private readonly connection: Connection,
@inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

async read(file: File): Promise<string> {
Expand Down
1 change: 1 addition & 0 deletions language-server/src/log.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export const LogToken = Symbol('LogToken')

export function initializeLogger(level: string) {
const log = winston.createLogger({
// transports: [],
transports: [new winston.transports.Console({ level })],
format: winston.format.printf((info) => `[${info.level}] ${info.message}`),
})
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/mod/about.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export class About {
}

constructor(@inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

updateAboutXML(text: string) {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/mod/aboutMetadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export class AboutMetadata {
@tsyringe.inject(tsyringe.delay(() => About)) private readonly about: About,
private readonly fileStore: FileStore
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

about.event.on('aboutChanged', (about) => this.onAboutChanged(about))
notiEventManager.preEvent.on('fileAdded', (file) => this.onFileChanged(file))
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/mod/loadfolders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export class LoadFolder {
notiEventManager: NotificationEventManager,
private readonly about: About
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

about.event.on('aboutChanged', (about) => this.onAboutChanged(about))
notiEventManager.preEvent.on('fileAdded', (file) => this.onFileChanged(file))
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/mod/modDependencyBags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ export class ModDependencyBags {
@tsyringe.inject(ConnectionToken) private readonly connection: Connection,
@tsyringe.inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

about.event.on('aboutChanged', this.onAboutChanged.bind(this))
aboutMetadata.event.on('aboutMetadataChanged', this.onAboutMetadataChanged.bind(this))
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/notificationEventManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class NotificationEventManager {
readonly postEvent = new EventEmitter() as TypedEventEmitter<NotificationEvents>

constructor(@tsyringe.inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

listen(event: TypedEventEmitter<NotificationEvents>): void {
Expand Down
6 changes: 5 additions & 1 deletion language-server/src/project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export class Project {
private readonly typeInfoMapProvider: TypeInfoMapProvider,
@inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

this.defManager = new DefManager(new DefDatabase(), new NameDatabase(), new TypeInfoMap(), this.log, this.version)

Expand Down Expand Up @@ -128,6 +128,10 @@ export class Project {
}

cancelTokenSource.dispose()
if (global.gc) {
this.log.debug('trigger gc (project reloaded)')
global.gc()
}
this.isReloading = false
}, this.reloadDebounceTimeout)

Expand Down
2 changes: 1 addition & 1 deletion language-server/src/projectManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export class ProjectManager {
public readonly events = new EventEmitter() as TypedEventEmitter<Events>

constructor(about: About, @inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
about.event.on('aboutChanged', this.onAboutChanged.bind(this))
}

Expand Down
2 changes: 1 addition & 1 deletion language-server/src/resourceStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export class ResourceStore {
private readonly modDependencyBags: ModDependencyBags,
@inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

modDependencyBags.event.on('dependencyChanged', () => this.onDependencyChanged())
loadFolder.event.on('loadFolderChanged', (loadFolder) => this.onLoadFolderChanged(loadFolder))
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/textDocumentManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export class TextDocumentManager {
private documents: Map<string, TextDocument> = new Map()

constructor(@inject(LogToken) baseLogger: winston.Logger) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

listen(events: TypedEventEmitter<NotificationEvents>) {
Expand Down
2 changes: 1 addition & 1 deletion language-server/src/textDocumentsAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export class TextDocumentsAdapter {
@inject(ConnectionToken) private readonly connection: Connection,
@inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })

this.textDocuments.listen(connection)

Expand Down
2 changes: 1 addition & 1 deletion language-server/src/typeInfoMapProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export class TypeInfoMapProvider {
@inject(delay(() => Project)) private readonly project: Project,
@inject(LogToken) baseLogger: winston.Logger
) {
this.log = winston.createLogger({ transports: baseLogger.transports, format: this.logFormat })
this.log = baseLogger.child({ format: this.logFormat })
}

async get(requestId: string = uuid()): Promise<[TypeInfoMap, Error?]> {
Expand Down
2 changes: 1 addition & 1 deletion vsc-extension/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ async function createServer() {
module,
transport: TransportKind.ipc,
options: {
execArgv: ['--nolazy', '--inspect=6009', '--expose-gc'],
execArgv: ['--nolazy', '--inspect=6009', '--expose-gc', '--max-old-space-size=8192'],
},
},
}
Expand Down

0 comments on commit 3efb7e6

Please sign in to comment.