Skip to content
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

Rewrite rendering algorithm+ improve performance + fix memory leaks #581

Merged
merged 14 commits into from
Sep 26, 2020

Conversation

aminya
Copy link
Collaborator

@aminya aminya commented Aug 1, 2020

Description of the change

By merging steelbrain/linter#1706 the removal now works correctly. However, that reveals some bugs in the linter-ui code which is supposed to be fixed in this pull request. The previous logic of the linter mostly rerendered all the messages from scratch. But now some are needed to be removed and that is why these bugs got revealed.

In this PR, the rendering algorithm is rewritten so only the "added" messages are rendered from scratch, and the "removed" messages are removed. It does not render all the messages every time. This greatly improves performance.

Several memory leaks were fixed in this PR.

should be merged with steelbrain/linter#1706

@aminya aminya changed the title Fixing clean up of the removed linter messages Clean up the remainder of removed linter messages Aug 1, 2020
@aminya aminya force-pushed the fixRemoval branch 5 times, most recently from 43ad0e8 to be2d5ed Compare August 2, 2020 03:31
@aminya aminya force-pushed the fixRemoval branch 8 times, most recently from 4abdbd5 to 1206a55 Compare September 20, 2020 10:36
@aminya
Copy link
Collaborator Author

aminya commented Sep 21, 2020

Haha! Found the reason! JavaScript cannot delete/add messages objects from this.messages! Even though we call, this.messages.delete(message), it cannot find the message we are asking it to delete. Because of that this.messages keeps growing!!

We should use message.key to delete things manually instead of using a Set.

@aminya aminya force-pushed the fixRemoval branch 3 times, most recently from f990669 to 3a2eee0 Compare September 22, 2020 01:51
JavaScript has problems comparing different complex object. In contrast,
using a simple string as the key removes this problem

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
JavaScript cannot delete/add messages objects from `this.messages`! Even 
though we call, `this.messages.delete(message)`, it cannot find the 
message we are asking it to delete. Because of that `this.messages` 
keeps growing!!

We should use `message.key` to delete things instead of using a `Set`.
Because we use Map for this.markers and this.messages, we need to update this code which had remained untouched!
@aminya

This comment has been minimized.

@aminya aminya marked this pull request as ready for review September 25, 2020 09:17
@aminya aminya force-pushed the fixRemoval branch 2 times, most recently from 2027e95 to d5778ae Compare September 25, 2020 09:21
@aminya
Copy link
Collaborator Author

aminya commented Sep 25, 2020

I am happy to announce that this PR and linter PR are ready! 😃

@aminya aminya changed the title Clean up the remainder of removed linter messages Rewrite rendering algorithm+ improve performance + fix memory leaks Sep 26, 2020
@aminya aminya merged commit 3162586 into steelbrain:master Sep 26, 2020
@aminya aminya linked an issue Sep 30, 2020 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Uncaught TypeError: range.intersectsWith is not a function
1 participant