Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(agents-api): Make execution id temporal search attribute configurable #1182

Merged
merged 4 commits into from
Feb 26, 2025

Conversation

HamadaSalhab
Copy link
Contributor

@HamadaSalhab HamadaSalhab commented Feb 21, 2025

PR Type

Enhancement


Description

  • Made the Temporal search attribute key configurable.

  • Updated environment variables and configuration for Temporal.

  • Refactored code to use the configurable search attribute key.

  • Updated .env.example and docker-compose.yml for new configuration.


Changes walkthrough 📝

Relevant files
Enhancement
temporal.py
Use configurable Temporal search attribute key                     

agents-api/agents_api/clients/temporal.py

  • Replaced hardcoded search attribute key with a configurable one.
  • Used temporal_search_attribute_key from environment variables.
  • +2/-1     
    helpers.py
    Refactor to use configurable search attribute key               

    agents-api/agents_api/workflows/task_execution/helpers.py

  • Replaced hardcoded search attribute key with a configurable one.
  • Imported temporal_search_attribute_key from environment variables.
  • +6/-2     
    Configuration changes
    env.py
    Add Temporal search attribute key to environment                 

    agents-api/agents_api/env.py

  • Added temporal_search_attribute_key to environment variables.
  • Set default value for the new search attribute key.
  • +3/-0     
    docker-compose.yml
    Update `docker-compose.yml` with new configuration             

    agents-api/docker-compose.yml

  • Added TEMPORAL_SEARCH_ATTRIBUTE_KEY to shared environment variables.
  • +1/-0     
    Documentation
    .env.example
    Update `.env.example` with new configuration                         

    .env.example

    • Added example for TEMPORAL_SEARCH_ATTRIBUTE_KEY.
    +1/-0     

    Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.

  • Important

    Make Temporal search attribute key configurable by updating environment variables, configuration files, and refactoring code in temporal.py and helpers.py.

    • Behavior:
      • Replaced hardcoded Temporal search attribute key with configurable temporal_search_attribute_key in temporal.py and helpers.py.
      • Utilizes temporal_search_attribute_key from environment variables.
    • Configuration:
      • Added temporal_search_attribute_key to env.py with a default value.
      • Updated docker-compose.yml to include TEMPORAL_SEARCH_ATTRIBUTE_KEY in shared environment variables.
    • Documentation:
      • Updated .env.example to include TEMPORAL_SEARCH_ATTRIBUTE_KEY.

    This description was created by Ellipsis for f598c7f. It will automatically update as commits are pushed.

    Copy link
    Contributor

    Walkthrough

    The PR introduces a new environment variable TEMPORAL_SEARCH_ATTRIBUTE_KEY across several files to replace a hardcoded string, enhancing configurability.

    Entelligence.ai can learn from your feedback. Simply add 👍 / 👎 emojis to teach it your preferences. More shortcuts below

    Emoji Descriptions:

    • ⚠️ Potential Issue - May require further investigation.
    • 🔒 Security Vulnerability - Fix to ensure system safety.
    • 💻 Code Improvement - Suggestions to enhance code quality.
    • 🔨 Refactor Suggestion - Recommendations for restructuring code.
    • ℹ️ Others - General comments and information.

    Interact with the Bot:

    • Send a message or request using the format:
      @bot + *your message*
    Example: @bot Can you suggest improvements for this code?
    
    • Help the Bot learn by providing feedback on its responses.
      @bot + *feedback*
    Example: @bot Do not comment on `save_auth` function !
    

    Copy link
    Contributor

    LGTM 👍

    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Configuration Validation

    The code should validate that temporal_search_attribute_key is not empty or contains only whitespace characters before using it as a search attribute key

    execution_id_key = SearchAttributeKey.for_keyword(temporal_search_attribute_key)

    Copy link
    Contributor

    qodo-merge-pro-for-open-source bot commented Feb 21, 2025

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Validate search attribute key format

    Add input validation to ensure the search attribute key follows Temporal's
    naming conventions and doesn't contain invalid characters that could cause
    runtime errors.

    agents-api/agents_api/env.py [116-118]

    -temporal_search_attribute_key: str = env.str(
    -    "TEMPORAL_SEARCH_ATTRIBUTE_KEY", default="JulepExecutionId"
    +def _validate_search_attribute_key(key: str) -> str:
    +    if not key.isalnum():
    +        raise ValueError("Search attribute key must contain only alphanumeric characters")
    +    return key
    +
    +temporal_search_attribute_key: str = _validate_search_attribute_key(
    +    env.str("TEMPORAL_SEARCH_ATTRIBUTE_KEY", default="JulepExecutionId")
     )
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    __

    Why: Adding validation for the search attribute key format is important to prevent runtime errors in Temporal, as invalid characters could cause workflow failures. The suggestion provides a concrete implementation for early detection of invalid configurations.

    Medium
    Handle missing configuration value

    Handle potential None value for temporal_search_attribute_key to prevent runtime
    errors if the environment variable is not set properly.

    agents-api/agents_api/clients/temporal.py [116]

    +if not temporal_search_attribute_key:
    +    raise ValueError("temporal_search_attribute_key must be configured")
     execution_id_key = SearchAttributeKey.for_keyword(temporal_search_attribute_key)
    • Apply this suggestion
    Suggestion importance[1-10]: 3

    __

    Why: While the suggestion aims to add safety checks, it's less critical since the environment variable already has a default value "JulepExecutionId" set in the env.py file, making a None value impossible in this context.

    Low
    • Update

    Copy link
    Contributor

    @ellipsis-dev ellipsis-dev bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    👍 Looks good to me! Reviewed everything up to 7198615 in 1 minute and 23 seconds

    More details
    • Looked at 85 lines of code in 5 files
    • Skipped 0 files when reviewing.
    • Skipped posting 11 drafted comments based on config settings.
    1. .env.example:88
    • Draft comment:
      ENV var TEMPORAL_SEARCH_ATTRIBUTE_KEY added. Consider adding a brief comment on its purpose.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    2. agents-api/agents_api/clients/temporal.py:116
    • Draft comment:
      Replacing hardcoded 'CustomStringField' with config variable is good; ensure consistency with docs.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    3. agents-api/agents_api/env.py:116
    • Draft comment:
      The env var temporal_search_attribute_key is defined with a default. Looks good, ensure secret usage if needed.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    4. agents-api/agents_api/workflows/task_execution/helpers.py:91
    • Draft comment:
      Using temporal_search_attribute_key from env for SearchAttributeKey is consistent. No action needed.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    5. agents-api/docker-compose.yml:32
    • Draft comment:
      TEMPORAL_SEARCH_ATTRIBUTE_KEY is now configurable in docker-compose. Verify this is documented in project docs.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    6. .env.example:88
    • Draft comment:
      Add a brief comment explaining TEMPORAL_SEARCH_ATTRIBUTE_KEY usage.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    7. agents-api/agents_api/clients/temporal.py:116
    • Draft comment:
      Nice improvement using temporal_search_attribute_key instead of hardcoded value; consider documenting accepted values.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    8. agents-api/agents_api/env.py:116
    • Draft comment:
      Consider adding an inline comment to explain the purpose and acceptable values of temporal_search_attribute_key.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    9. agents-api/agents_api/workflows/task_execution/helpers.py:91
    • Draft comment:
      Consistent use of temporal_search_attribute_key enhances flexibility; ensure tests cover behavior with alternative values.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    10. agents-api/docker-compose.yml:32
    • Draft comment:
      Verify that the default TEMPORAL_SEARCH_ATTRIBUTE_KEY in docker-compose matches code expectations.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    11. agents-api/agents_api/workflows/task_execution/helpers.py:126
    • Draft comment:
      Typo detected: The variable name 'seprated_workflow_name' should be corrected to 'separated_workflow_name' for consistency and readability.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.

    Workflow ID: wflow_kfdWIdQ4z7jdL4wp


    You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet mode, and more.

    Copy link
    Contributor

    @creatorrr creatorrr left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    default to CustomStringField

    Copy link
    Contributor

    qodo-merge-pro-for-open-source bot commented Feb 21, 2025

    CI Feedback 🧐

    (Feedback updated until commit 7198615)

    A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

    Action: Test

    Failed stage: [❌]

    Failed test name: test_workflow_routes

    Failure summary:

    The action failed due to two main issues:

  • The search attribute JulepExecutionId is not defined in the Temporal workflow service, causing 500
    Internal Server Error responses
  • Multiple connection failures to the Temporal service with "Connection refused" errors, indicating
    the Temporal server was not accessible

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  Ubuntu
    ...
    
    1412:  PASS  test_agent_queries:43 query: create or update agent sql                2%
    1413:  PASS  test_agent_queries:62 query: update agent sql                          3%
    1414:  PASS  test_agent_queries:89 query: get agent not exists sql                  3%
    1415:  PASS  test_agent_queries:100 query: get agent exists sql                     4%
    1416:  PASS  test_agent_queries:121 query: list agents sql                          4%
    1417:  PASS  test_agent_queries:132 query: patch agent sql                          4%
    1418:  PASS  test_agent_queries:156 query: delete agent sql                         5%
    1419:  INFO:httpx:HTTP Request: POST http://testserver/agents "HTTP/1.1 403 Forbidden"
    1420:  PASS  test_agent_routes:9 route: unauthorized should fail                    5%
    ...
    
    1525:  SKIP  test_execution_workflo… workflow: yield step       needs to be fixed  35%
    1526:  SKIP  test_execution_workflo… workflow: sleep step       needs to be fixed  35%
    1527:  SKIP  test_execution_workflo… workflow: return step      needs to be fixed  36%
    1528:  direct                                           
    1529:  SKIP  test_execution_workflo… workflow: return step      needs to be fixed  36%
    1530:  nested                                           
    1531:  SKIP  test_execution_workflo… workflow: log step         needs to be fixed  36%
    1532:  SKIP  test_execution_workflo… workflow: log step         needs to be fixed  37%
    1533:  expression fail                                  
    ...
    
    1593:  PASS  test_files_queries:106 query: list files                              49%
    1594:  PASS  test_files_queries:117 query: list user files                         50%
    1595:  PASS  test_files_queries:146 query: list agent files                        50%
    1596:  PASS  test_files_queries:175 query: delete user file                        50%
    1597:  PASS  test_files_queries:212 query: delete agent file                       51%
    1598:  PASS  test_files_queries:249 query: delete file                             51%
    1599:  PASS  test_model_validation:10 validate_model: succeeds when model is       52%
    1600:  available                                       
    1601:  PASS  test_model_validation:19 validate_model: fails when model is          52%
    ...
    
    1619:  PASS  test_session_queries:100 query: get session does not exist            58%
    1620:  PASS  test_session_queries:114 query: list sessions                         59%
    1621:  PASS  test_session_queries:131 query: list sessions with filters            59%
    1622:  PASS  test_session_queries:150 query: count sessions                        60%
    1623:  PASS  test_session_queries:164 query: update session sql                    60%
    1624:  PASS  test_session_queries:199 query: patch session sql                     61%
    1625:  PASS  test_session_queries:226 query: delete session sql                    61%
    1626:  INFO:httpx:HTTP Request: GET http://testserver/sessions "HTTP/1.1 403 Forbidden"
    1627:  PASS  test_session_routes:7 route: unauthorized should fail                 61%
    ...
    
    1706:  PASS  test_task_queries:143 query: delete task sql - not exists             79%
    1707:  PASS  test_task_queries:162 query: list tasks sql - with filters            80%
    1708:  PASS  test_task_queries:183 query: list tasks sql - no filters              80%
    1709:  PASS  test_task_queries:201 query: update task sql - exists                 81%
    1710:  PASS  test_task_queries:237 query: update task sql - not exists             81%
    1711:  PASS  test_task_queries:264 query: patch task sql - exists                  82%
    1712:  PASS  test_task_queries:312 query: patch task sql - not exists              82%
    1713:  INFO:httpx:HTTP Request: POST http://testserver/agents/067b8375-2d98-7758-8000-4509b54345b5/tasks "HTTP/1.1 403 Forbidden"
    1714:  PASS  test_task_routes:27 route: unauthorized should fail                   82%
    1715:  INFO:httpx:HTTP Request: POST http://testserver/agents/067b8375-3119-7a5a-8000-80681e18591b/tasks "HTTP/1.1 201 Created"
    1716:  PASS  test_task_routes:50 route: create task                                83%
    1717:  ERROR:agents_api.routers.tasks.create_task_execution:search attribute JulepExecutionId is not defined
    1718:  Traceback (most recent call last):
    1719:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 1064, in _rpc_call
    1720:  resp = await client.call(
    1721:  ^^^^^^^^^^^^^^^^^^
    1722:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/bridge/client.py", line 151, in call
    1723:  resp.ParseFromString(await resp_fut)
    1724:  ^^^^^^^^^^^^^^
    1725:  temporal_sdk_bridge.RPCError: (3, 'search attribute JulepExecutionId is not defined', b'')
    ...
    
    1743:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1744:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/client.py", line 5074, in start_workflow
    1745:  resp = await self._client.workflow_service.start_workflow_execution(
    1746:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1747:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 991, in __call__
    1748:  return await self.service_client._rpc_call(
    1749:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1750:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 1079, in _rpc_call
    1751:  raise RPCError(message, RPCStatusCode(status), details)
    1752:  temporalio.service.RPCError: search attribute JulepExecutionId is not defined
    1753:  INFO:httpx:HTTP Request: POST http://testserver/tasks/067b8375-3887-716a-8000-88de653c690a/executions "HTTP/1.1 500 Internal Server Error"
    ...
    
    1782:  PASS  test_user_queries:55 query: create or update user sql                 91%
    1783:  PASS  test_user_queries:75 query: update user sql                           91%
    1784:  PASS  test_user_queries:95 query: get user not exists sql                   92%
    1785:  PASS  test_user_queries:111 query: get user exists sql                      92%
    1786:  PASS  test_user_queries:126 query: list users sql                           93%
    1787:  PASS  test_user_queries:141 query: patch user sql                           93%
    1788:  PASS  test_user_queries:161 query: delete user sql                          93%
    1789:  INFO:httpx:HTTP Request: POST http://testserver/users "HTTP/1.1 403 Forbidden"
    1790:  PASS  test_user_routes:9 route: unauthorized should fail                    94%
    ...
    
    1808:  PASS  test_user_routes:155 query: list users                                97%
    1809:  INFO:httpx:HTTP Request: GET http://testserver/users?metadata_filter=%7B%27test%27%3A%20%27test%27%7D "HTTP/1.1 200 OK"
    1810:  PASS  test_user_routes:170 query: list users with right metadata filter     97%
    1811:  PASS  test_workflow_helpers:23 execute_map_reduce_step_parallel:            98%
    1812:  subworkflow step not supported                  
    1813:  PASS  test_workflow_helpers:73 execute_map_reduce_step_parallel:            98%
    1814:  parallelism must be greater than 1              
    1815:  INFO:httpx:HTTP Request: POST http://testserver/agents/067b8375-d07f-7631-8000-6f2aa5418b65/tasks/067b8375-d0ac-79c3-8000-98f8b8a90ba3 "HTTP/1.1 201 Created"
    1816:  ERROR:agents_api.routers.tasks.create_task_execution:search attribute JulepExecutionId is not defined
    1817:  Traceback (most recent call last):
    1818:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 1064, in _rpc_call
    1819:  resp = await client.call(
    1820:  ^^^^^^^^^^^^^^^^^^
    1821:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/bridge/client.py", line 151, in call
    1822:  resp.ParseFromString(await resp_fut)
    1823:  ^^^^^^^^^^^^^^
    1824:  temporal_sdk_bridge.RPCError: (3, 'search attribute JulepExecutionId is not defined', b'')
    ...
    
    1842:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1843:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/client.py", line 5074, in start_workflow
    1844:  resp = await self._client.workflow_service.start_workflow_execution(
    1845:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1846:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 991, in __call__
    1847:  return await self.service_client._rpc_call(
    1848:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1849:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 1079, in _rpc_call
    1850:  raise RPCError(message, RPCStatusCode(status), details)
    1851:  temporalio.service.RPCError: search attribute JulepExecutionId is not defined
    1852:  INFO:httpx:HTTP Request: POST http://testserver/tasks/067b8375-d0ac-79c3-8000-98f8b8a90ba3/executions "HTTP/1.1 500 Internal Server Error"
    1853:  FAIL  test_workflow_routes:10 workflow route: evaluate step single          99%
    1854:  INFO:httpx:HTTP Request: POST http://testserver/agents/067b8375-d614-798d-8000-81a4f23f9fd2/tasks "HTTP/1.1 201 Created"
    1855:  ERROR:agents_api.routers.tasks.create_task_execution:search attribute JulepExecutionId is not defined
    1856:  Traceback (most recent call last):
    1857:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 1064, in _rpc_call
    1858:  resp = await client.call(
    1859:  ^^^^^^^^^^^^^^^^^^
    1860:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/bridge/client.py", line 151, in call
    1861:  resp.ParseFromString(await resp_fut)
    1862:  ^^^^^^^^^^^^^^
    1863:  temporal_sdk_bridge.RPCError: (3, 'search attribute JulepExecutionId is not defined', b'')
    ...
    
    1881:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1882:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/client.py", line 5074, in start_workflow
    1883:  resp = await self._client.workflow_service.start_workflow_execution(
    1884:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1885:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 991, in __call__
    1886:  return await self.service_client._rpc_call(
    1887:  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1888:  File "/home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packages/temporalio/service.py", line 1079, in _rpc_call
    1889:  raise RPCError(message, RPCStatusCode(status), details)
    1890:  temporalio.service.RPCError: search attribute JulepExecutionId is not defined
    1891:  INFO:httpx:HTTP Request: POST http://testserver/tasks/067b8375-d810-7d79-8000-552d435007be/executions "HTTP/1.1 500 Internal Server Error"
    1892:  FAIL  test_workflow_routes:41 workflow route: evaluate step single with     99%
    1893:  yaml                                             
    1894:  ───────────────────────── route: create task execution ─────────────────────────
    1895:  Failed at tests/test_task_routes.py:87                                        
    ...
    
    1911:  88                                                                        
    1912:  ╭─ Difference (LHS vs RHS) ──────────────────────────────────────────────────╮
    1913:  │                                                                            │
    1914:  │ 500                                                                        │
    1915:  │ 201                                                                        │
    1916:  │                                                                            │
    1917:  ╰────────────────────────────────────────────────────────────────────────────╯
    1918:  ───────────────────── workflow route: evaluate step single ─────────────────────
    1919:  Failed at tests/test_workflow_routes.py                                       
    ...
    
    1938:  │                                                                          │  
    1939:  │ /home/runner/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/ │  
    1940:  │ python3.12/asyncio/runners.py:118 in run                                 │  
    1941:  │                                                                          │  
    1942:  │   115 │   │                                                              │  
    1943:  │   116 │   │   self._interrupt_count = 0                                  │  
    1944:  │   117 │   │   try:                                                       │  
    1945:  │ ❱ 118 │   │   │   return self._loop.run_until_complete(task)             │  
    1946:  │   119 │   │   except exceptions.CancelledError:                          │  
    ...
    
    1951:  │ │        context = <_contextvars.Context object at 0x7f86285d3840>     │ │  
    1952:  │ │           coro = <coroutine object _ at 0x7f864ef0b230>              │ │  
    1953:  │ │           self = <asyncio.runners.Runner object at 0x7f864d3a9730>   │ │  
    1954:  │ │ sigint_handler = functools.partial(<bound method Runner._on_sigint   │ │  
    1955:  │ │                  of <asyncio.runners.Runner object at                │ │  
    1956:  │ │                  0x7f864d3a9730>>, main_task=<Task finished          │ │  
    1957:  │ │                  name='Task-4165' coro=<_() done, defined at         │ │  
    1958:  │ │                  /home/runner/work/julep/julep/agents-api/tests/tes… │ │  
    1959:  │ │                  exception=HTTPStatusError("Server error '500        │ │  
    1960:  │ │                  Internal Server Error' for url                      │ │  
    1961:  │ │                  'http://testserver/tasks/067b8375-d0ac-79c3-8000-9… │ │  
    1962:  │ │                  more information check:                             │ │  
    1963:  │ │                  https://developer.mozilla.org/en-US/docs/Web/HTTP/… │ │  
    1964:  │ │           task = <Task finished name='Task-4165' coro=<_() done,     │ │  
    1965:  │ │                  defined at                                          │ │  
    1966:  │ │                  /home/runner/work/julep/julep/agents-api/tests/tes… │ │  
    1967:  │ │                  exception=HTTPStatusError("Server error '500        │ │  
    1968:  │ │                  Internal Server Error' for url                      │ │  
    ...
    
    2016:  │ │                  }                                                   │ │  
    2017:  │ │        task_id = '067b8375-d0ac-79c3-8000-98f8b8a90ba3'              │ │  
    2018:  │ ╰──────────────────────────────────────────────────────────────────────╯ │  
    2019:  │                                                                          │  
    2020:  │ /home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packa │  
    2021:  │ ges/httpx/_models.py:763 in raise_for_status                             │  
    2022:  │                                                                          │  
    2023:  │    760 │   │   }                                                         │  
    2024:  │    761 │   │   error_type = error_types.get(status_class, "Invalid statu │  
    2025:  │    762 │   │   message = message.format(self, error_type=error_type)     │  
    2026:  │ ❱  763 │   │   raise HTTPStatusError(message, request=request, response= │  
    2027:  │    764 │                                                                 │  
    2028:  │    765 │   def json(self, **kwargs: typing.Any) -> typing.Any:           │  
    2029:  │    766 │   │   return jsonlib.loads(self.content, **kwargs)              │  
    2030:  │                                                                          │  
    2031:  │ ╭─────────────────────────────── locals ───────────────────────────────╮ │  
    2032:  │ │   error_type = 'Server error'                                        │ │  
    2033:  │ │  error_types = {                                                     │ │  
    2034:  │ │                │   1: 'Informational response',                      │ │  
    2035:  │ │                │   3: 'Redirect response',                           │ │  
    2036:  │ │                │   4: 'Client error',                                │ │  
    2037:  │ │                │   5: 'Server error'                                 │ │  
    2038:  │ │                }                                                     │ │  
    2039:  │ │      message = "Server error '500 Internal Server Error' for url     │ │  
    2040:  │ │                'http://testserver/tasks/067b83"+131                  │ │  
    2041:  │ │      request = <Request('POST',                                      │ │  
    2042:  │ │                'http://testserver/tasks/067b8375-d0ac-79c3-8000-98f… │ │  
    2043:  │ │         self = <Response [500 Internal Server Error]>                │ │  
    2044:  │ │ status_class = 5                                                     │ │  
    2045:  │ ╰──────────────────────────────────────────────────────────────────────╯ │  
    2046:  ╰──────────────────────────────────────────────────────────────────────────╯  
    2047:  HTTPStatusError: Server error '500 Internal Server Error' for url             
    2048:  'http://testserver/tasks/067b8375-d0ac-79c3-8000-98f8b8a90ba3/executions'     
    2049:  For more information check:                                                   
    2050:  https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500                  
    2051:  ──────────────── workflow route: evaluate step single with yaml ────────────────
    2052:  Failed at tests/test_workflow_routes.py                                       
    ...
    
    2071:  │                                                                          │  
    2072:  │ /home/runner/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/ │  
    2073:  │ python3.12/asyncio/runners.py:118 in run                                 │  
    2074:  │                                                                          │  
    2075:  │   115 │   │                                                              │  
    2076:  │   116 │   │   self._interrupt_count = 0                                  │  
    2077:  │   117 │   │   try:                                                       │  
    2078:  │ ❱ 118 │   │   │   return self._loop.run_until_complete(task)             │  
    2079:  │   119 │   │   except exceptions.CancelledError:                          │  
    ...
    
    2084:  │ │        context = <_contextvars.Context object at 0x7f862b2c0800>     │ │  
    2085:  │ │           coro = <coroutine object _ at 0x7f864f71b1c0>              │ │  
    2086:  │ │           self = <asyncio.runners.Runner object at 0x7f8654336d50>   │ │  
    2087:  │ │ sigint_handler = functools.partial(<bound method Runner._on_sigint   │ │  
    2088:  │ │                  of <asyncio.runners.Runner object at                │ │  
    2089:  │ │                  0x7f8654336d50>>, main_task=<Task finished          │ │  
    2090:  │ │                  name='Task-4193' coro=<_() done, defined at         │ │  
    2091:  │ │                  /home/runner/work/julep/julep/agents-api/tests/tes… │ │  
    2092:  │ │                  exception=HTTPStatusError("Server error '500        │ │  
    2093:  │ │                  Internal Server Error' for url                      │ │  
    2094:  │ │                  'http://testserver/tasks/067b8375-d810-7d79-8000-5… │ │  
    2095:  │ │                  more information check:                             │ │  
    2096:  │ │                  https://developer.mozilla.org/en-US/docs/Web/HTTP/… │ │  
    2097:  │ │           task = <Task finished name='Task-4193' coro=<_() done,     │ │  
    2098:  │ │                  defined at                                          │ │  
    2099:  │ │                  /home/runner/work/julep/julep/agents-api/tests/tes… │ │  
    2100:  │ │                  exception=HTTPStatusError("Server error '500        │ │  
    2101:  │ │                  Internal Server Error' for url                      │ │  
    ...
    
    2165:  │ │                  about\ninput_schema:\n  type: object\n  add'+68     │ │  
    2166:  │ │        task_id = '067b8375-d810-7d79-8000-552d435007be'              │ │  
    2167:  │ ╰──────────────────────────────────────────────────────────────────────╯ │  
    2168:  │                                                                          │  
    2169:  │ /home/runner/work/julep/julep/agents-api/.venv/lib/python3.12/site-packa │  
    2170:  │ ges/httpx/_models.py:763 in raise_for_status                             │  
    2171:  │                                                                          │  
    2172:  │    760 │   │   }                                                         │  
    2173:  │    761 │   │   error_type = error_types.get(status_class, "Invalid statu │  
    2174:  │    762 │   │   message = message.format(self, error_type=error_type)     │  
    2175:  │ ❱  763 │   │   raise HTTPStatusError(message, request=request, response= │  
    2176:  │    764 │                                                                 │  
    2177:  │    765 │   def json(self, **kwargs: typing.Any) -> typing.Any:           │  
    2178:  │    766 │   │   return jsonlib.loads(self.content, **kwargs)              │  
    2179:  │                                                                          │  
    2180:  │ ╭─────────────────────────────── locals ───────────────────────────────╮ │  
    2181:  │ │   error_type = 'Server error'                                        │ │  
    2182:  │ │  error_types = {                                                     │ │  
    2183:  │ │                │   1: 'Informational response',                      │ │  
    2184:  │ │                │   3: 'Redirect response',                           │ │  
    2185:  │ │                │   4: 'Client error',                                │ │  
    2186:  │ │                │   5: 'Server error'                                 │ │  
    2187:  │ │                }                                                     │ │  
    2188:  │ │      message = "Server error '500 Internal Server Error' for url     │ │  
    2189:  │ │                'http://testserver/tasks/067b83"+131                  │ │  
    2190:  │ │      request = <Request('POST',                                      │ │  
    2191:  │ │                'http://testserver/tasks/067b8375-d810-7d79-8000-552… │ │  
    2192:  │ │         self = <Response [500 Internal Server Error]>                │ │  
    2193:  │ │ status_class = 5                                                     │ │  
    2194:  │ ╰──────────────────────────────────────────────────────────────────────╯ │  
    2195:  ╰──────────────────────────────────────────────────────────────────────────╯  
    2196:  HTTPStatusError: Server error '500 Internal Server Error' for url             
    2197:  'http://testserver/tasks/067b8375-d810-7d79-8000-552d435007be/executions'     
    2198:  For more information check:                                                   
    2199:  https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500                  
    2200:  ────────────────────────────────────────────────────────────────────────────────
    2201:  ╭───────────── Results ─────────────╮
    2202:  │  226  Tests Encountered           │
    2203:  │  194  Passes             (85.8%)  │
    2204:  │    3  Failures           (1.3%)   │
    2205:  │   29  Skips              (12.8%)  │
    2206:  ╰───────────────────────────────────╯
    2207:  ─────────────────────────── FAILED in 133.20 seconds ───────────────────────────
    2208:  �[2m2025-02-21T08:20:51.211578Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2209:  �[2m2025-02-21T08:20:51.215743Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2210:  �[2m2025-02-21T08:20:51.227921Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2211:  �[2m2025-02-21T08:20:51.299325Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2212:  �[2m2025-02-21T08:20:51.299339Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2213:  �[2m2025-02-21T08:20:51.307455Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2214:  �[2m2025-02-21T08:20:51.366746Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2215:  �[2m2025-02-21T08:20:51.379950Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2216:  �[2m2025-02-21T08:20:51.392228Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2217:  �[2m2025-02-21T08:20:51.403407Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2218:  �[2m2025-02-21T08:20:51.561792Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2219:  �[2m2025-02-21T08:20:51.682146Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2220:  �[2m2025-02-21T08:20:51.883555Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2221:  �[2m2025-02-21T08:20:51.888732Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2222:  �[2m2025-02-21T08:20:52.086132Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2223:  �[2m2025-02-21T08:20:52.122446Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2224:  �[2m2025-02-21T08:20:52.231803Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2225:  �[2m2025-02-21T08:20:52.325128Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2226:  �[2m2025-02-21T08:20:52.477509Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2227:  �[2m2025-02-21T08:20:52.565840Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 6 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2228:  �[2m2025-02-21T08:20:56.673351Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2229:  �[2m2025-02-21T08:20:57.069171Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2230:  �[2m2025-02-21T08:20:57.315781Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2231:  �[2m2025-02-21T08:20:57.488347Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2232:  �[2m2025-02-21T08:20:57.663815Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2233:  �[2m2025-02-21T08:20:57.815315Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2234:  �[2m2025-02-21T08:20:57.822501Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2235:  �[2m2025-02-21T08:20:57.875845Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2236:  �[2m2025-02-21T08:20:58.043355Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2237:  �[2m2025-02-21T08:20:58.292888Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2238:  �[2m2025-02-21T08:20:58.646598Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2239:  �[2m2025-02-21T08:20:58.691906Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2240:  �[2m2025-02-21T08:20:58.725114Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2241:  �[2m2025-02-21T08:20:58.739362Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2242:  �[2m2025-02-21T08:20:58.893841Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2243:  �[2m2025-02-21T08:20:59.005194Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2244:  �[2m2025-02-21T08:20:59.058520Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2245:  �[2m2025-02-21T08:20:59.337109Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2246:  �[2m2025-02-21T08:20:59.387347Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2247:  �[2m2025-02-21T08:20:59.690962Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 7 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2248:  �[2m2025-02-21T08:21:05.486175Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2249:  �[2m2025-02-21T08:21:06.320335Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2250:  �[2m2025-02-21T08:21:06.781160Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2251:  �[2m2025-02-21T08:21:07.562262Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2252:  �[2m2025-02-21T08:21:07.744816Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2253:  �[2m2025-02-21T08:21:07.881253Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2254:  �[2m2025-02-21T08:21:07.891454Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2255:  �[2m2025-02-21T08:21:08.171078Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2256:  �[2m2025-02-21T08:21:08.333533Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2257:  �[2m2025-02-21T08:21:08.379850Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2258:  �[2m2025-02-21T08:21:08.395067Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2259:  �[2m2025-02-21T08:21:08.704682Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2260:  �[2m2025-02-21T08:21:08.764007Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2261:  �[2m2025-02-21T08:21:08.841373Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2262:  �[2m2025-02-21T08:21:08.860585Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2263:  �[2m2025-02-21T08:21:09.045055Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2264:  �[2m2025-02-21T08:21:09.153496Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2265:  �[2m2025-02-21T08:21:09.560790Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2266:  �[2m2025-02-21T08:21:10.404302Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2267:  �[2m2025-02-21T08:21:10.760943Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 8 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2268:  �[2m2025-02-21T08:21:14.589159Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2269:  �[2m2025-02-21T08:21:15.983886Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2270:  �[2m2025-02-21T08:21:16.463687Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2271:  �[2m2025-02-21T08:21:17.101650Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2272:  �[2m2025-02-21T08:21:17.192012Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2273:  �[2m2025-02-21T08:21:17.763010Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2274:  �[2m2025-02-21T08:21:17.896470Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2275:  �[2m2025-02-21T08:21:18.043023Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2276:  �[2m2025-02-21T08:21:18.530866Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2277:  �[2m2025-02-21T08:21:18.757603Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2278:  �[2m2025-02-21T08:21:18.841911Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2279:  �[2m2025-02-21T08:21:18.873150Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2280:  �[2m2025-02-21T08:21:19.060665Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2281:  �[2m2025-02-21T08:21:19.147020Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2282:  �[2m2025-02-21T08:21:19.320489Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2283:  �[2m2025-02-21T08:21:19.678159Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2284:  �[2m2025-02-21T08:21:19.854688Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2285:  �[2m2025-02-21T08:21:19.943040Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2286:  �[2m2025-02-21T08:21:20.009373Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2287:  �[2m2025-02-21T08:21:21.300009Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 9 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2288:  �[2m2025-02-21T08:21:25.345472Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2289:  �[2m2025-02-21T08:21:25.459846Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2290:  �[2m2025-02-21T08:21:25.540126Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2291:  �[2m2025-02-21T08:21:27.054025Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2292:  �[2m2025-02-21T08:21:27.549763Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2293:  �[2m2025-02-21T08:21:27.993458Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2294:  �[2m2025-02-21T08:21:28.028770Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2295:  �[2m2025-02-21T08:21:28.394379Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2296:  �[2m2025-02-21T08:21:28.453700Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2297:  �[2m2025-02-21T08:21:28.815380Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2298:  �[2m2025-02-21T08:21:28.815390Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2299:  �[2m2025-02-21T08:21:28.842599Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_workflow_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2300:  �[2m2025-02-21T08:21:28.908900Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call poll_activity_task_queue retried 10 times �[3merror�[0m�[2m=�[0mStatus { code: Unavailable, message: "tcp connect error: Connection refused (os error 111)", source: Some(tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))) }
    2301:  �[2m2025-02-21T08:21:28.946119Z�[0m �[33m WARN�[0m �[2mtemporal_client::retry�[0m�[2m:�[0m gRPC call...

    Copy link
    Contributor

    @ellipsis-dev ellipsis-dev bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    👍 Looks good to me! Incremental review on dfb5964 in 1 minute and 15 seconds

    More details
    • Looked at 26 lines of code in 2 files
    • Skipped 0 files when reviewing.
    • Skipped posting 4 drafted comments based on config settings.
    1. agents-api/agents_api/env.py:116
    • Draft comment:
      Ensure the new default value 'CustomStringField' is intentional. It differs from the previous 'JulepExecutionId'; confirm downstream systems rely on this change.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50%
      This comment violates several rules. It's asking to "ensure" and "confirm" something, which is explicitly against the rules. It's speculative about downstream impacts. It's not pointing out a clear issue, just asking for verification. The change is a simple configuration default value which can be overridden by environment variables anyway.
      Maybe this is a critical configuration that could break the system if changed incorrectly? Maybe there's domain knowledge about Temporal that makes this change dangerous?
      Even if this is an important configuration, asking for verification isn't helpful. If there was a specific known issue, that should be stated directly. The default can be overridden via environment variables if needed.
      Delete this comment. It violates the rules by asking for verification without pointing out a specific issue, and makes speculative statements about downstream impacts.
    2. agents-api/docker-compose.yml:32
    • Draft comment:
      Verify that the default value update to 'CustomStringField' in docker-compose aligns with the application's expected configuration.
    • Reason this comment was not posted:
      Comment did not seem useful. Confidence is useful = 0% <= threshold 50%
      This comment is asking the PR author to verify alignment with expected configuration, which is against the rules. It doesn't provide a specific suggestion or point out a clear issue.
    3. agents-api/agents_api/env.py:116
    • Draft comment:
      Ensure to update documentation/comments to reflect the new default value for TEMPORAL_SEARCH_ATTRIBUTE_KEY ('CustomStringField') replacing 'JulepExecutionId'.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None
    4. agents-api/docker-compose.yml:32
    • Draft comment:
      Verify the updated default value for TEMPORAL_SEARCH_ATTRIBUTE_KEY ('CustomStringField') is consistent with application expectations.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None

    Workflow ID: wflow_Ujqbk2kTp6Z9HGJI


    You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet mode, and more.

    Copy link
    Contributor

    @ellipsis-dev ellipsis-dev bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    👍 Looks good to me! Incremental review on 285daec in 24 seconds

    More details
    • Looked at 20 lines of code in 2 files
    • Skipped 0 files when reviewing.
    • Skipped posting 3 drafted comments based on config settings.
    1. .env.example:88
    • Draft comment:
      Consider adding a brief comment above TEMPORAL_SEARCH_ATTRIBUTE_KEY to explain its purpose and usage. The default value 'CustomStringField' may not be self-explanatory for new users.
    • Reason this comment was not posted:
      Confidence changes required: 33% <= threshold 50%
      None
    2. .env.example:88
    • Draft comment:
      Changed default TEMPORAL_SEARCH_ATTRIBUTE_KEY value to 'CustomStringField'. Ensure this new default is intentional, well-documented, and that downstream integrations are updated accordingly.
    • Reason this comment was not posted:
      Confidence changes required: 33% <= threshold 50%
      None
    3. code-interpreter/vendor/cohere-ai/cohere-terrarium:1
    • Draft comment:
      Vendor subproject pointer added. Verify that this commit reference is correct and that any related dependency updates are documented.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50%
      None

    Workflow ID: wflow_pmNda4i42CG2up34


    You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet mode, and more.

    Copy link
    Member

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    we have removed this submodule. Please re-check it once.

    Copy link
    Contributor

    @ellipsis-dev ellipsis-dev bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    👍 Looks good to me! Incremental review on f598c7f in 41 seconds

    More details
    • Looked at 5 lines of code in 1 files
    • Skipped 0 files when reviewing.
    • Skipped posting 2 drafted comments based on config settings.
    1. code-interpreter/vendor/cohere-ai/cohere-terrarium:1
    • Draft comment:
      Confirm that the removal of the subproject commit reference is intentional. Removing it might affect vendor dependency reproducibility or be an unintended side-effect.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.
    2. code-interpreter/vendor/cohere-ai/cohere-terrarium:1
    • Draft comment:
      Removal of the submodule commit reference detected. Please confirm that this vendor dependency update is intentional and that the new dependency state is documented.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.

    Workflow ID: wflow_45BLUfROAcTtFxcA


    You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet mode, and more.

    @whiterabbit1983 whiterabbit1983 merged commit beb7cb0 into dev Feb 26, 2025
    10 checks passed
    @whiterabbit1983 whiterabbit1983 deleted the f/configurable-temporal-search-attribute branch February 26, 2025 09:07
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    4 participants