deephaven / deephaven-plugins

Deephaven Plugins
11 stars 14 forks source link

Deephaven UI can blackscreen/crash the app when fixing a bad component #510

Closed mattrunyon closed 2 months ago

mattrunyon commented 4 months ago

Description

I was running some example code in a PR that was missing ui.use_state and just used use_state instead. The component panel rendered w/ the error view. I fixed the code and re-ran the component and it blackscreened the app.

Steps to reproduce

  1. Run this code that omits the ui. prefix for use_state
    
    from deephaven import ui
    @ui.component
    def my_comp():
    state, set_state = use_state(4)
    return state

c = my_comp()


2. Run this corrected code with the errored panel still open
```py
from deephaven import ui
@ui.component
def my_comp():
    state, set_state = ui.use_state(4)
    return state

c = my_comp()

Expected results

Panel with the content 4 opens.

Actual results

App blackscreens.

Additional details and attachments

This only seems to happen if the first time a panel/component was rendered it has an error rendering. If you run correct, errored, correct then it does not cause the blackscreen.

Error: Widget not found: Qvz7kWgfnT2yW8VLxIL2W
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:7530:17)
    at jd (react-dom.production.min.js:158:387)
    at G3 (react-dom.production.min.js:159:447)
    at Object.useState (react-dom.production.min.js:174:261)
    at zi.useState (react.production.min.js:23:281)
    at DashboardPlugin (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:7371:43)
    at Jae (react-dom.production.min.js:157:137)
    at LT (react-dom.production.min.js:180:154)
    at _ye (react-dom.production.min.js:269:343)
    at Eye (react-dom.production.min.js:250:347)
    at rYe (react-dom.production.min.js:250:278)
    at Nb (react-dom.production.min.js:250:138)
    at ZT (react-dom.production.min.js:243:163)
    at react-dom.production.min.js:123:115
    at e.unstable_runWithPriority (scheduler.production.min.js:18:343)
    at gv (react-dom.production.min.js:122:325)
    at Ybe (react-dom.production.min.js:123:61)
    at rp (react-dom.production.min.js:122:428)
    at om (react-dom.production.min.js:237:203)
    at roe (react-dom.production.min.js:170:408)
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:7526:7)
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:7345:39)
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:7198:15)
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5349:24)
    at callMethod (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5454:18)
    at noopMiddleware (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5486:10)
    at JSONRPCServer2.callMethod (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5466:51)
    at JSONRPCServer2.eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5415:31)
    at step (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5289:19)
    at Object.eval [as next] (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5236:14)
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5222:67)
    at new Promise (<anonymous>)
    at __awaiter$1 (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5204:10)
    at JSONRPCServer2.receiveSingle (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5405:14)
    at JSONRPCServer2.receive (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5378:21)
    at JSONRPCServerAndClient2.eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5682:38)
    at step (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5607:19)
    at Object.eval [as next] (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5554:14)
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5540:67)
    at new Promise (<anonymous>)
    at __awaiter (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5522:10)
    at JSONRPCServerAndClient2.receiveAndSend (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:5670:14)
    at receiveData (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:7233:32)
    at eval (eval at <anonymous> (loadRemoteModule.js:21:24), <anonymous>:7245:11)
    at Object.$lambda$3 (dh-core.js:8217:5)
    at Function.onInvoke_12 (dh-core.js:8935:16)
    at lambda (dh-core.js:174:22)
    at Array.forEach (<anonymous>)
    at Object.$fireEvent_0 (dh-core.js:8193:15)
    at Object.$lambda$6_5 (dh-core.js:28739:11)
    at Function.apply_170 (dh-core.js:28966:10)
    at lambda (dh-core.js:174:22)
    at dh-internal.js:1:792286
    at Array.forEach (<anonymous>)
    at dh-internal.js:1:792265
    at dh-internal.js:1:43529
    at Array.forEach (<anonymous>)
    at e.rawOnMessage (dh-internal.js:1:43491)
    at dh-internal.js:1:41304
    at Array.forEach (<anonymous>)
    at e.onTransportChunk (dh-internal.js:1:41179)
    at Object.$onMessage (dh-core.js:21090:35)
    at MultiplexedWebsocketTransport$3methodref$onMessage$Type.handleEvent_2 [as handleEvent] (dh-core.js:21234:10)

Versions

Engine Version: 0.35.0-SNAPSHOT Web UI Version: 0.79.0 Java Version: 21.0.3 Barrage Version: 0.6.0 Browser Name: Chrome 125 OS Name: Linux @deephaven/js-plugin-matplotlib: 0.4.1 @deephaven/js-plugin-ui: 0.14.0 @deephaven/js-plugin-plotly-express: 0.8.0

mofojed commented 2 months ago

Will need this fix to be in 0.15.x