Skip to content

fix(cdk/table): memory leak when no rows are sticky #30461

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 10, 2025

Conversation

crisbeto
Copy link
Member

@crisbeto crisbeto commented Feb 9, 2025

The table has some logic that queues up measurements of rows that will become sticky so that they can be measured once we set up the resize observer. Afterwards the queue is cleared once the measurements are done. #29814 introduced a memory leak where the tracking was happening even if the row isn't actually sticky which meant that the resize observer was never set up and the queue kept growing as new rows are rendered.

These changes resolve the leak by only queuing the measurement if it's necessary.

I've also fixed another potential leak where we were setting up the resize observer, but we weren't destroying it.

Fixes #30453.

The table has some logic that queues up measurements of rows that will become sticky so that they can be measured once we set up the resize observer. Afterwards the queue is cleared once the measurements are done. angular#29814 introduced a memory leak where the tracking was happening even if the row isn't actually sticky which meant that the resize observer was never set up and the queue kept growing as new rows are rendered.

These changes resolve the leak by only queuing the measurement if it's necessary.

I've also fixed another potential leak where we were setting up the resize observer, but we weren't destroying it.

Fixes angular#30453.
@crisbeto crisbeto added the target: patch This PR is targeted for the next patch release label Feb 9, 2025
@crisbeto crisbeto requested a review from a team as a code owner February 9, 2025 08:18
@crisbeto crisbeto requested review from andrewseguin and wagnermaciel and removed request for a team February 9, 2025 08:18
@crisbeto crisbeto removed the request for review from wagnermaciel February 10, 2025 20:19
@crisbeto crisbeto added the action: merge The PR is ready for merge by the caretaker label Feb 10, 2025
@crisbeto crisbeto merged commit bf94082 into angular:main Feb 10, 2025
23 of 25 checks passed
@crisbeto
Copy link
Member Author

The changes were merged into the following branches: main, 19.1.x

crisbeto added a commit that referenced this pull request Feb 10, 2025
The table has some logic that queues up measurements of rows that will become sticky so that they can be measured once we set up the resize observer. Afterwards the queue is cleared once the measurements are done. #29814 introduced a memory leak where the tracking was happening even if the row isn't actually sticky which meant that the resize observer was never set up and the queue kept growing as new rows are rendered.

These changes resolve the leak by only queuing the measurement if it's necessary.

I've also fixed another potential leak where we were setting up the resize observer, but we weren't destroying it.

Fixes #30453.

(cherry picked from commit bf94082)
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Mar 13, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
action: merge The PR is ready for merge by the caretaker area: cdk/table target: patch This PR is targeted for the next patch release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

bug(mat-table): memory leak in mat-table
2 participants