temporalio / features

Behavior and history compatibility testing for Temporal SDKs
13 stars 17 forks source link

[Feature Request] Expose history size bytes to workflow execution info #140

Open bergundy opened 2 years ago

bergundy commented 2 years ago

See the new API addition here: https://github.com/temporalio/api/pull/242

cretz commented 2 years ago

Is there an issue for tracking the server-side population of this value? Regardless, in the SDK we need to document that "0 means this may not be provided by your version of the server". (I don't want to make it optional since it's only optional until server has the feature)

Sushisource commented 2 years ago

Note that this is not available within a workflow unless we start calling describe every time we get a workflow task (which we obviously don't want to do).

WorkflowExecutionInfo only appears there and in the various list/scan apis.

It is stored in a search attribute, but workflows do not get to learn about changes to search attributes - only their initial value at the time the workflow is started.

So either we add it to the poll WFT response (which would have some redudancies, and, it can be pretty big, so probably not that). Or we need to add just the byte size to the poll response, or we just calculate it ourselves.

cretz commented 2 years ago

Since this is for helping with continue as new, they also added history_size_bytes and even suggest_continue_as_new to WorkflowTaskStartedEventAttributes. See:

@dnr - Feel free to give any impl update here if there is one.

dnr commented 2 years ago

Is this not a dup of #16?

api#242 is not the one you want, that's for a completely different purpose (though confusing). It's api#178, which is available from workflow tasks.

Implementation is in https://github.com/temporalio/temporal/pull/3055. It was in the middle of review and got preempted by other stuff. I was still waiting for some comments from @yiminc :slightly_smiling_face:

Or if you really just mean copying a value to a struct in the describe/list apis and not #16, then ignore the above