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-cpp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.5.1
Choose a base ref
...
head repository: apache/pulsar-client-cpp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.6.0
Choose a head ref
  • 17 commits
  • 40 files changed
  • 4 contributors

Commits on Mar 14, 2024

  1. [feat] Add startPaused setting to consumer (#416)

    ### Motivation
    
    The Java client consumer has a setting called `startPaused`. If this is set to true, the created consumer will not fetch messages from the broker until resume is called. Currently, this setting does not seem to exist in the C++ client consumer, so I will add it.
    massakam authored Mar 14, 2024
    Configuration menu
    Copy the full SHA
    234a55d View commit details
    Browse the repository at this point in the history
  2. Support customize vcpkg directory when INTEGRATE_VCPKG is ON (#417)

    ### Motivation
    
    Currently when INTEGRATE_VCPKG is ON, the CMAKE_TOOLCHAIN_FILE variable
    is always a subdirectory of `${CMAKE_SOURCE_DIR}/vcpkg`. We can only
    customize the vcpkg directory when INTEGRATE_VCPKG is OFF, while the
    legacy CMake logic is incompatible with this way.
    
    ### Modifications
    
    When INTEGRATE_VCPKG is ON, only set CMAKE_TOOLCHAIN_FILE if it's not
    defined. The workflow and README are updated for it.
    BewareMyPower authored Mar 14, 2024
    Configuration menu
    Copy the full SHA
    8218717 View commit details
    Browse the repository at this point in the history

Commits on Mar 17, 2024

  1. Fix broken wireshark build workflow on macOS (#414)

    ### Motivation
    
    See https://github.com/apache/pulsar-client-cpp/actions/runs/8276076995/job/22644077705
    
    ```
    Error: The `brew link` step did not complete successfully
    The formula built, but is not symlinked into /usr/local
    Could not symlink bin/2to3
    ```
    
    `brew install` failed because the wireshark dependency depends on
    python@3.12 and it failed at `brew link`.
    
    ### Modifications
    
    Remove the existing binaries that might conflict.
    BewareMyPower authored Mar 17, 2024
    Configuration menu
    Copy the full SHA
    c513f29 View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2024

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

Commits on Mar 27, 2024

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

Commits on Mar 28, 2024

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

Commits on Apr 6, 2024

  1. fix: Incorrect acknowledgment behavior in the listener of the multi-t…

    …opic consumer. (#423)
    
    ### Motivation
    apache/pulsar-client-node#371
    
    ### Modifications
    - Add the message to the unacknowledged tracker before call the listener.
    
    ### Verifying this change
    - Add `testMultiConsumerListenerAndAck` to cover it.
    shibd authored Apr 6, 2024
    Configuration menu
    Copy the full SHA
    3f0b33b View commit details
    Browse the repository at this point in the history

Commits on Jun 4, 2024

  1. Support seek operation on a multi-topics consumer (#426)

    ### Motivation
    
    See apache/pulsar-client-python#213
    
    ### Modifications
    
    Add a new `forEachValue` overload that allows users to count the number
    of rest running tasks through `SharedFuture` to `SynchronizedHashMap`.
    Leverage this overload in seek operations when the argument is a
    timestamp, or a MessageId that represents earliest or latest. When the
    argument is a MessageId whose `getTopicName()` method returns a correct
    topic name, seek on the internal consumer of that topic.
    
    Add `testMultiTopicsSeekAll` and `testMultiTopicsSeekSingle` to
    `ConsumerSeekTest` to cover these cases.
    BewareMyPower authored Jun 4, 2024
    Configuration menu
    Copy the full SHA
    37bdf5b View commit details
    Browse the repository at this point in the history

Commits on Jun 17, 2024

  1. Log the default location of trusted CA certificates when tlsTrustCert…

    …sFilePath is not specified (#429)
    
    ### Motivation
    
    Currently when `tlsTrustCertsFilePath` is not specified, default
    locations of CA certificates will be used. However, these paths are
    determined by the compile option when building OpenSSL and they are
    invisible to users. If the OS uses a different path, the TLS connection
    will fail with no helpful error message.
    BewareMyPower authored Jun 17, 2024
    Configuration menu
    Copy the full SHA
    739f0f0 View commit details
    Browse the repository at this point in the history

Commits on Jun 24, 2024

  1. Use Rocky Linux 8 and vcpkg to build RPM packages (#428)

    ### Motivation
    
    See https://lists.apache.org/thread/7o8hpv1gtoffvzx053wm0ss2s9xt0795, we will discard the support for CentOS 7 and old `std::string` ABI.
    
    ### Modifications
    
    - Switch from `centos:7` image and GCC 4.8 to `rockylinux:8` image and GCC 8 to build RPM packages.
    - Use vcpkg to install dependencies according to `vcpkg.json` (`dependencies.json` will be deprecated in future)
    - Add a new script to build `libpulsarwithdeps.a` for dependencies installed by vcpkg
    - Link to `libstdc++` and `libgcc_s` libraries statically
    
    Additional, with vcpkg, OpenSSL will search `/etc/ssl/certs.pem` for the default CA certificate rather than `/usr/local/ssl/ssl/certs.pem`.
    BewareMyPower authored Jun 24, 2024
    Configuration menu
    Copy the full SHA
    8aab896 View commit details
    Browse the repository at this point in the history

Commits on Jul 4, 2024

  1. Add -Bsymbolic link option to avoid symbol interposition (#432)

    ### Motivation
    
    There is a case that `libpulsar.so` could unexpectedly call functions from other dependencies.
    
    For example, assuming the application depends on two libraries:
    - `libpulsar.so`, which includes the symbols from `libcurl.a` 8.4.0
    - `libfoo.so`, which includes the symbols from `libcurl.a` 7.82.0
    
    If the link order is `libfoo.so` first, then the libcurl definitions from 7.82.0 will also be used by `libpulsar.so` and then the application might crash due to the incompatibility. This is an issue specifically with Linux ELF format.
    
    ### Modifications
    
    Add the `-Wl,-Bsymbolic` link option for GCC.
    BewareMyPower authored Jul 4, 2024
    Configuration menu
    Copy the full SHA
    d736a1b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    35bf161 View commit details
    Browse the repository at this point in the history

Commits on Jul 22, 2024

  1. feat: expose partitions update interval configuration to C client (#437)

    * feat: expose partitions update interval configuration to C client
    
    * code format
    shibd authored Jul 22, 2024
    Configuration menu
    Copy the full SHA
    2a69168 View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2024

  1. Fix consumer might not subscribe after a reconnection (#438)

    Fixes #436
    
    ### Motivation
    
    When a consumer starts grabbing the connection, it registers a timer after the operation timeout. When that
    timer is expired, it will fail the connection and cancel the connection timer. However, it results a race
    condition that:
      1. The consumer's connection is closed (e.g. the keep alive timer failed)
      2. The connection timer is registered on the executor and will trigger the reconnection after 100ms
      3. The connection timer is cancelled, then the reconnection won't start.
    
    ### Modifications
    
    Cancel the `creationTimer_` once `HandlerBase#start` succeeded first
    time. Add `testReconnectWhenFirstConnectTimedOut` to cover this case.
    BewareMyPower authored Aug 13, 2024
    Configuration menu
    Copy the full SHA
    5940cb5 View commit details
    Browse the repository at this point in the history

Commits on Aug 21, 2024

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

Commits on Aug 28, 2024

  1. Release 3.6.0

    shibd committed Aug 28, 2024
    Configuration menu
    Copy the full SHA
    8df0acd View commit details
    Browse the repository at this point in the history

Commits on Aug 29, 2024

  1. Fix buffer overflow for non-batched send when the message metadata si…

    …ze exceeds 64KB (#443)
    
    See apache/pulsar-client-python#223
    
    ### Motivation
    
    Currently a shared buffer is used to store serialized message metadata
    for each send request. However, its capacity is only 64KB, when the metadata
    size exceeds 64KB, buffer overflow could happen.
    
    ### Modifications
    
    When the metadata size is too large, allocate a new buffer instead of
    using the shared buffer. Add `testLargeProperties` to cover it.
    
    (cherry picked from commit 8f269e8)
    BewareMyPower authored and shibd committed Aug 29, 2024
    Configuration menu
    Copy the full SHA
    aba8d6d View commit details
    Browse the repository at this point in the history
Loading