Open devinrsmith opened 2 months ago
ExportUtil.getExport
seems dangerous if you race your execute with an incomplete RPC that exports something under a client-assigned ID. You could potentially block the RPC from completing, since command execution holds the exclusive lock, and thereby deadlock the update graph. I think getExport
would need to be careful to either use an update graph condition, or only resolve completed exports (throwing an error otherwise).
It could be useful to have the ability to reference exports from the script of
ConsoleService.ExecuteCommand
. This would allow a "hybrid execution" workflow where some table operations are exported viaTableService
and then referenced inConsoleService.ExecuteCommand
. This may be particularly useful for table operations that are not currently plumbed through RPCs:The alternative right now requires users to first bind their variable into the global scope via
BindTableToVariableRequest
(orPublishFromTicket
):The following may be a viable way of exposing this functionality to
ExecuteCommand
which would then allow access to
io.deephaven.server.session.SessionServiceGrpcImpl#SESSION_CONTEXT_KEY
. If this is deemed unacceptable for security reasons, a tighter implementation ofExportUtil.getExport
could be developed.Another possibility would be to update
ExecuteCommand
to take a tickets as input, and have some canonical way to reference them from the script: