Skip to content

Progress.tokens accumulates entries forever #607

@meymchen

Description

@meymchen

Component

pygls/progress.py

Summary

Progress.begin and Progress.create register tokens in a dictionary, but Progress.end never removes them. A long-running server that reports frequent progress will leak Future objects and token entries without bound.

Steps to Reproduce

  1. Report work-done progress repeatedly over hours.
  2. Observe that len(lsp.protocol.progress.tokens) grows monotonically.

Expected Behavior

Tokens should be cleaned up when progress ends.

Actual Behavior

Tokens remain in memory forever.

Affected Code (pygls/progress.py, ~L77-79)

def end(self, token, value):
    self._lsp.notify(PROGRESS, ProgressParams(token=token, value=value))

Proposed Fix

def end(self, token, value):
    self.tokens.pop(token, None)
    self._lsp.notify(PROGRESS, ProgressParams(token=token, value=value))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions