Apache Pulsar v2.3.0 Release Notes

Release Date: 2019-02-21 // about 5 years ago
  • General

    • 👌 Support for schema definitions in the Pulsar Python client library
    • 🔒 PIP-25: Token based authentication #2888, #3067 and #3089
    • 🚀 Updated to Apache BookKeeper 4.9.0
    • ZStandard compression codec #3159. Note that when a producer choose Zstd compression, a consumer will need to be at least at version 2.3.0
      to be able to correctly receive the messages.
    • 👌 Support for Java 11 #3006
    • ➕ Added Schema.AUTO_PRODUCE type to allow to publish serialized data and validate it against the
      topic schema #2685
    • ➕ Added Schema.KeyValue to allow for schema to be validated on message keys as well as payloads. #2885
    • 👌 Support TLS authentication and authorization in standalone mode #3360
    • 0️⃣ When creating namespace, use local cluster by default #3571
    • 🏷 Tag BookKeeper ledgers created by Pulsar with topic/subscription names for info/debug purposes
      #3525
    • Enabled sticky reads in BooKeeper reads to increase IO efficiency with read-ahead #3569
    • Several optimization in Pulsar SQL Presto connector (#3128, #3135, #3139, #3144, #3143)
    • 🔧 Configure Pulsar broker data cache automatically from JVM settings #3573
    • Reuse the SSL context objects #3550
    • ⚡️ Automatic schema update can be disabled through admin interface #2691
    • 👌 Support Dead-Letter-Queue from WebSocket proxy #2968
    • Pull-mode for WebSocket proxy #3058
    • Export Jetty stats to Prometheus #2804
    • ➕ Added stats for Pulsar proxy #2740
    • 👍 Allow subscribers to access subscription admin-api #2981
    • 🚀 Make brokers read on closest Bookie in a multi-region deployment #3171

    🛠 Fixes

    • 🛠 Fixed deadlock in reusing ZookKeeper event thread #3591
    • 🌲 In functions log topic appender, don't set producer name #3544
    • ✅ When cursor recovery encounters empty cursor ledger, fallback to latest snapshot #3487
    • 🛠 Fixed C++ regex-consumer when using HTTP service URL #3407
    • 🛠 Fix race condition: broker not scheduling read for active consumer #3411

    Pulsar IO

    • ➕ Added Debezium connector for Change-Data-Capture into Pulsar #2791
    • ➕ Added MongoDB connector #3561
    • ➕ Added Elastic Search connector #2546
    • ➕ Added HBase sink #3368
    • ➕ Added Local files connector #2869
    • Report source/sink stats in Prometheus #3261
    • 👍 Allow filtering in Twitter Firehose connector #3298
    • Sources/Sinks can be launched using fat jars as well #3166

    Pulsar Functions

    • ➕ Added Kubernetes runtime #1950
    • Secrets interface #2826
    • Cleanup subscriptions when deleting functions #3299
    • ➕ Add Windowfunction interface to functions api #3324
    • 👌 Support for accessing state in Python #2714
    • 👌 Support submitting Python functions as wheel file
    • 👌 Support submitting Python functions as Zip file with dependencies included #3321
    • ➕ Add minimum amount of resources to run setting for functions #3536
    • 🛠 Fixed the behavior of Function start/stop #3477

    Java client

    • 🚚 Moved Pulsar v1 client API into separate artifact #3228.

    🚀 Applications that are using the Pulsar v1 API, deprecated since 2.0 release, need to update the Maven dependency to use the pulsar-client-1x artifact instead of pulsar-client. Eg.

    \<dependency\> \<groupId\>org.apache.pulsar\</groupId\> \<artifactId\>pulsar-client-1x\</artifactId\> \<version\>2.3.0\</version\> \</dependency\>
    
    • 🛠 Fixed shading issues with Javadoc bundled in client jars by separating the API in a different Maven module #3309
    • 👌 Improve Javadocs #3592
    • 👌 Support specifying multiple hosts in pulsar service url and web url #3249
    • Automatically discover when partitions on a topic are increased #3513
    • ➕ Added Client.getPartitionsForTopic() #2972 (Javadoc)
    • ➕ Added Consumer.pauseMessageListener() and Consumer.resumeMessageListener() #2961
    • ✂ Removed shading relocations for Circe-checksum and lz4 libraries, to ensure native libraries
      are correctly loaded when using shaded client lib. #2191

    Python client

    • 🛠 Fixed Message.properties() #3595

    Go client

    • ➕ Added Producer.flush() to flush all outstanding messages #3469
    • 👌 Support Consumer.Seek() #3478
    • ➕ Added Message.Topic() #3346
    • 👍 Allow to specify SubscriptionInitPos option in ConsumerOptions #3588
    • ➕ Added TLS hostname verification #3580
    • 👍 Allow to link statically against libpulsar.a#3488
    • 🔦 Expose Producer.LastSequenceID() and Message.SequenceID() #3416

    C++ client

    • 0️⃣ Enable batching by default when using sendAsync() #2949
    • 👍 Allow to specify schema info in Avro format #3354
    • ➕ Added Producer.flush() to flush all outstanding messages #3020
    • ➕ Added TLS hostname verification #2475
    • 👍 Allow to specify SubscriptionInitialPosition #3567
    • ➕ Added Message.getTopicName() #3326
    • ➕ Added Cosnsumer.receiveAsync() #3389
    • 🏗 Build libpulsar.a with all required dependencies #3488
    • ✂ Removed Boost from Pulsar API headers #3374

    Adaptors

    👀 For a complete list of issues fixed, see

    https://github.com/apache/pulsar/milestone/18?closed=1

    Downloads at https://pulsar.apache.org/download