temporalio / temporalio/sdk-python

[Bug] Test server in time-skipping mode does return userMetadata.summary

Open
#851 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
1.2k
Forks
241
Avg merge
3d 21h
Merged PRs (30d)
55

Description

What are you really trying to do?

I want to leverage userMetadata.summary and show it in UI, and test the functionality.

Describe the bug

My tests fail when running tests with test server in time-skipping mode.
I am passing summary attribute when executing workflow and activities. Then I query workflow history I can see userMetadata.summary populated on the HistoryEvent when running in dev mode, but it is missing in time-skipping mode.

Minimal Reproduction
@workflow.defn
class WorkflowSample:

    @workflow.run
    async def run(self, name: str) -> list[str]:
        result = await workflow.execute_activity(ActivitySample.greeting, name, summary=f"Calculating greeting for {name}")
        return [result]
    async def get_payload_value(self, *args: Payload | None) -> str | None:
        decoded_summary = await self.data_converter.decode(non_empty_payloads(*args))
        if len(decoded_summary) == 0:
            return None
        return decoded_summary[0]

    async def get_summary(self, history_event: HistoryEvent) -> str | None:
        logger.debug("Getting summary for event %s", MessageToJson(history_event))
        return await self.get_payload_value(
            history_event.user_metadata.summary)
    
    async def run(self):
        async for event in workflow_handle.fetch_history_events(wait_new_event=wait_new_event):
            summary = await self.get_summary(event)
            print(summary)
Environment/Versions
  • OS and processor: M1 Mac
  • Temporal Version: 1.10.0

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the example with the test server in time-skipping mode, comparing its workflow history with dev mode. Trace summary handling from workflow.execute_activity through fetch_history_events and user_metadata.summary. Done means the summary is present in the returned HistoryEvent in both modes, with the relevant tests passing.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.