Mutation observer for "onChange" event is re-enabled to early when loading large document
@frankwalter-1 ci sta già lavorando.
Dal 31/12/2024.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- typescript
- Ambito
- frontend
Direzione di ricerca
Inizia dal percorso asincrono di render() e dal ciclo di vita di MutationObserver, in particolare isMutationBelongsToElement(), e riproduci il problema con un documento di grandi dimensioni eseguendo il profiling in Chrome. Il lavoro è completato quando l’observer rimane inattivo fino al completamento del rendering, senza le chiamate ripetute e il carico della CPU descritti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When replacing the editor contents by calling "render()" the MutationObserver that detects changes should be deactivated and reactivated after the new content has been rendered. It seems the async render() method just uses a 2000ms timer, so when a document takes longer to render the MutationObserver is re-enabled too early and there are hundreds of calls to "isMutationBelongsToElement()" that bay continue multiple seconds and creating 100% cpu load.
Steps to reproduce:
- load a document using render()
- load another very lange document using render()
- look at the Chrome performance monitor or record a performance profile and look at the many calls.
Expected behavior:
when rendering a new document the Editor makes sure that the new content has been fully rendered before re-activating the MutationObserver.
Editor.js version:
2.30.6
Plugins you use with their versions:
not relevant
- Lingua principale
- TypeScript
- Stelle
- 32k
- Fork
- 2.2k
- Merge medio
- 2g 1h
- PR unite (30g)
- 1
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di codex-team/editor.js
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
codex-team/editor.js#3037 ·
-
Floating Promise Anti-Pattern & Premature Caret in Multi-Block PasteForse già presa @anshurajbisoyi98-ctrl l’ha presa 14 giorni fa. Apertabug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
codex-team/editor.js#3032 · 1 commento ·
-
Silent Data Loss & Broken Error Contract in Saver.save()Forse già presa @Sion612 l’ha presa 24 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
codex-team/editor.js#3030 ·
-
Complete Omission of block.destroy() in Blocks CollectionForse già presa @Minhal128 l’ha presa 23 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
codex-team/editor.js#3029 ·
-
Bug: Link cannot be removedForse già presa @prathmeshyelne l’ha presa 130 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
codex-team/editor.js#3005 · 1 commento ·
Tutte le issue di codex-team/editor.js
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
jbacalso24/mimry#459 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
architecture help wanted hive/claimed-by-architect origin/architect stage/030-pr-in-progress tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
kubestellar/console#24422 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area: backends type: docs
Difficoltà 1/5 1-3 ore Idoneità per principianti 83/100
schlessera/brain-kit#2383 ·
I maintainer di solito rispondono entro 1 giorno
-
agent duplicate providers tool triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno