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: apache/pulsar-client-python
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.0.0
Choose a base ref
...
head repository: apache/pulsar-client-python
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.1.0
Choose a head ref
  • 14 commits
  • 26 files changed
  • 3 contributors

Commits on Dec 20, 2022

  1. Add a script to download and stage artifacts (#65)

    ### Motivation & Modifications
    
    Add a script to download and stage artifacts so that we can just use a
    `svn add *` command to add them to the central repo.
    
    ### Verification
    
    Take the 3.0.0-candidate-3 release as example, after configuring the
    `GITHUB_TOKEN` environment variable, you only need to run:
    
    ```bash
    # See https://github.com/apache/pulsar-client-python/actions/runs/3709463737
    $PROJECT_DIR/build-support/stage-release.sh v3.1.0-candidate-3 3709463737
    ```
    
    Then the layout of the current directory will be the same as
    https://dist.apache.org/repos/dist/dev/pulsar/pulsar-client-python-3.0.0-candidate-3/.
    BewareMyPower authored Dec 20, 2022
    Configuration menu
    Copy the full SHA
    abad572 View commit details
    Browse the repository at this point in the history

Commits on Dec 27, 2022

  1. Configuration menu
    Copy the full SHA
    d307b98 View commit details
    Browse the repository at this point in the history

Commits on Jan 13, 2023

  1. Configuration menu
    Copy the full SHA
    fe6dc94 View commit details
    Browse the repository at this point in the history

Commits on Jan 16, 2023

  1. Add the release process for Python client (#68)

    Fixes #64
    
    It also adds a `upload-pypi.sh` that downloads the wheels from the
    Apache's SVN project and upload them to PyPI.
    BewareMyPower authored Jan 16, 2023
    Configuration menu
    Copy the full SHA
    fe96604 View commit details
    Browse the repository at this point in the history

Commits on Jan 30, 2023

  1. Configuration menu
    Copy the full SHA
    c2d4a33 View commit details
    Browse the repository at this point in the history

Commits on Feb 1, 2023

  1. Add support for Python 3.11 (#83)

    * Add support for Python 3.11
    
    * Removed Python 3.7 windows PR build
    
    * PyYaml
    
    * Use pip3 instead of pip
    
    * Test
    
    * Fixed dependencies wildcard
    merlimat authored Feb 1, 2023
    Configuration menu
    Copy the full SHA
    c88d57e View commit details
    Browse the repository at this point in the history
  2. Fixed deadlock in producer.send_async (#87)

    Fix #84
    
    Release the GIL while calling `producer.sendAsync()` to avoid a deadlock when PyBind is triggering the Python callback. 
    
    
      * Main Thread 
         1. Holds the Python GIL
         2. Call `producer.send_async()`
         3. Tries to acquire internal `ClientConnetion` lock
    
     * Pulsar client internal thread
         1. Holds lock on `ClientConnection`
         2. Receives ack from the broker
         3. Triggers callback
         4. PyBind11 acquires GIL <---- Deadlock
    
    The problem is the different behavior in PyBind from Boost::Python. 
    
    We always need to make sure we release the GIL before making any call to C++ that potentially acquires any mutexes
    merlimat authored Feb 1, 2023
    Configuration menu
    Copy the full SHA
    cff12ea View commit details
    Browse the repository at this point in the history

Commits on Feb 2, 2023

  1. Bump version to 3.1.0

    BewareMyPower committed Feb 2, 2023
    Configuration menu
    Copy the full SHA
    fda5086 View commit details
    Browse the repository at this point in the history

Commits on Feb 16, 2023

  1. Update the release process for versioning (#91)

    ### Motivation
    
    Adopt the same versioning rule with the Node.js client, see
    apache/pulsar-client-node#287.
    
    Add an extra step to commit the version update directly before pushing
    the tag. For example, fda5086
    
    (cherry picked from commit cbd31e7)
    BewareMyPower committed Feb 16, 2023
    Configuration menu
    Copy the full SHA
    7ef441e View commit details
    Browse the repository at this point in the history
  2. Issue #31 - Access name attribute of any type object (#92)

    Addresses Issue #31 - we should access a string representation of the given object rather than assuming that the object itself can be concatenated with a string.
    
    (cherry picked from commit e3eed2d)
    erichare authored and BewareMyPower committed Feb 16, 2023
    Configuration menu
    Copy the full SHA
    e0b51d5 View commit details
    Browse the repository at this point in the history
  3. Add Human-readable description of MessageId object (#93)

    (cherry picked from commit ed6983b)
    erichare authored and BewareMyPower committed Feb 16, 2023
    Configuration menu
    Copy the full SHA
    dcfd136 View commit details
    Browse the repository at this point in the history
  4. Issue #37 : Allow passing pulsar.MessageId instance to create_reader() (

    #95)
    
    (cherry picked from commit 2aaacad)
    erichare authored and BewareMyPower committed Feb 16, 2023
    Configuration menu
    Copy the full SHA
    1248825 View commit details
    Browse the repository at this point in the history

Commits on Feb 17, 2023

  1. Upgrade to pulsar-client-cpp 3.1.2 (#96)

    (cherry picked from commit 2bab367)
    BewareMyPower committed Feb 17, 2023
    Configuration menu
    Copy the full SHA
    9ed92ec View commit details
    Browse the repository at this point in the history

Commits on Mar 8, 2023

  1. Wrap the interruption to a custom exception when a blocking API is in…

    …terrupted (#99)
    
    ### Motivation
    
    Currently, when a blocking API is interrupted by a signal, `SystemError`
    will be thrown. However, in this case, `PyErr_SetInterrupt` will be
    called and next time a blocking API is called, `std::system_error` will
    be somehow thrown.
    
    The failure of
    https://lists.apache.org/thread/cmzykd9qz9x1d0s35nc5912o3slwpxpv is
    caused by this issue. The `SystemError` is not called, then
    `client.close()` will be skipped, which leads to the `bad_weak_ptr`
    error.
    
    P.S. Currently we have to call `client.close()` on a `Client` instance,
    otherwise, the `bad_weak_ptr` will be thrown.
    
    However, even if we caught the `SystemError` like:
    
    ```python
        try:
            msg = consumer.receive()
            # ...
        except SystemError:
            break
    ```
    
    we would still see the following error:
    
    ```
    terminate called after throwing an instance of 'std::system_error'
      what():  Operation not permitted
    Aborted
    ```
    
    ### Modifications
    
    - Wrap `ResultInterrupted` into the `pulsar.Interrupted` exception.
    - Refactor the `waitForAsyncValue` and `waitForAsyncResult` functions
      and raise `pulsar.Interrupted` when `PyErr_CheckSignals` detects a
      signal.
    - Add `InterruptedTest` to cover this case.
    - Remove `future.h` since we now use `std::future` instead of the
      manually implemented `Future`.
    - Fix the `examples/consumer.py` to support stopping by Ctrl+C.
    
    (cherry picked from commit ec05f50)
    BewareMyPower committed Mar 8, 2023
    Configuration menu
    Copy the full SHA
    b883f42 View commit details
    Browse the repository at this point in the history
Loading