-
Notifications
You must be signed in to change notification settings - Fork 441
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
Livebook hangs when handling large source smart cells #2916
Comments
@fahchen what code is the smart cell supposed to generate? Looking at the source I see the generate code does |
@jonatanklosko Thanks for your reply.
The smart cell consists of two parts: Here is what the currently generated code looks like: excalidraw =
KinoExcalidraw.SmartCell.new(
data: json_string,
options: options_map
) The
Earlier, I noticed that Livebook was rendering the Excalidraw canvas twice, so I implemented |
The smart cell state returned by The main idea for smart cells is to generate code, but here you effectively want a I think we could change the diff, such that for large payloads it does a replace instead of computing diff (which is a tradeoff, we do less work, but may end up sending more data around and over the wire). That said, including extremely strings in code cells is not necessarily a good idea in the first place, it would make more sense to use files. For your use case, people could export the .excalidraw file, add it to notebooks file attachments (in the sidebar) and use |
Hey guys, thank you for the amazing work you’re doing here. I really appreciate it!
I recently created a kino smart cell that allows to draw excalidraw graphs in the Livebook. You can check it out at https://github.com/fahchen/kino_excalidraw. However, I’ve run into an issue where the Livebook sometimes hangs. After some investigation, I found that
Livebook.Text.Delta.diff/2
takes a significant amount of time to compute, especially as increasing as the source of the smart cell grows larger. Actually, I embed the excalidraw file which is in JSON format, into the notebook. Here’s the relevant part of the code:livebook/lib/livebook/session.ex
Line 1792 in d3161c6
I’d like to ask for your help with following:
excalidraw
into the livebook notebook?Kino.nothing()
as the source.livebook-diff-issue.md (GitHub doesn’t allow uploading .livemd files, so I changed it to .md.)
Here’s an example livebook note that embeds an excalidraw graph, alternatively you can find an example from the kino_excaildraw document(https://hexdocs.pm/kino_excalidraw/components.html).
To reproduce this issue, you can open the example notebook from the above, draw a complex graph, and then Livebook will hang.
Thanks in advance for any help or suggestions.
The text was updated successfully, but these errors were encountered: