Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: conductor-oss/python-sdk
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: conductor-oss/python-sdk
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: mem_leak_fix
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 3 commits
  • 17 files changed
  • 2 contributors

Commits on Apr 18, 2026

  1. support lease extension

    v1r3n committed Apr 18, 2026
    Configuration menu
    Copy the full SHA
    03e69bb View commit details
    Browse the repository at this point in the history
  2. fix(lease): async task lease leak, thread safety, and code review fixes

    - Fix lease leak: when __execute_task returns None (ASYNC_TASK_RUNNING),
      keep the lease tracked instead of untracking in the finally block.
      Untrack in __check_completed_async_tasks when the async task finishes.
    - Remove dead isinstance(task_result, TaskInProgress) checks — __execute_task
      always wraps TaskInProgress into TaskResult before returning.
    - Add threading.Lock around _lease_info dict for PEP 703 free-threaded
      Python compatibility (safe beyond CPython GIL).
    - Log exception cause in _send_heartbeat retry failures (was swallowed).
    - Extract LeaseInfo dataclass and constants into shared lease_tracker.py
      module to eliminate duplication between task_runner and async_task_runner.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    v1r3n and claude committed Apr 18, 2026
    Configuration menu
    Copy the full SHA
    cf1d7f0 View commit details
    Browse the repository at this point in the history
  3. fix(http): break httpx Response reference cycle causing memory leak (#…

    …395)
    
    RESTResponse now eagerly reads resp.text into self.data and breaks the
    httpx Response <-> BoundSyncStream cycle by nulling resp.stream and
    resp._request. Drops io.IOBase inheritance (removes __del__ finalizer
    overhead). Removes write-only self.last_response retention. Adds
    json(), getheader() convenience methods to RESTResponse.
    
    Changes applied to both sync (rest.py, api_client.py) and async
    (async_rest.py, async_api_client.py) codepaths.
    
    Fixes #395
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    v1r3n and claude committed Apr 18, 2026
    Configuration menu
    Copy the full SHA
    c33f9b8 View commit details
    Browse the repository at this point in the history
Loading