microsoft / DurableFunctionsMonitor

A monitoring/debugging UI tool for Azure Durable Functions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support Lazy Loading Large Message Inputs/Outputs

swettstein opened this issue · comments

When loading orchestrations and many of them have large inputs/outputs, it is helpful for performance to disable the setting FetchLargeMessagesAutomatically but this leaves the input/output value as a link to the blob. Our organization has public access to blobs disabled for security. Therefore, clicking on this link will not allow us to easily inspect the contents of this blob. It would be helpful to have a function to fetch the contents of the blob when clicking on a large input/output from the main table.

e.g. When clicking on the following input:
image

The modal popup currently shows:
image

But would like it to show the actual downloaded and decompressed json.

Indeed, sounds like a useful feature, @swettstein .
But how would you estimate the size of your inputs/outputs?

some of our processes are data-heavy so they could be up to 1MB (compressed)

some of our processes are data-heavy so they could be up to 1MB (compressed)

Wow. And would you expect that huge JSON to be just shown on the screen?
I'm asking because I really doubt it would be any helpful. I mean, how would you navigate through it?..

As an alternative, it could be a link that allows to download it as a file. Would it be more useful?

Wow. And would you expect that huge JSON to be just shown on the screen? I'm asking because I really doubt it would be any helpful. I mean, how would you navigate through it?..

As an alternative, it could be a link that allows to download it as a file. Would it be more useful?

for troubleshooting purposes, yes, it would be helpful. it wouldn't have to be shown on the screen but perhaps an on-demand button or link to download the decompressed file would work too. i would just want it to handle the auth and decompression for a seamless user experience.

to take a step back on how i got here. i was trying to load a set of Orchestrations but it was timing out. i thought that was odd given i was filtering by name and this particular Orchestration has no inputs or outputs. i dug deeper and found that the name filter can only be applied post-ListInstancesAsync which meant it was loading all Orchestrations and some of them had very large inputs that it was trying to download and decompress (even though they would eventually get filtered out). that's when i discovered FetchLargeMessagesAutomatically and setting that to False greatly improved performance. in certain cases, i do want to see the inputs (especially during development and functional testing) but all i get is a link.