)]}'
{
  "log": [
    {
      "commit": "305229da1c14c4e8ff6f167d706f9c041f275ca3",
      "tree": "fe30ec87368f3bdb45adf172283309cc79d1df52",
      "parents": [
        "4092d48e7102d62b694c684e2308947143c36298"
      ],
      "author": {
        "name": "VisionXu",
        "email": "vissxu@outlook.com",
        "time": "Fri Dec 20 17:54:42 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 20 17:54:42 2024 +0800"
      },
      "message": "[Issue23555][pulsar-adapters] 4.0.0 release of pulsar-client-kafka adaptor (#59)\n\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- upgrade Pulsar to 4.0.0\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- set `jcommander` version to 1.82\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- Set `mockito-core` version to 3.12.4\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- Change version to `4.0.0-SNAPSHOT`\r\n\r\n* Apply suggestions from code review\r\n\r\nUse `4.0.1` version in test.\r\n\r\nCo-authored-by: Zixuan Liu \u003cnodeces@gmail.com\u003e\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- change dependency path, `javax.xxx` -\u003e `jakarta.xxx`\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- `ConsumerName.java` has been removed. Replace ConsumerName#generateRandomName with RandomStringUtils#randomAlphanumeric (#23645)\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- change docker image version.\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- change docker image version.\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- change docker image version.\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- fix docker tag error\r\n\r\n---------\r\n\r\nCo-authored-by: Zixuan Liu \u003cnodeces@gmail.com\u003e"
    },
    {
      "commit": "4092d48e7102d62b694c684e2308947143c36298",
      "tree": "ef7333aa6cf55f83aa4bf5ca3d825e30a30c767e",
      "parents": [
        "5aeddbb21508fa70d36199f95dabebe17774384c"
      ],
      "author": {
        "name": "VisionXu",
        "email": "vissxu@outlook.com",
        "time": "Thu Nov 14 15:38:00 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 14 15:38:00 2024 +0800"
      },
      "message": "Issues/23555 (#57)\n\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\nUpgrade Pulsar to 3.0.7\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- Use `jdk17`\r\n- Upgrade `maven-shade-plugin` to support `jdk17`\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- Fix UT\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- Fix UT\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- remove useless variable\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- Use jdk8\r\n\r\n* Fix issue: https://github.com/apache/pulsar/issues/23555.\r\n- Remove useless property"
    },
    {
      "commit": "5aeddbb21508fa70d36199f95dabebe17774384c",
      "tree": "0091fec18a13f538a2b15e39535691d66389722e",
      "parents": [
        "145ac23da6e7aa2dfad036d425469f6188530b47"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Wed Nov 01 10:24:57 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 01 10:24:57 2023 -0700"
      },
      "message": "Add Strom adapter back after removing from Apache Storm repo (#55)\n\nThis reverts commit ab537c13061b06de2044cd43965de930d762fe8a."
    },
    {
      "commit": "145ac23da6e7aa2dfad036d425469f6188530b47",
      "tree": "acf6b3eaf6760ade56c488f4d38230a3287bf4d0",
      "parents": [
        "477fe3c043c2a73ba09ec4a6b7760c7ba484e4b6"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Aug 07 14:50:19 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 07 14:50:19 2023 +0800"
      },
      "message": "feat: Support consumer replicateSubscriptionState config (#52)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "477fe3c043c2a73ba09ec4a6b7760c7ba484e4b6",
      "tree": "add22eb727d3d9c73023576249a18580a81046fa",
      "parents": [
        "ab537c13061b06de2044cd43965de930d762fe8a"
      ],
      "author": {
        "name": "Andrey Yegorov",
        "email": "8622884+dlg99@users.noreply.github.com",
        "time": "Thu May 04 10:01:54 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 04 10:01:54 2023 -0700"
      },
      "message": "Add OWASP dep checker (#33)\n\n"
    },
    {
      "commit": "ab537c13061b06de2044cd43965de930d762fe8a",
      "tree": "320a368d70fd87e6503a7f16c2b300ae9a4e0a8d",
      "parents": [
        "9c1f67c750cc647a6ce7956db3ab8565e55ee67e"
      ],
      "author": {
        "name": "Andrey Yegorov",
        "email": "8622884+dlg99@users.noreply.github.com",
        "time": "Wed Mar 29 16:09:33 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 29 16:09:33 2023 -0700"
      },
      "message": "Strom adapter moved to Apache Storm community (#47)\n\n"
    },
    {
      "commit": "9c1f67c750cc647a6ce7956db3ab8565e55ee67e",
      "tree": "c44668efce49b577767b3c1665aaead99f7b56d4",
      "parents": [
        "f7f4a9b4ca11037b7235e0522847da053e5c74a9"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Mar 02 22:51:20 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 02 15:51:20 2023 +0100"
      },
      "message": "Update Flink Pulsar connector link (#43)\n\n"
    },
    {
      "commit": "f7f4a9b4ca11037b7235e0522847da053e5c74a9",
      "tree": "875b34c30410763115cbd7f847860074370de163",
      "parents": [
        "45b0d454781eb38c2485b085ada46ddf9341f7ed"
      ],
      "author": {
        "name": "Christophe Bornet",
        "email": "cbornet@hotmail.com",
        "time": "Thu Mar 02 10:51:04 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 02 15:51:04 2023 +0100"
      },
      "message": "Remove dependency on org.apache.pulsar.functions.utils.FunctionCommon in kafka-compat (#44)\n\nThis class is part of pulsar-functions and is built with a more recent JDK than the clients"
    },
    {
      "commit": "45b0d454781eb38c2485b085ada46ddf9341f7ed",
      "tree": "5e52f0e700b6bca8cc0f302b007dd785e4bf06b4",
      "parents": [
        "93f74c107001076c15cfc3e92b0a008d931cd5e1"
      ],
      "author": {
        "name": "Christophe Bornet",
        "email": "cbornet@hotmail.com",
        "time": "Thu Mar 02 06:58:32 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 02 11:58:32 2023 +0100"
      },
      "message": "Use an assembly descriptor to configure permissions (#42)\n\n"
    },
    {
      "commit": "93f74c107001076c15cfc3e92b0a008d931cd5e1",
      "tree": "b742d6cff4a0428e93dffb556a09d861e46e1d31",
      "parents": [
        "357fa3bef8c3ec42201cf2aac4b3468bf240584a"
      ],
      "author": {
        "name": "Zike Yang",
        "email": "zike@apache.org",
        "time": "Wed Mar 01 17:07:13 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 01 17:07:13 2023 +0800"
      },
      "message": "Only send notifications to commits@ mailing list (#41)\n\n"
    },
    {
      "commit": "357fa3bef8c3ec42201cf2aac4b3468bf240584a",
      "tree": "27cfc84ed42404e8d17bb396f0764106f0e99311",
      "parents": [
        "1d8ee4886c11ce42225e59732da22cbecaf03f45"
      ],
      "author": {
        "name": "hailin0",
        "email": "hailin088@gmail.com",
        "time": "Wed Mar 01 16:42:15 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 01 09:42:15 2023 +0100"
      },
      "message": "[pulsar-kafka] Fixed blockIfQueueFull config (#36)\n\nCo-authored-by: wanghailin \u003chailin@fiture.com\u003e"
    },
    {
      "commit": "1d8ee4886c11ce42225e59732da22cbecaf03f45",
      "tree": "afeeb0cefa7311dbd5d61606aaf4b46eba9743f5",
      "parents": [
        "2392bfe2f7d97f2a323014142eef0e066405eb89"
      ],
      "author": {
        "name": "changqing",
        "email": "clooker@163.com",
        "time": "Wed Mar 01 16:40:58 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 01 09:40:58 2023 +0100"
      },
      "message": "[improve] Kafka adaptor - Handle partition topic. (#37)\n\n* Fix - Handle partition topic.\r\n\r\n* Fix - Handle partition topic."
    },
    {
      "commit": "2392bfe2f7d97f2a323014142eef0e066405eb89",
      "tree": "93d72f5fdd82969d3bb39a2cf2355b4973aefa6b",
      "parents": [
        "3350cb5cf002886f55fceb2a17b4d7912145e5e4"
      ],
      "author": {
        "name": "Hervé Boutemy",
        "email": "herve.boutemy@free.fr",
        "time": "Wed Mar 01 09:40:02 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 01 09:40:02 2023 +0100"
      },
      "message": "enable Reproducible Builds (#39)\n\n"
    },
    {
      "commit": "3350cb5cf002886f55fceb2a17b4d7912145e5e4",
      "tree": "1d7ba88f8584d19bcc51d68b3af1f5f4c6206f8a",
      "parents": [
        "0adca97f98025ce60ea7504431711b01a9b080cd"
      ],
      "author": {
        "name": "Christophe Bornet",
        "email": "cbornet@hotmail.com",
        "time": "Wed Mar 01 04:37:59 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 01 09:37:59 2023 +0100"
      },
      "message": "Update to Pulsar 2.11.0 (#40)\n\n"
    },
    {
      "commit": "0adca97f98025ce60ea7504431711b01a9b080cd",
      "tree": "058921891eec990e8668ceac38a882967da2c1c4",
      "parents": [
        "b363865ccb827fe62fb40f135dfc07e70808de1d"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Thu Mar 31 10:19:19 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 31 10:19:19 2022 -0700"
      },
      "message": "Auto update partition for pulsar kafka producer (#28)\n\n"
    },
    {
      "commit": "b363865ccb827fe62fb40f135dfc07e70808de1d",
      "tree": "a3c6dab5eb3442a602285428b5737ea5838b61df",
      "parents": [
        "195d12552f9d168072a2ed830a69f5373e9655af"
      ],
      "author": {
        "name": "Christophe Bornet",
        "email": "cbornet@hotmail.com",
        "time": "Tue Mar 08 11:02:40 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 08 11:02:40 2022 +0100"
      },
      "message": "Import dependencies from Pulsar\u0027s parent POM (#35)\n\n"
    },
    {
      "commit": "195d12552f9d168072a2ed830a69f5373e9655af",
      "tree": "83b8707dcb9af9087ca22fd9f35bd1e151bd8bd3",
      "parents": [
        "4ccaf7b93fb377ac1ff0402d88f526d8f44ec5e4"
      ],
      "author": {
        "name": "Andrey Yegorov",
        "email": "8622884+dlg99@users.noreply.github.com",
        "time": "Thu Feb 03 13:59:01 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 03 15:59:01 2022 -0600"
      },
      "message": "Removing Flink in favor of https://github.com/apache/flink/tree/master/flink-connectors/flink-connector-pulsar (#34)\n\n### Motivation\r\n\r\nRemoving Flink adapter in favor of https://github.com/apache/flink/tree/master/flink-connectors/flink-connector-pulsar\r\nThis one is based on an old version of Flink which brings in dependencies with various CVEs, since that version Flink added pulsar connector in their project. \r\n\r\n### Modifications\r\n\r\nRemoved Flink adapter, tests, examples, and dependencies."
    },
    {
      "commit": "4ccaf7b93fb377ac1ff0402d88f526d8f44ec5e4",
      "tree": "58e17eff0bb8c0ebdc3256245e32f82757f69809",
      "parents": [
        "ef2966797af9b34b1cabeee9d555ad51b35533bb"
      ],
      "author": {
        "name": "Lari Hotari",
        "email": "lhotari@users.noreply.github.com",
        "time": "Thu Jan 20 19:34:54 2022 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 20 19:34:54 2022 +0200"
      },
      "message": "Upgrade Log4J2 to 2.17.1 (#32)\n\n"
    },
    {
      "commit": "ef2966797af9b34b1cabeee9d555ad51b35533bb",
      "tree": "fe88225d8f68510cd38cf0691c5fa1e2a185aa48",
      "parents": [
        "feaa4504d567a5310e0a3d54003e721696491993"
      ],
      "author": {
        "name": "Lari Hotari",
        "email": "lhotari@users.noreply.github.com",
        "time": "Fri Dec 10 13:43:30 2021 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 10 12:43:30 2021 +0100"
      },
      "message": "Upgrade Log4J2 to 2.15.0 to mitigate CVE-2021-44228 (#30)\n\n"
    },
    {
      "commit": "feaa4504d567a5310e0a3d54003e721696491993",
      "tree": "d109286cb64a783939fcde88f6ecd6b12d7e5576",
      "parents": [
        "df8fc1936af91aa52fe4ee268dcd8fb8a29b4d1b"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Tue Jul 20 13:05:37 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 20 13:05:37 2021 -0700"
      },
      "message": "[pulsar-kafka] Support encryption for pulsar-kafka producer/consumer (#26)\n\n* [pulsar-kafka] Support encryption for pulsar-kafka producer/consumer\r\n\r\n* add properties param for getEncryptionKey method"
    },
    {
      "commit": "df8fc1936af91aa52fe4ee268dcd8fb8a29b4d1b",
      "tree": "8ff5e1e4a7e2676c76f541aeda5d2ee69abab589",
      "parents": [
        "9801c43898f1b31c6335382c5ea16eac200b603d"
      ],
      "author": {
        "name": "Enrico Olivelli",
        "email": "eolivelli@gmail.com",
        "time": "Sat Jun 26 14:07:25 2021 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 26 15:07:25 2021 +0300"
      },
      "message": "Add build instructions to README (#24)\n\nCo-authored-by: Enrico Olivelli \u003ceolivelli@apache.org\u003e"
    },
    {
      "commit": "9801c43898f1b31c6335382c5ea16eac200b603d",
      "tree": "e91a90e717f96c840c6322c81ae17c16baaf41ff",
      "parents": [
        "74c0dd89d47870d2ff48fa3bafb1da1a874d2bf4"
      ],
      "author": {
        "name": "Andrey Yegorov",
        "email": "8622884+dlg99@users.noreply.github.com",
        "time": "Fri Jun 18 01:09:50 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 18 16:09:50 2021 +0800"
      },
      "message": "Fixed integration tests (#22)\n\n### Motivation\r\n\r\nKafkaApiTest is failing\r\n\r\n### Modifications\r\n\r\n1. conversion between Pulsar topic name and Kafka TopicPartition ended up with TopicPartition using name with \"-partition-\u003cpartition idx\u003e\"\r\n\r\n2. Seek was not working correctly:\r\n\r\nPulsarKafkaConsumer seeks to beginning, as asked.\r\nClears lastReceivedOffset in the process.\r\n\r\non poll it checks\r\n```\r\n            if (lastReceivedOffset.get(tp) \u003d\u003d null \u0026\u0026 !unpolledPartitions.contains(tp)) {\r\n                \tlog.info(\"When polling offsets, invalid offsets were detected. Resetting topic partition {}\", tp);\r\n                \tresetOffsets(tp);\r\n            } \r\n```\r\nseek didn\u0027t update unpolledPartitions - reset offset uses default strategy to reset \u003d\u003e seeks to the end\r\n\r\n### Verifying this change\r\n\r\n- [ ] Make sure that the change passes the CI checks.\r\n\r\n*(Please pick either of the following options)*\r\n\r\nThis change is already covered by existing tests, such as KafkaApiTest.\r\n\r\n### Does this pull request potentially affect one of the following parts:\r\n\r\n*If `yes` was chosen, please highlight the changes*\r\n\r\nNo\r\n\r\n### Documentation\r\n\r\n  - Does this pull request introduce a new feature? NO\r\n"
    },
    {
      "commit": "74c0dd89d47870d2ff48fa3bafb1da1a874d2bf4",
      "tree": "07cb6b36312dbd1801b5345d043019d4c270f2a2",
      "parents": [
        "238f8a9cf907785d5701af4d1bb7cf8c9ec2862d"
      ],
      "author": {
        "name": "Lari Hotari",
        "email": "lhotari@users.noreply.github.com",
        "time": "Thu Jun 17 13:49:10 2021 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 17 12:49:10 2021 +0200"
      },
      "message": "[Build] Add GitHub Actions build for pulsar-adapters (#19)\n\n"
    },
    {
      "commit": "238f8a9cf907785d5701af4d1bb7cf8c9ec2862d",
      "tree": "5f6c0baaf5e7064b8dc8a60a9fcf023dbe514d48",
      "parents": [
        "16b1c1532dc2906e0ef3100d8a8afb451a7a9acc"
      ],
      "author": {
        "name": "Lari Hotari",
        "email": "lhotari@users.noreply.github.com",
        "time": "Thu Jun 17 13:43:35 2021 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 17 12:43:35 2021 +0200"
      },
      "message": "Add guava dependency to modules that need it (#21)\n\n- guava dependency came via buildtools previously"
    },
    {
      "commit": "16b1c1532dc2906e0ef3100d8a8afb451a7a9acc",
      "tree": "00f85c291a20a05cc206debe709e011d6c53fdfb",
      "parents": [
        "d87c3ff02839336f3b256afe885825beacf18c13"
      ],
      "author": {
        "name": "Lari Hotari",
        "email": "lhotari@users.noreply.github.com",
        "time": "Wed Jun 16 22:59:36 2021 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 16 21:59:36 2021 +0200"
      },
      "message": "[Build] Fix leakage of buildtools dependency to all libraries (#20)\n\n"
    },
    {
      "commit": "d87c3ff02839336f3b256afe885825beacf18c13",
      "tree": "763ac92f650ecab0f4ede7a8c49c7df5ae1e18da",
      "parents": [
        "019454f1a4154dba44b4e9b54b7a248dfcb69b49"
      ],
      "author": {
        "name": "Lari Hotari",
        "email": "lhotari@users.noreply.github.com",
        "time": "Wed Jun 16 10:33:40 2021 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 16 15:33:40 2021 +0800"
      },
      "message": "Pulsar Log4j2 Appender: allow configuration of the client (#17)\n\nFixes #15, #16\r\n\r\n### Motivation\r\n\r\nWhen Pulsar security is enabled, the current implementation is unusable. This PR also covers the feature request #16 to allow configuring most client and producer configuration properties.\r\nThe issue #15 makes the Pulsar Log4j2 Appender unusable in many use cases. This PR fixes the issue by removing the hard coded producer name.\r\nThe current build for Pulsar Log4j2 Appender is broken. This PR fixes the build by properly configuring Log4j2 plugin annotation processor for the maven build. There were broken tests which were unnecessary and testing Log4j2 internals instead of the appender. Those tests have been removed\r\n\r\n### Modifications\r\n\r\n- add support for configuring Pulsar client and producer configuration properties (#16)\r\n- fix maven build (Log4j2 plugin annotation processor)\r\n- remove broken tests which were unnecessary\r\n- remove the hard coded producer name which prevented using the appender in many use cases (#15)"
    },
    {
      "commit": "019454f1a4154dba44b4e9b54b7a248dfcb69b49",
      "tree": "0d2342fcaf70de7a10eebf66ab10c6a0915d45f4",
      "parents": [
        "0372947e326278a60915b0a647270ebc7ab33620"
      ],
      "author": {
        "name": "Lari Hotari",
        "email": "lhotari@users.noreply.github.com",
        "time": "Wed Jun 16 10:29:27 2021 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 16 15:29:27 2021 +0800"
      },
      "message": "[Build] Upgrade Pulsar dependency to 2.8.0 and fix build errors (#18)\n\n"
    },
    {
      "commit": "0372947e326278a60915b0a647270ebc7ab33620",
      "tree": "17266cafdbc188b7922e7737ecfb1af22efec5d5",
      "parents": [
        "e3f72a4e6735219492de69ef98e76d16e8b73e0c"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Thu May 13 23:24:29 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 14 08:24:29 2021 +0200"
      },
      "message": "[pulsar-kafka] add auto update partition support to producer/consumer (#13)\n\n"
    },
    {
      "commit": "e3f72a4e6735219492de69ef98e76d16e8b73e0c",
      "tree": "490d03b8b6aa6538f0252ffa470946c318e7ed74",
      "parents": [
        "f82e51f66d5ad6ffe4fe7056449b336b639449ca"
      ],
      "author": {
        "name": "Andrey Yegorov",
        "email": "8622884+dlg99@users.noreply.github.com",
        "time": "Sun Apr 11 01:30:50 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 11 10:30:50 2021 +0200"
      },
      "message": "Feature: Run Kafka streams app with Pulsar (#10)\n\n"
    },
    {
      "commit": "f82e51f66d5ad6ffe4fe7056449b336b639449ca",
      "tree": "eadd32a2216f5a83d0f50817086474b85bc5ef4d",
      "parents": [
        "80d75af7991032914651595f47a22df264d62363"
      ],
      "author": {
        "name": "Andrey Yegorov",
        "email": "8622884+dlg99@users.noreply.github.com",
        "time": "Thu Apr 08 09:02:33 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 08 18:02:33 2021 +0200"
      },
      "message": "build pulsar-adaptors with pulsar-2.8-snapshot (#9)\n\n"
    },
    {
      "commit": "80d75af7991032914651595f47a22df264d62363",
      "tree": "56717cbbb2d7c47d10677620afa23a26017d0578",
      "parents": [
        "789b152b0bbeec5682c7d3ab5791f149352d6d35"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Wed Nov 11 17:45:46 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 12 08:45:46 2020 +0800"
      },
      "message": "Move examples and tests from main repo here (#3)\n\n"
    },
    {
      "commit": "789b152b0bbeec5682c7d3ab5791f149352d6d35",
      "tree": "da2ceb49f5c2e736978227cde37fb1d3eb18f951",
      "parents": [
        "615c576b87fc74ff62efa189281abf7d85fc8af0"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Wed Nov 11 09:57:58 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 11 09:57:58 2020 -0700"
      },
      "message": "Fix checkstyle issue on pulsar-spark module (#2)\n\n*Motivation*\r\n\r\nEnable checkstyle plugin on pulsar-spark module and fix all the issues."
    },
    {
      "commit": "615c576b87fc74ff62efa189281abf7d85fc8af0",
      "tree": "5ef8a223c89c87cde51caf84b2731d64da510e1c",
      "parents": [
        "3099d6233cfa804a959a93337a647b8e79406430"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Fri Nov 06 10:32:50 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 10:32:50 2020 -0700"
      },
      "message": "Build pulsar-adapters (#1)\n\n* Build pulsar-adapters"
    },
    {
      "commit": "3099d6233cfa804a959a93337a647b8e79406430",
      "tree": "164e6b20883596217c0ca659f399876887a9d29a",
      "parents": [
        "0f2a3402e2f9194a15962d3d0261e5a9fb79d303"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Sun Apr 12 13:20:45 2020 -0700"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Fri Nov 06 02:33:29 2020 -0700"
      },
      "message": "Initialize pulsar-adapters project\n"
    },
    {
      "commit": "0f2a3402e2f9194a15962d3d0261e5a9fb79d303",
      "tree": "bdb59f9776ea46206f05b968893815548f096606",
      "parents": [
        "aaf3b6b69c4ea5eda716231084b692c3e284dfb1"
      ],
      "author": {
        "name": "Enrico Olivelli",
        "email": "eolivelli@gmail.com",
        "time": "Thu Oct 29 08:24:07 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 15:24:07 2020 +0800"
      },
      "message": "Allow building Apache Pulsar on JDK15+ - upgrade Maven Assembly Plugin (#8360)\n\nMotivation\r\nCurrently Pulsar does not build on JDK15\r\n\r\nModifications\r\nupdate Maven Assembly plugin\r\nmove maven-git-commit-id plugin execution only inside Pulsar Common (in order to speed up the build)\r\nupgrading the Maven Assembly Plugin resulted in a different output for the \"binaries\", I had to update license files\r\nforced version of Jersey to 2.31 in \"Presto\" distribution (otherwise the license check failed, because it does not handle different versions between main pulsar binaries and presto distribution inside lib/presto/lib, and this makes sense to me)\r\nVerifying this change\r\nThis change is already covered by existing tests\r\n\r\n\r\n* Allow to build Pulsar on JDK14+\r\n- update Apache Maven Assembly Plugin\r\n- use explicit import for Record class (prevent clash with java.lang.Record)\r\n\r\n* revert Apache pom update\r\n\r\n* fix\r\n\r\n* Fix presto distribution - due to maven assembly plugin upgrade\r\n\r\n* fix licenses\r\n\r\n* Fix kafka clients\r\n\r\n* fix LICENSE\r\n\r\nCo-authored-by: Enrico Olivelli \u003cenrico.olivelli@diennea.com\u003e\r\nCo-authored-by: Enrico Olivelli \u003ceolivelli@apache.org\u003e"
    },
    {
      "commit": "aaf3b6b69c4ea5eda716231084b692c3e284dfb1",
      "tree": "74e575de5ece773305880038d729b004abeb3391",
      "parents": [
        "b031fee8a519bca42be0f04fd4a7ff30482f9ef8"
      ],
      "author": {
        "name": "Jia Zhai",
        "email": "zhaijia@apache.org",
        "time": "Fri Oct 23 14:36:13 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 14:36:13 2020 +0800"
      },
      "message": "Remove bouncy castle shaded module to avoid bring error of verifySingleJar (#7453)\n\n### Motivation\r\n\r\nshade bouncy castle will cause some signature errors, this PR tries to remove the bouncy castle shaded module.\r\n\r\nHere is the related error stack:\r\n```\r\n10:01:34.257 [pulsar-client-io-33-1] ERROR org.apache.pulsar.client.impl.ConsumerImpl - MessageCryptoBc may not included in the jar. e:\r\njava.lang.SecurityException: JCE cannot authenticate the provider BC\r\n\tat javax.crypto.Cipher.getInstance(Cipher.java:657) ~[?:1.8.0_121]\r\n\tat javax.crypto.Cipher.getInstance(Cipher.java:596) ~[?:1.8.0_121]\r\n\tat org.apache.pulsar.client.impl.crypto.MessageCryptoBc.\u003cinit\u003e(MessageCryptoBc.java:147) ~[classes/:?]\r\n\tat org.apache.pulsar.client.impl.ConsumerImpl.\u003cinit\u003e(ConsumerImpl.java:270) ~[classes/:?]\r\n\tat org.apache.pulsar.client.impl.ConsumerImpl.newConsumerImpl(ConsumerImpl.java:209) ~[classes/:?]\r\n\tat org.apache.pulsar.client.impl.PulsarClientImpl.lambda$doSingleTopicSubscribeAsync$5(PulsarClientImpl.java:364) ~[classes/:?]\r\n\tat java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:656) ~[?:1.8.0_131]\r\n\tat java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632) ~[?:1.8.0_131]\r\n...\r\n\r\nCaused by: java.util.jar.JarException: file:/Users/jia/.m2/repository/org/apache/pulsar/bouncy-castle-bc-shaded/2.7.0-SNAPSHOT/bouncy-castle-bc-shaded-2.7.0-SNAPSHOT.jar has unsigned entries - org/bouncycastle/cert/AttributeCertificateHolder.class\r\n\tat javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:500) ~[?:1.8.0_121]\r\n\tat javax.crypto.JarVerifier.verifyJars(JarVerifier.java:361) ~[?:1.8.0_121]\r\n\tat javax.crypto.JarVerifier.verify(JarVerifier.java:289) ~[?:1.8.0_121]\r\n\tat javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:159) ~[?:1.8.0_121]\r\n\tat javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:185) ~[?:1.8.0_121]\r\n\tat javax.crypto.Cipher.getInstance(Cipher.java:653) ~[?:1.8.0_121]\r\n```\r\n\r\n### Modifications\r\n\r\n- Remove bouncy castle shaded module, avoid package bouncy castle into a dependency jar.\r\n- enhance test case to identify this error.\r\n\r\n### Verifying this change\r\n\r\nut passed.\r\n\r\n\r\n* remove dep of bc-shaded from other module\r\n\r\n* remove bc-shaded module\r\n\r\n* enhance testECDSAEncryption and testRSAEncryption to cover error case\r\n\r\n* fix license check\r\n\r\n* remove bc-shaded module\r\n\r\n* build a jar in jar to avoid break bc signature\r\n\r\n* use new bc dependency by classifier in maven\r\n\r\n* build pulsar-all docker image instead of pull from dockerhub in integration tests\r\n\r\n* remove nar\r\n\r\n* fix licence, fix error brings in #7640\r\n\r\n* add bc when broker/client is referenced in pom\r\n\r\n* add missing bc reference in pom\r\n\r\n* change ci back to not build docker image"
    },
    {
      "commit": "b031fee8a519bca42be0f04fd4a7ff30482f9ef8",
      "tree": "cf18077e655102fe6e582b3b2e208ea2515f279f",
      "parents": [
        "3893e32574575c98c50b8b6a2ccc5aa7fdc3e4f6"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Fri Oct 02 14:34:29 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 17:34:29 2020 -0400"
      },
      "message": "[pulsar-admin] allow to get ledger metadata along with topic stats-internal (#8180)\n\n### Motivation\r\n\r\nPulsar-admin api and CLI utility is a tool used for operational and system debugging purpose. `pulsar-admin topics stats-internal` command gives internals of the topic and it also shows list of ledgers where data has been written. However, sometimes operation team wants to know more details about ledgers such as : number of ensembles and list of bookies which own the ledger to find out issue with faulty bookie. right now, we have to use zookeeper-shell utility and read znode value to fetch such information. \r\nSo, it would be useful if ledger-info also has ledger-metadata and we can get it from pulsar-admin CLI.\r\n\r\n### Modification\r\n- Added ledger metadata into ledger-info response of the `topics stats-internal` command.\r\n- user can pass additional flag to add ledger metadata else user will not see any change in output of `topics stats-internal`\r\n\r\n### Result\r\n```\r\n./bin/pulsar-admin persistent stats-internal \u003ctopic\u003e -m\r\n:\r\n {\r\n    \"ledgerId\" : 23,\r\n    \"entries\" : 200,\r\n    \"size\" : 11100,\r\n    \"offloaded\" : false,\r\n    \"metadata\" : \"LedgerMetadata{formatVersion\u003d3, ensembleSize\u003d2, writeQuorumSize\u003d2, ackQuorumSize\u003d2, state\u003dCLOSED, length\u003d11100, lastEntryId\u003d199, digestType\u003dCRC32C, password\u003dOMITTED, ensembles\u003d{0\u003d[1.1.1.1:3182, 2.2.2.2:3181], 100\u003d[1.1.1.1:3182, 3.3.3.3:3181]}, customMetadata\u003d{component\u003dbase64:bWFuYWdlZC1sZWRnZXI\u003d, pulsar/managed-ledger\u003dbase64:c2FtcGxlL3N0YW5kYWxvbmUvbnMxL3BlcnNpc3RlbnQvdDE\u003d}}\"\r\n  }\r\n```"
    },
    {
      "commit": "3893e32574575c98c50b8b6a2ccc5aa7fdc3e4f6",
      "tree": "c21b861c2515ea455c7f03dae27374abbaed2f2d",
      "parents": [
        "22e1978458908ee28dd2e6bf6d3e3af8ff894bb5"
      ],
      "author": {
        "name": "Frank J Kelly",
        "email": "kellyfj@gmail.com",
        "time": "Tue Sep 29 23:35:32 2020 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 11:35:32 2020 +0800"
      },
      "message": "Fix JavaDoc issues. Spotted by IntelliJ (#8054)\n\nIssues spotted by IntelliJ\r\n\r\n### Motivation\r\nIntelliJ complains and highlights these issues\r\n\r\n### Modifications\r\nSync JavaDoc with code\r\n\r\n### Verifying this change\r\nThis change is a trivial rework / code cleanup without any test coverage."
    },
    {
      "commit": "22e1978458908ee28dd2e6bf6d3e3af8ff894bb5",
      "tree": "ce4615de248ca085326d262a7283e0133395d937",
      "parents": [
        "397ee00e51b44c0dbbda023398e6ea00e71e2192"
      ],
      "author": {
        "name": "feynmanlin",
        "email": "feynmanlin@tencent.com",
        "time": "Mon Aug 17 21:08:37 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 21:08:37 2020 +0800"
      },
      "message": "Support acknowledging a list of messages (#7688)\n\nFixes #7626\r\n\r\n\r\n### Motivation\r\nExpose `MessagesImpl` ，so that we can ack list of messages by using `CompletableFuture\u003cVoid\u003e acknowledgeAsync(Messages\u003c?\u003e messages)`\r\n\r\n\r\n### Modifications\r\nChange the visibility level of the method from protect to public\r\n\r\n### Verifying this change\r\nunit test:\r\norg.apache.pulsar.client.api.ConsumerBatchReceiveTest#testBatchAck\r\n\r\n"
    },
    {
      "commit": "397ee00e51b44c0dbbda023398e6ea00e71e2192",
      "tree": "a16e093313541c931a720e2f9b02b01d52e61f23",
      "parents": [
        "ba071baf263a9c42bd43fe5a065c8dee6111889e"
      ],
      "author": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Mon Jul 27 09:36:39 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 09:36:39 2020 -0700"
      },
      "message": "Avoid dependency on Apache HTTP client for TLS hostname verifier (#7612) (#7664)\n\n"
    },
    {
      "commit": "ba071baf263a9c42bd43fe5a065c8dee6111889e",
      "tree": "8e1d81e74022802a76ccf336006423bc689067cf",
      "parents": [
        "3e15a9d766ba70bb66bc31eb873c7d5ebb197d7c"
      ],
      "author": {
        "name": "Varghese Cottagiri",
        "email": "varghese.cottagiri@zafin.com",
        "time": "Thu Jul 16 01:24:26 2020 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 22:24:26 2020 -0700"
      },
      "message": "#5922 - Update poms to use project.groupId instead of org.apache.pulsar where applicable (#7548)\n\n"
    },
    {
      "commit": "3e15a9d766ba70bb66bc31eb873c7d5ebb197d7c",
      "tree": "536a4f4407337a26f4678ff943e4d3b9b2af63ab",
      "parents": [
        "b6633313bf65df31e8bca32e7db64c69c77d7dc0"
      ],
      "author": {
        "name": "lipenghui",
        "email": "penghui@apache.org",
        "time": "Thu Jun 11 16:30:26 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 16:30:26 2020 +0800"
      },
      "message": "Bumped version to 2.7.0-SNAPSHOT (#7233)\n\n* Bumped version to 2.7.0-SNAPSHOT"
    },
    {
      "commit": "b6633313bf65df31e8bca32e7db64c69c77d7dc0",
      "tree": "33c8697204290283733373eaa61d743ff275e6c7",
      "parents": [
        "b67247b2cc5be288c70cc1e1fc18f049c3acf5f5"
      ],
      "author": {
        "name": "lipenghui",
        "email": "penghui@apache.org",
        "time": "Wed Jun 10 07:13:41 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 07:13:41 2020 +0800"
      },
      "message": "Fix apache rat check (#7225)\n\n"
    },
    {
      "commit": "b67247b2cc5be288c70cc1e1fc18f049c3acf5f5",
      "tree": "7b687e277fbe3d8156cb39c8020734be4c548c55",
      "parents": [
        "1c40b74d795a6f10ba73cbfbae61c6042c99a25d"
      ],
      "author": {
        "name": "liudezhi",
        "email": "33149602+liudezhi2098@users.noreply.github.com",
        "time": "Mon Jun 08 13:26:04 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 13:26:04 2020 +0800"
      },
      "message": "Fix kafka_0_9 Consumer partition topic throw error (#7179)\n\nMaster Issue: #7178\r\n## Motivation\r\n\r\nWhen using pulsar-client-kafka_0_9 version to consume partition topic， will throw java.lang.ClassCastException,  \r\nbecause \r\n```\r\norg.apache.pulsar.client.impl.TopicMessageIdImpl cannot be cast to org.apache.pulsar.client.impl.MessageIdImpl\r\n```\r\n## Modifications\r\nBrokerService\r\n```java\r\n public void subscribe(List\u003cString\u003e topics, ConsumerRebalanceListener callback) {\r\n        List\u003cCompletableFuture\u003corg.apache.pulsar.client.api.Consumer\u003cbyte[]\u003e\u003e\u003e futures \u003d new ArrayList\u003c\u003e();\r\n\r\n        List\u003cTopicPartition\u003e topicPartitions \u003d new ArrayList\u003c\u003e();\r\n        try {\r\n            for (String topic : topics) {\r\n                // Create individual subscription on each partition, that way we can keep using the\r\n                // acknowledgeCumulative()\r\n                int numberOfPartitions \u003d ((PulsarClientImpl) client).getNumberOfPartitions(topic).get();\r\n\r\n                ConsumerBuilder\u003cbyte[]\u003e consumerBuilder \u003d PulsarConsumerKafkaConfig.getConsumerBuilder(client, properties);\r\n                consumerBuilder.subscriptionType(SubscriptionType.Failover);\r\n                consumerBuilder.messageListener(this);\r\n                consumerBuilder.subscriptionName(groupId);\r\n                //consumerBuilder.topics(topics);\r\n                if (numberOfPartitions \u003e 1) {\r\n                    // Subscribe to each partition\r\n                    consumerBuilder.consumerName(ConsumerName.generateRandomName());\r\n                    for (int i \u003d 0; i \u003c numberOfPartitions; i++) {\r\n                        String partitionName \u003d TopicName.get(topic).getPartition(i).toString();\r\n                        CompletableFuture\u003corg.apache.pulsar.client.api.Consumer\u003cbyte[]\u003e\u003e future \u003d consumerBuilder.clone()\r\n                                .topic(partitionName).subscribeAsync();\r\n                        int partitionIndex \u003d i;\r\n                        TopicPartition tp \u003d new TopicPartition(\r\n                                TopicName.get(topic).getPartitionedTopicName(),\r\n                                partitionIndex);\r\n                        futures.add(future.thenApply(consumer -\u003e {\r\n                            log.info(\"Add consumer {} for partition {}\", consumer, tp);\r\n                            consumers.putIfAbsent(tp, consumer);\r\n                            return consumer;\r\n                        }));\r\n                        topicPartitions.add(tp);\r\n```\r\nWe should remove consumerBuilder.topics(topics)。"
    },
    {
      "commit": "1c40b74d795a6f10ba73cbfbae61c6042c99a25d",
      "tree": "0fb745664dbc08b81f911009a48f97c047108743",
      "parents": [
        "3234e14128001cc853d7fdfe4db787cf14f994b9"
      ],
      "author": {
        "name": "Neng Lu",
        "email": "nlu@streamnative.io",
        "time": "Mon May 18 23:11:42 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 14:11:42 2020 +0800"
      },
      "message": "[Issue 4803][client] return null if the message value/data is not set by producer (#6379)\n\nFixes #4803 \r\n\r\n### Motivation\r\nAllow the typed consumer receive messages with `null` value if the producer sends message without payload.\r\n\r\n### Modifications\r\n- add a flag in `MessageMetadata` to indicate if the payload is set when the message is created\r\n- check and return `null` if the flag is not set when reading data from a message"
    },
    {
      "commit": "3234e14128001cc853d7fdfe4db787cf14f994b9",
      "tree": "ae7796c83db61eb2467d9d90a27b57c094a01da7",
      "parents": [
        "8786f5ed2f86f0d4bb09182c43adc568db71c808"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Mon May 18 21:53:36 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 21:53:36 2020 -0700"
      },
      "message": "[pulsar-storm] Fix: Authentication is failing with storm adapter (#6782)\n\n### Motivation\r\nIn #4284, made [Authentication](https://github.com/apache/pulsar/blob/master/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Authentication.java#L33) a transient under ClientConfigurationData. `Authentication` is a serializable class because ClientConfig is used in Storm and Spark adapter to pass client configuration and Storm serializes and deserializes spout and bolt while executing them in topology. Now, after making `Authentication` transient variable storm always deserializes it as null and authentication fails. Also `Authentication` is a serializable class so, any auth-implementation must be serializable.\r\n\r\n### Modification\r\nKeep Authentication param serializable.\r\n\r\n### Result\r\nIt fixes pulsar-storm with authentication enabled."
    },
    {
      "commit": "8786f5ed2f86f0d4bb09182c43adc568db71c808",
      "tree": "5160a582dc4944be268e291d45cc973d1de5a468",
      "parents": [
        "2e84a7216cfbc8802421a2d00ba8fb30bdf20d68"
      ],
      "author": {
        "name": "luceneReader",
        "email": "541313806@qq.com",
        "time": "Sat Apr 25 14:47:56 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 14:47:56 2020 +0800"
      },
      "message": "Make messageReceiveTimeoutMs in the PulsarConsumerSource configurable (#6783)\n\nThe messageReceiveTimeoutMs value in the PulsarConsumerSource class is hardcoded to 100ms and cannot be altered through configuration at present."
    },
    {
      "commit": "2e84a7216cfbc8802421a2d00ba8fb30bdf20d68",
      "tree": "f137cd40281ec143d7a432138d5eb334b05d8100",
      "parents": [
        "657701a2b33dc7e4a32c903ca5ff4987a2c54013"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Thu Apr 09 12:06:52 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 12:06:52 2020 -0700"
      },
      "message": "Update the status of pulsar-flink connector (#6657)\n\n"
    },
    {
      "commit": "657701a2b33dc7e4a32c903ca5ff4987a2c54013",
      "tree": "a00aff4f03ade664ebe25665dccfe4b9b525492e",
      "parents": [
        "c03310dfbd09806944ad512e1933ff90aab969c3"
      ],
      "author": {
        "name": "liudezhi",
        "email": "33149602+liudezhi2098@users.noreply.github.com",
        "time": "Tue Apr 07 02:17:01 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 11:17:01 2020 -0700"
      },
      "message": "Support Consumers Set Custom Retry Delay (#6449)\n\n\u003c!--\r\n### Contribution Checklist\r\n  \r\n  - Name the pull request in the form \"[Issue XYZ][component] Title of the pull request\", where *XYZ* should be replaced by the actual issue number.\r\n    Skip *Issue XYZ* if there is no associated github issue for this pull request.\r\n    Skip *component* if you are unsure about which is the best component. E.g. `[docs] Fix typo in produce method`.\r\n\r\n  - Fill out the template below to describe the changes contributed by the pull request. That will give reviewers the context they need to do the review.\r\n  \r\n  - Each pull request should address only one issue, not mix up code from multiple issues.\r\n  \r\n  - Each commit in the pull request has a meaningful commit message\r\n\r\n  - Once all items of the checklist are addressed, remove the above text and this checklist, leaving only the filled out template below.\r\n\r\n**(The sections below can be removed for hotfixes of typos)**\r\n--\u003e\r\n\r\n\r\nMaster Issue: #6448\r\n\r\n### Motivation\r\n\r\n\r\nFor many online business systems, various exceptions usually occur in business logic processing, so the message needs to be re-consumed, but users hope that this delay time can be controlled flexibly. The current user\u0027s processing method is usually to send this message to a special retry topic, because production can specify any delay, so consumers subscribe the business topic and retry topic at the same time. I think this logic can be supported by pulsar itself, making it easier for users to use, and it looks like this is a very common requirement.\r\n\r\n### Modifications\r\n\r\nThis change can be supported on the client side,  need to add a set of interfaces to org.apache.pulsar.client.api.Consumer\r\n```java\r\nvoid reconsumeLater(Message\u003c?\u003e message, long delayTime, TimeUnit unit) throws PulsarClientException;\r\nCompletableFuture\u003cVoid\u003e reconsumeLaterAsync(Message\u003c?\u003e message, long delayTime, TimeUnit unit);\r\nCompletableFuture\u003cVoid\u003e reconsumeLaterAsync(Messages\u003c?\u003e messages, int delayLevel);\r\n```\r\nDeadLetterPolicy add retry topic\r\n```java\r\npublic class DeadLetterPolicy {\r\n\r\n    /**\r\n     * Maximum number of times that a message will be redelivered before being sent to the dead letter queue.\r\n     */\r\n    private int maxRedeliverCount;\r\n\r\n    /**\r\n     * Name of the retry topic where the failing messages will be sent.\r\n     */\r\n    private String retryLetterTopic;\r\n\r\n    /**\r\n     * Name of the dead topic where the failing messages will be sent.\r\n     */\r\n    private String deadLetterTopic;\r\n\r\n}\r\n\r\n```\r\norg.apache.pulsar.client.impl.ConsumerImpl add a retry producer\r\n```java\r\n  private volatile Producer\u003cT\u003e deadLetterProducer;\r\n\r\n  private volatile Producer\u003cT\u003e retryLetterProducer;\r\n```\r\nCan specify whether to enable retry when creating a consumer，default unenable\r\n```java\r\n    @Override\r\n    public ConsumerBuilder\u003cT\u003e enableRetry(boolean retryEnable) {\r\n        conf.setRetryEnable(retryEnable);\r\n        return this;\r\n    }\r\n```\r\n\r\n"
    },
    {
      "commit": "c03310dfbd09806944ad512e1933ff90aab969c3",
      "tree": "443ee716b3580763ab6d6476688447e447504892",
      "parents": [
        "72a71f2d903127c65e426db9d329b63d0c87e32f"
      ],
      "author": {
        "name": "Yijie Shen",
        "email": "henry.yijieshen@gmail.com",
        "time": "Fri Mar 27 19:31:06 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 19:31:06 2020 +0800"
      },
      "message": "Number of placeholder doesn\u0027t match number of arguments in logging (#6618)\n\n"
    },
    {
      "commit": "72a71f2d903127c65e426db9d329b63d0c87e32f",
      "tree": "28791d0f3147b18a4c22fc780c5efc4b6136736b",
      "parents": [
        "d8c623b10f2acdf18a3cd3a6ccabaad07d1f964a"
      ],
      "author": {
        "name": "duli559",
        "email": "554979476@qq.com",
        "time": "Thu Mar 26 19:00:25 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 19:00:25 2020 +0800"
      },
      "message": "ISSUE-5934: Support read/write properties from/to Message in flink pulsar consumer/producer (#5955)\n\nFix #5934\r\n\r\nMotivation\r\nSupport read/write properties from/to Message in flink pulsar consumer/producer, and you can override it in your derived class\r\n\r\nModifications\r\n\r\n1. modify `PulsarConsumerSource.deserialize` access right from \u0027private\u0027 to \u0027protected\u0027.\r\n2. add method `protected Map\u003cString, String\u003e generateProperties(T value)` in class `FlinkPulsarProducer`, and invoked in `TypedMessageBuilder.properties()` to add it in pulsar Message.\r\n\r\n* fix unit test failure\r\n\r\nCo-authored-by: herodu \u003cherodu@tencent.com\u003e\r\nCo-authored-by: Sijie Guo \u003csijie@apache.org\u003e\r\nCo-authored-by: duli \u003c554979476@163.com\u003e"
    },
    {
      "commit": "d8c623b10f2acdf18a3cd3a6ccabaad07d1f964a",
      "tree": "0fe8470e2a5373aceca049f2eb0347f978322289",
      "parents": [
        "2d171957af174e60637d566b9d0db6f39034a746"
      ],
      "author": {
        "name": "Yijie Shen",
        "email": "henry.yijieshen@gmail.com",
        "time": "Wed Mar 11 09:31:00 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 18:31:00 2020 -0700"
      },
      "message": "[Maven Cleanup] Remove managed-ledger and zk-utils test-jar dependencies when possible (#6513)\n\nCurrently, many modules depend on `managed-ledger-test.jar` just because they want to use MockBookkeeper and MockZookeeper.  This made module dependencies hard to understand and track.\r\n\r\nThis PR introduces a new `testmocks` module and pulls all mocks from managed-ledger tests into the new module."
    },
    {
      "commit": "2d171957af174e60637d566b9d0db6f39034a746",
      "tree": "8fb69f14d6f0675f7863119f8e54733c6d66cdb8",
      "parents": [
        "0a8864a36c97b7dd17feeabd4b112dbac6045843"
      ],
      "author": {
        "name": "congbo",
        "email": "39078850+congbobo184@users.noreply.github.com",
        "time": "Fri Mar 06 14:28:30 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 22:28:30 2020 -0800"
      },
      "message": "Independent schema is set for each consumer generated by topic (#6356)\n\n### Motivation\r\n\r\nMaster Issue: #5454 \r\n\r\nWhen one Consumer subscribe multi topic, setSchemaInfoPorvider() will be covered by the consumer generated by the last topic.\r\n\r\n### Modification\r\nclone schema for each consumer generated by topic.\r\n### Verifying this change\r\nAdd the schemaTest for it."
    },
    {
      "commit": "0a8864a36c97b7dd17feeabd4b112dbac6045843",
      "tree": "cf9ead8979626a09142940c72afaf82f55a8fd02",
      "parents": [
        "3bd10d0c7f6af73d6cba5d3d721de96c3f6f5a25"
      ],
      "author": {
        "name": "Yijie Shen",
        "email": "henry.yijieshen@gmail.com",
        "time": "Sun Mar 01 17:28:56 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 17:28:56 2020 +0800"
      },
      "message": "[Flink-Connector]Get PulsarClient from cache should always return an open instance (#6436)\n\n\r\n"
    },
    {
      "commit": "3bd10d0c7f6af73d6cba5d3d721de96c3f6f5a25",
      "tree": "86b186428200048ff8dfffd55dda4a01f2e7cda6",
      "parents": [
        "40b305c587cb741b2a638f53fe46efe385872d47"
      ],
      "author": {
        "name": "Yijie Shen",
        "email": "henry.yijieshen@gmail.com",
        "time": "Fri Feb 21 14:20:14 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 20 22:20:14 2020 -0800"
      },
      "message": "[Pulsar-Client] Stop shade snappy-java in pulsar-client-shaded (#6375)\n\nFixes #6260 \r\n\r\nSnappy, like other compressions (LZ4, ZSTD), depends on native libraries to do the real encode/decode stuff. When we shade them in a fat jar, only the java implementations of snappy class are shaded, however, left the JNI incompatible with the underlying c++ code.\r\n\r\nWe should just remove the shade for snappy, and let maven import its lib as a dependency.\r\n\r\nI\u0027ve tested the shaded jar locally generated by this pr, it works for all compression codecs."
    },
    {
      "commit": "40b305c587cb741b2a638f53fe46efe385872d47",
      "tree": "5046d21021e4d2b7d0280b97ca1afa42fdf9eb6f",
      "parents": [
        "0144e86f84b07ceb321d7a2cf88cab3df67062c0"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Sun Feb 09 17:31:11 2020 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 10 09:31:11 2020 +0800"
      },
      "message": "[pulsar-kafka] support block-producer on queue-full with sendTimeOut configuration (#6139)\n\n### Motivation\r\nRight now, pulsar-kafka producer block the publish when queue is full if `sendTimeOut \u003e 0`. However, we have multiple users who want to configure `sendTimeOut` but doesn\u0027t want to block the thread and need immediate failure.\r\nSo, add option to configure `BLOCK_IF_PRODUCER_QUEUE_FULL` and it will not impact existing behavior because if the `BLOCK_IF_PRODUCER_QUEUE_FULL` doesn\u0027t exist then it will fallback to existing behavior."
    },
    {
      "commit": "0144e86f84b07ceb321d7a2cf88cab3df67062c0",
      "tree": "b2a4c0db2625fb928e8e7565fcc1fa07bb50e51f",
      "parents": [
        "e671435317cd2d5880e6f462f7381f403633db88"
      ],
      "author": {
        "name": "David Willcox",
        "email": "dawaddrgrd-github@yahoo.com",
        "time": "Mon Feb 03 12:03:19 2020 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 03 10:03:19 2020 -0800"
      },
      "message": "[Issue 6024][pulsar_storm] PulsarSpout emit to multiple streams (#6039)\n\nFixes #6024\r\n\r\n### Motivation\r\nThis is all described in detail in https://github.com/apache/pulsar/issues/6024, but in short, an insurmountable obstacle to using Pulsar in our storm topology is the fact that `PulsarSpout` only emits to the \"default\" stream. In our environment, we need to emit on different streams based on the content of each received message. This change extends `PulsarSpout` to recognize a `Values` extension that specifies an alternate output stream, and uses that stream when given.\r\n\r\n### Modifications\r\nA new `PulsarTuple` class is added. It extends `Values` and adds a method to return the output stream.\r\n\r\nWhen emitting a tuple after calling `toValues(msg)`, `PulsarSpout` checks if the returned `Values` is a `PulsarTuple`. If so, it emits to the designated stream, otherwise it emits as before."
    },
    {
      "commit": "e671435317cd2d5880e6f462f7381f403633db88",
      "tree": "e4c46bdd219ed44a0f0b8d80f4a0c54cc40c00d5",
      "parents": [
        "560d9a21c978b729b969a6c5a4b0b16e6beb69fa"
      ],
      "author": {
        "name": "Sergii Zhevzhyk",
        "email": "vzhikserg@users.noreply.github.com",
        "time": "Fri Jan 24 22:03:22 2020 +0100"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Fri Jan 24 13:03:22 2020 -0800"
      },
      "message": "Simplify templating in log messages (#6133)\n\n"
    },
    {
      "commit": "560d9a21c978b729b969a6c5a4b0b16e6beb69fa",
      "tree": "46d502b663800d8b91a4583443987352e2e4bcc7",
      "parents": [
        "69dd08719f57f3a65bffa7842f08e1cdcc2319e0"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Tue Jan 14 21:13:39 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 14 21:13:39 2020 +0800"
      },
      "message": "[build] Skip javadoc task for pulsar-client-kafka-compact modules (#5836)\n\n*Motivation*\r\n\r\npulsar-client-kafka-compact depends on pulsar-client implementation hence it pulls in\r\nprotobuf dependencies. This results in `class file for com.google.protobuf.GeneratedMessageV3 not found`\r\nerrors when generating javadoc for those modules.\r\n\r\n*Modifications*\r\n\r\nSkip javadoc tasks for these modules. Because:\r\n\r\n- pulsar-client-kafka-compact is a kafka wrapper. Kafka already provides javadoc for this API.\r\n- we didn\u0027t publish the javadoc for this module."
    },
    {
      "commit": "69dd08719f57f3a65bffa7842f08e1cdcc2319e0",
      "tree": "e6963f985716b01b337c106a6ca527c7c1dba60d",
      "parents": [
        "4f2e1087498643efb260e86fce9cfedd7055cf1a"
      ],
      "author": {
        "name": "Masahiro Sakamoto",
        "email": "massakam@yahoo-corp.jp",
        "time": "Mon Jan 06 13:06:05 2020 +0900"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Mon Jan 06 12:06:05 2020 +0800"
      },
      "message": "Upgrade Avro to 1.9.1 (#5938)\n\n### Motivation\r\n\r\nCurrently, Pulsar uses Avro 1.8.2, a version released two years ago. The latest version of Avro is 1.9.1, which uses FasterXML\u0027s Jackson 2.x instead of Codehaus\u0027s Jackson 1.x. Jackson is prone to security issues, so we should not keep using older versions.\r\nhttps://blog.godatadriven.com/apache-avro-1-9-release\r\n\r\n### Modifications\r\n\r\nAvro 1.9 has some major changes:\r\n\r\n- The library used to handle logical datetime values has changed from Joda-Time to JSR-310 (https://github.com/apache/avro/pull/631)\r\n- Namespaces no longer include \"$\" when generating schemas containing inner classes using ReflectData (https://github.com/apache/avro/pull/283)\r\n- Validation of default values has been enabled (https://github.com/apache/avro/pull/288). This results in a validation error when parsing the following schema:\r\n```json\r\n{\r\n  \"name\": \"fieldName\",\r\n  \"type\": [\r\n    \"null\",\r\n    \"string\"\r\n  ],\r\n  \"default\": \"defaultValue\"\r\n}\r\n```\r\nThe default value of a nullable field must be null (cf. https://issues.apache.org/jira/browse/AVRO-1803), and the default value of the field as above is actually null. However, this PR disables the validation in order to maintain the traditional behavior."
    },
    {
      "commit": "4f2e1087498643efb260e86fce9cfedd7055cf1a",
      "tree": "4d3a545afe5cac693bc1c0e763ae3e35d68d9df1",
      "parents": [
        "e9803b57d9953e9cf14a5ce5ba8f3a40435045cf"
      ],
      "author": {
        "name": "Yijie Shen",
        "email": "henry.yijieshen@gmail.com",
        "time": "Fri Jan 03 21:00:28 2020 +0800"
      },
      "committer": {
        "name": "冉小龙",
        "email": "rxl@apache.org",
        "time": "Fri Jan 03 21:00:28 2020 +0800"
      },
      "message": "[pulsar-flink]Cache Pulsar client to make it shared among tasks in a process (#5900)\n\n* Cache Pulsar client to make it shared among tasks in a process\r\n\r\n* code format \u0026 add tests\r\n\r\n* fix style\r\n\r\nCo-authored-by: Sijie Guo \u003cguosijie@gmail.com\u003e\r\n"
    },
    {
      "commit": "e9803b57d9953e9cf14a5ce5ba8f3a40435045cf",
      "tree": "eb1cd0cbe1a21896ae63f9ec99cfddf1a8dd3156",
      "parents": [
        "119b740dc37b286887639a247689935b1abf374b"
      ],
      "author": {
        "name": "Fred Eisele",
        "email": "phreed@users.noreply.github.com",
        "time": "Thu Dec 19 23:28:49 2019 -0600"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Thu Dec 19 21:28:49 2019 -0800"
      },
      "message": "Added catch for NoClassDefFoundError wherever there was a ClassNotFoundException (#5870)\n\nFixes #5726 \r\n\r\n### Motivation\r\n\r\nWhen running pulsar-io connectors and functions from the Intellij IDE some actions fail\r\ndue to uncaught class-not-found throwables.\r\nThe expectation being that the class is being dynamically loaded and only the ClassNotFoundException will occur if the class is not found.\r\nWhen the function is created or run with https://pulsar.apache.org/docs/en/functions-deploying/#local-run-mode this is indeed the case.\r\nWhen running under the control https://pulsar.apache.org/docs/en/functions-debug/#debug-with-localrun-mode as a gradle plugin the class may already be known and throw a NoClassDefFoundError.\r\nIt seems to me that any time ClassNotFoundException is handled then NoClassDefFoundError should also be caught.\r\n\r\n### Modifications\r\n\r\nWherever there was a `catch (ClassNotFoundException ` I replaced it with \r\n`catch (ClassNotFoundException | NoClassDefFoundError ` .\r\nThere were multiple cases where the ClassNotFoundException were handled e.g. the jar loader failed so the nar loader was used to handle the jar loader\u0027s failure."
    },
    {
      "commit": "119b740dc37b286887639a247689935b1abf374b",
      "tree": "3ba060fd35b891df58d312ac2de1597817c1a039",
      "parents": [
        "27e21b042d29d2a8194951f827585a6ff4972a53"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Mon Dec 09 08:50:21 2019 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 09 08:50:21 2019 -0800"
      },
      "message": "Bump version to 2.6.0 (#5820)\n\n*Motivation*\r\n\r\nBump the development version to 2.6.0-SNAPSHOT"
    },
    {
      "commit": "27e21b042d29d2a8194951f827585a6ff4972a53",
      "tree": "1139041f52ba7b371f069d4ed127ace18b9dd079",
      "parents": [
        "bba8876a3ef86d2f8f77b9067768f1b3874c50f1"
      ],
      "author": {
        "name": "lipenghui",
        "email": "penghui@apache.org",
        "time": "Tue Nov 19 15:30:10 2019 +0800"
      },
      "committer": {
        "name": "Jia Zhai",
        "email": "zhaijia@apache.org",
        "time": "Tue Nov 19 15:30:10 2019 +0800"
      },
      "message": "[PIP-38] Support batch receive in java client. (#4621)\n\nMotivation\r\nSupport messages batch receiving, some application scenarios can be made simpler. Users often increase application throughput through batch operations. For example, batch insert or update database.\r\n\r\nAt present, we provide the ability to receive a single message. If users want to take advantage of batch operating advantages, need to implement a message collector him self. So this proposal aims to provide a universal interface and mechanism for batch receiving messages.\r\n\r\nFor example:\r\n```\r\nMessages messages \u003d consumer.batchReceive();\r\ninsertToDB(messages);\r\nconsumer.acknowledge(messages);\r\nVerifying this change\r\nAdded new UT to verify this change.\r\n```"
    },
    {
      "commit": "bba8876a3ef86d2f8f77b9067768f1b3874c50f1",
      "tree": "c1b06806e6ad0f74ffffd6d8227b7b10f3d80a2d",
      "parents": [
        "e3605d531982e7f26248a1e8ad304ba2bd9f1985"
      ],
      "author": {
        "name": "Like",
        "email": "ke.like@outlook.com",
        "time": "Wed Nov 06 20:33:28 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Wed Nov 06 20:33:28 2019 +0800"
      },
      "message": "Use StandardCharsets.UTF_8 for converting String to bytes (#5372)\n\nUse StandardCharsets.UTF_8 for converting String to bytes to avoid potential encoding error."
    },
    {
      "commit": "e3605d531982e7f26248a1e8ad304ba2bd9f1985",
      "tree": "2081d60362bd8298a6d796e0dde58f3d387191f3",
      "parents": [
        "5416b00e091453d4eb94031a8ac82625ddad5dac"
      ],
      "author": {
        "name": "Yi Tang",
        "email": "ssnailtang@gmail.com",
        "time": "Tue Nov 05 11:07:07 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Tue Nov 05 11:07:07 2019 +0800"
      },
      "message": "expose new message with different schema (#5517)\n\nMaster Issue: #5141 \r\n\r\nExpose new message with different schema interface, which not required same parameterized type with the producer.\r\nSince the producer and messages sent by it may have different inner types, it\u0027s better to have a type agnostic producer interceptor with a checkin method."
    },
    {
      "commit": "5416b00e091453d4eb94031a8ac82625ddad5dac",
      "tree": "dc9f79a2b86319049dcf91112540461e3128b2b5",
      "parents": [
        "c1137a194ae683ae3c80435d851127d63c3e2dcb"
      ],
      "author": {
        "name": "Like",
        "email": "ke.like@outlook.com",
        "time": "Fri Nov 01 04:09:51 2019 +0800"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Thu Oct 31 13:09:51 2019 -0700"
      },
      "message": "[Test] Migrate deprecated Matchers to ArgumentMatchers (#5423)\n\n* Migrate deprecated Matchers to ArgumentMatchers\r\n\r\n* Add ServerCnxTest\r\n\r\n* add PulsarKafkaProducerTest\r\n"
    },
    {
      "commit": "c1137a194ae683ae3c80435d851127d63c3e2dcb",
      "tree": "262cda8ab49e29f31ac2cd1801ab8a2f0528ce2f",
      "parents": [
        "a53ff302139788b6fd36c4d556e55cab8cd58e7a"
      ],
      "author": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Fri Oct 25 09:43:45 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 25 09:43:45 2019 -0700"
      },
      "message": "Use individual netty-* artifacts instead of netty-all (#3613)\n\n"
    },
    {
      "commit": "a53ff302139788b6fd36c4d556e55cab8cd58e7a",
      "tree": "cde8ff518b4d17a3fb9225148bf8872ecdc426ca",
      "parents": [
        "f36c0e43fea59fe806aacaa8cccde0924bf43d1f"
      ],
      "author": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Wed Sep 25 21:01:59 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 25 21:01:59 2019 -0700"
      },
      "message": "Removed managed-ledger-shaded artifact (#4200)\n\n* Removed managed-ledger-shaded artifact\r\n\r\n* Fixed dep artifact renaming error\r\n"
    },
    {
      "commit": "f36c0e43fea59fe806aacaa8cccde0924bf43d1f",
      "tree": "3ec6cd90c4ec6744a2f0dd03137a8ed3c5a3fb58",
      "parents": [
        "512af8f9384806b36a470eaacb2e052a593b212a"
      ],
      "author": {
        "name": "Boyang Jerry Peng",
        "email": "jerry.boyang.peng@gmail.com",
        "time": "Tue Sep 24 13:48:37 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 24 13:48:37 2019 -0700"
      },
      "message": "Fix client backoff (#5261)\n\n* fix client backoff\r\n\r\n* fix tests\r\n\r\n* cleaning up\r\n"
    },
    {
      "commit": "512af8f9384806b36a470eaacb2e052a593b212a",
      "tree": "6c6d69e2b4876832f412a7bd35abae4f94db480a",
      "parents": [
        "2fe60855f97c8e0cf51ab6133ce74c46355ef46f"
      ],
      "author": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Wed Sep 11 14:19:27 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 11 14:19:27 2019 -0700"
      },
      "message": "Fixed spark receiver to account for all the consumer config options (#5152)\n\n"
    },
    {
      "commit": "2fe60855f97c8e0cf51ab6133ce74c46355ef46f",
      "tree": "b526b0d43046742dd019bb8475145a1e2dcc0adc",
      "parents": [
        "b0b1ff8d6577f16f51776d2cc407080a8ec7ccb4"
      ],
      "author": {
        "name": "Rikuo Takahama",
        "email": "mas.null19@gmail.com",
        "time": "Sat Sep 07 00:36:07 2019 +0900"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Fri Sep 06 08:36:07 2019 -0700"
      },
      "message": "Make client keepalive interval configurable on pulsar-client-kafka (#5131)\n\n"
    },
    {
      "commit": "b0b1ff8d6577f16f51776d2cc407080a8ec7ccb4",
      "tree": "9470194f3ab5ff8129dfd2960bae299a3b3b9a14",
      "parents": [
        "d4506c97b676c82ee0c7835bba4164afef118650"
      ],
      "author": {
        "name": "Jia Zhai",
        "email": "zhaijia@apache.org",
        "time": "Sun Aug 18 15:39:37 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Sun Aug 18 15:39:37 2019 +0800"
      },
      "message": "expose getLastMessageId method in ConsumerImpl (#4911)\n\nFixes #4909\r\n### Motivation\r\n\r\nIt would be good to expose method `getLastMessageId` in `ConsumerImpl` to a public method. \r\neg. some times user would like to know the lag messages; or only consume messages before current time.\r\n\r\n### Modifications\r\n\r\n- expose method `getLastMessageId` in consumer api.\r\n- add unit test.\r\n\r\n### Verifying this change\r\nUt passed"
    },
    {
      "commit": "d4506c97b676c82ee0c7835bba4164afef118650",
      "tree": "69113436ae626546181baf5229093a814573e6c0",
      "parents": [
        "9d3996150c455cd87c25237a8346b65bf4a8211e"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Tue Aug 06 09:53:56 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 06 09:53:56 2019 -0700"
      },
      "message": "Add support of pulsar-kafka-adapter for kafka-0.8 api (#4797)\n\n* Add support pulsar-kafka-adapter for kafka-0.8 api\r\n\r\nclean up pulsar-kafka adapter\r\n\r\nadd tests\r\n\r\nadd low level consumer\r\n\r\nadd simple consumer\r\n\r\ncorrected pulsar-client-kafka_0_8\r\n\r\nfix the module name\r\n\r\nadd batch and partitioned-topic support\r\n\r\nfix headers\r\n\r\nadd getOffset api support\r\n\r\nadded pulsarOffset request/response\r\n\r\n clean up\r\n\r\n* add pulsar-kafka integration test\r\n\r\n* use earliestTime offset\r\n\r\n* add default serializer/de\r\n"
    },
    {
      "commit": "9d3996150c455cd87c25237a8346b65bf4a8211e",
      "tree": "f00db8fe6a30c06c848b67adbea5b62c857f8a11",
      "parents": [
        "632cf39466951d946cd781a6b50538b20d443035"
      ],
      "author": {
        "name": "Xiaobing Fang",
        "email": "bingxf@qq.com",
        "time": "Tue Aug 06 11:10:43 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Tue Aug 06 11:10:43 2019 +0800"
      },
      "message": "Add support of pulsar-kafka-adapter for kafka-0.9 api (#4886)\n\nFixes #4791\r\n\r\n**Motivation**\r\n\r\nCurrently the Pulsar Kafka wrapper is using Kafka 0.10.x version. However, there are users who use legacy-kafka version in their system and willing to move to pulsar. This PR provides pulsar-kafka adapter for kafka-api-version 0.9.X. So, this adapter can help users in their migration process from kafka-0.9 to pulsar."
    },
    {
      "commit": "632cf39466951d946cd781a6b50538b20d443035",
      "tree": "185bebbf1413275ad9af3734bbfb60323b3f085d",
      "parents": [
        "4f621df8782ae6c7d2f6a251a34bfeab7b103138"
      ],
      "author": {
        "name": "vzhikserg",
        "email": "vzhikserg@users.noreply.github.com",
        "time": "Mon Jul 29 11:05:57 2019 +0200"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Mon Jul 29 17:05:57 2019 +0800"
      },
      "message": "Perform Checkstyle analysis in the pulsar-flink module (#4832)\n\n* Add maven plugin for style checking. Fix some style violations.\r\n\r\n* Fix issues shown by the style checker in the pulsar-flink module\r\n"
    },
    {
      "commit": "4f621df8782ae6c7d2f6a251a34bfeab7b103138",
      "tree": "f4bf97f637fba38fcac1722542228ad33b01fb93",
      "parents": [
        "27bae1bac3ba909652084215f303cf13b44798be"
      ],
      "author": {
        "name": "vzhikserg",
        "email": "vzhikserg@users.noreply.github.com",
        "time": "Thu Jul 25 18:14:02 2019 +0200"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Thu Jul 25 09:14:02 2019 -0700"
      },
      "message": "Test cleanup and simplification (#4799)\n\n* Simplified assert statements in the tests. Switch to usage of static imports in tests. (Part 1)\r\n\r\n* Simplify assert statements in the tests and use the appropriate assert statements. Switch to usage of static imports in tests. Remove unused imports (Part 2)\r\n"
    },
    {
      "commit": "27bae1bac3ba909652084215f303cf13b44798be",
      "tree": "c7a47d6c10c79caf05daf1ab5da719cca1e3f4cb",
      "parents": [
        "7abf1a41641083507ec257982253d46bc1898c90"
      ],
      "author": {
        "name": "Xiaobing Fang",
        "email": "bingxf@qq.com",
        "time": "Wed Jul 24 09:51:38 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Wed Jul 24 09:51:38 2019 +0800"
      },
      "message": "Fix：PulsarKafkaProducer is not thread safe (#4745)\n\nfix #4707 \r\n\r\n"
    },
    {
      "commit": "7abf1a41641083507ec257982253d46bc1898c90",
      "tree": "6a9c07c59939864d2720a2cf0c1ec0dd05f67d77",
      "parents": [
        "c0bb58d02404f02fd34eaf1c726aa168d90d6e8b"
      ],
      "author": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Tue Jul 09 23:17:07 2019 -0700"
      },
      "committer": {
        "name": "Jia Zhai",
        "email": "zhaijia@apache.org",
        "time": "Wed Jul 10 14:17:07 2019 +0800"
      },
      "message": "Upgrade to Mockito 2.x (#4671)\n\nUpgrading to Mockito 2.28 and PowerMock 2.0. This a pre-step to be able to run CI with Java 11 / 12\r\n\r\n\r\n"
    },
    {
      "commit": "c0bb58d02404f02fd34eaf1c726aa168d90d6e8b",
      "tree": "3eeefea1cb80b6b0d0afcd088f6430f09aef7973",
      "parents": [
        "cba75981f558ddb2446d4923767eee838b2adbd6"
      ],
      "author": {
        "name": "vzhikserg",
        "email": "vzhikserg@users.noreply.github.com",
        "time": "Mon Jul 08 17:08:56 2019 +0200"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Mon Jul 08 08:08:56 2019 -0700"
      },
      "message": "Cleanup in the pulsar-log4j-appender project (#4681)\n\n"
    },
    {
      "commit": "cba75981f558ddb2446d4923767eee838b2adbd6",
      "tree": "8a8736e551d3a605f6605266f0b7f4df390c79d1",
      "parents": [
        "0b61db5a2120e9fd5c5df57cad22cfa384bab23f"
      ],
      "author": {
        "name": "tuteng",
        "email": "eguangning@gmail.com",
        "time": "Mon Jul 08 00:02:26 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Sun Jul 07 12:02:26 2019 -0400"
      },
      "message": "Support Pulsar schema for pulsar kafka client wrapper (#4534)\n\nFixes https://github.com/apache/pulsar/issues/4228\r\n\r\nMaster Issue: https://github.com/apache/pulsar/issues/4228\r\n\r\n### Motivation\r\n\r\nUse Pulsar schema in pulsar kafka client.\r\n\r\n### Modifications\r\n\r\nSupport schema of pulsar for pulsar kafka client\r\n\r\n### Verifying this change\r\n\r\nAdd Unit test"
    },
    {
      "commit": "0b61db5a2120e9fd5c5df57cad22cfa384bab23f",
      "tree": "26f3b43f49f61178617443ab3affd239a0b6e37e",
      "parents": [
        "7a6723e8759bbcde4449dcd2e0e367c8f3aceb70"
      ],
      "author": {
        "name": "Guillaume Rosauro",
        "email": "3407583+willome@users.noreply.github.com",
        "time": "Tue Jul 02 17:51:39 2019 +0200"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Tue Jul 02 08:51:39 2019 -0700"
      },
      "message": "Issue #4638 : Update Kafka connect-api to version 2.3.0 (#4650)\n\n* Issue #4638: Update Kafka connect-api to version 2.3.0\r\n\r\n* remove \u0027block.on.buffer.full\u0027 property (already removed from kafka)\r\n"
    },
    {
      "commit": "7a6723e8759bbcde4449dcd2e0e367c8f3aceb70",
      "tree": "423b1abde6321cae4f87c380a3fd8af0c040e261",
      "parents": [
        "b491857aa2d7f7717ade369d27dea5817aee0167"
      ],
      "author": {
        "name": "lipenghui",
        "email": "penghui@apache.org",
        "time": "Tue Jun 25 19:59:01 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Tue Jun 25 19:59:01 2019 +0800"
      },
      "message": "Bumped version to 2.5.0-SNAPSHOT (#4581)\n\n"
    },
    {
      "commit": "b491857aa2d7f7717ade369d27dea5817aee0167",
      "tree": "7bc3a299001baf2ce8c3eaadbada9a2ae58d51d7",
      "parents": [
        "513940a5be4f87efe39366d14180a65dee08cfbc"
      ],
      "author": {
        "name": "lipenghui",
        "email": "penghui@apache.org",
        "time": "Thu Jun 20 04:47:48 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Wed Jun 19 13:47:48 2019 -0700"
      },
      "message": "Introduce batch message container framework and support key based batching container (#4435)\n\n### Motivation\r\n\r\nIntroduce batch message container framework to support multiple ways to do message batch. \r\nCurrently, pulsar support a most basic batch message container, use the batch message container framework can quickly implement other types batch message container, even users can customize their own batch message container.\r\n\r\nAdd a new batch message container named BatchMessageKeyBasedContainer to support batching message in key_shared subscription mode."
    },
    {
      "commit": "513940a5be4f87efe39366d14180a65dee08cfbc",
      "tree": "3ba50e8dfde31c8d07dc35b05ee8ae0a015848d6",
      "parents": [
        "7e8c0ea9a29fdeab8f0bc0d02a9258d3583f26ac"
      ],
      "author": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Tue Jun 18 02:36:44 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 18 02:36:44 2019 -0700"
      },
      "message": "[pulsar-kafka] Fix KafkaProducerInterceptorWrapper handles LongSerializer (#4549)\n\n*Motivation*\r\n\r\nKafkaProducerInterceptorWrapper uses a LongDeserializer for retrieve deserializer\r\n\r\n*Modifications*\r\n\r\nFix the bug\r\n\r\n*Verify this change*\r\n\r\nAdd unit test to cover the convertion"
    },
    {
      "commit": "7e8c0ea9a29fdeab8f0bc0d02a9258d3583f26ac",
      "tree": "c74ec8fffc4ebf68ae353fd2a466ab7e2deaf76b",
      "parents": [
        "4fe84f7a70c6f6ed306cb508177cf34d721f6b55"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Mon Jun 10 10:03:22 2019 -0700"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Mon Jun 10 10:03:22 2019 -0700"
      },
      "message": "[pulsar-storm] add option to pass consumerConfiguration to PulsarSpout (#4494)\n\n"
    },
    {
      "commit": "4fe84f7a70c6f6ed306cb508177cf34d721f6b55",
      "tree": "3a17227a685480cca005a1d124456b551158e63b",
      "parents": [
        "0916b2a029773dd2f2e3239a22cdd5e76e50050c"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Sun Jun 09 11:07:55 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 09 11:07:55 2019 -0700"
      },
      "message": "[pulsar-storm] pulsar-bolt: add option to pass producer-configuration (#4495)\n\n"
    },
    {
      "commit": "0916b2a029773dd2f2e3239a22cdd5e76e50050c",
      "tree": "607d452c2fd13db84f70c763d432f401ed1698a9",
      "parents": [
        "aaefa501df5e04ec0a88c057bdaca4916e0723c1"
      ],
      "author": {
        "name": "Shivji Kumar Jha",
        "email": "shiv4289@gmail.com",
        "time": "Thu Jun 06 21:17:00 2019 +0530"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Thu Jun 06 08:47:00 2019 -0700"
      },
      "message": "[Issue 4379] [Java Client] Build auth from class and params in PulsarClientImpl (#4381)\n\n* Flink client to accept all pulsar client conf\r\n\r\nIn this patch, we provide handles for flink connecotr to accept ClientConfigurationData, ProducerConfigurationData, ConsumerConfigurationData so flink client can:\r\n1. accept all params of client, producer and consumer\r\n2. Keep pace with pulsar-client\r\n\r\n* Flink client to accept all pulsar client conf\r\n\r\nAdded test cases\r\n\r\n* Removing commented code\r\n\r\n* flink: construct auth when building pulsarsource\r\n\r\n* fixed failing tests\r\n\r\n* removed unused import\r\n\r\n* Added builder defaults for lombok builder\r\nSet Auth from class and params (if set) in PulsarClientImpl.java\r\n\r\n* Remove @BUilder.default from attributes where no defaults exist\r\n\r\n* Added tests for ClientConfiguration Data builders\r\n\r\n* cosmetic changes in code\r\n\r\nCo-Authored-By: Sijie Guo \u003cguosijie@gmail.com\u003e\r\n\r\n* fixing typo\r\n\r\n* Removed test, not true anymore\r\n\r\n* Removed lombok builders\r\n\r\n* fixed the failing tests\r\n\r\n* Because the authentication field is transient, it is not serialized. On desirialization then its null and desirialization crashes with NPE\r\n"
    },
    {
      "commit": "aaefa501df5e04ec0a88c057bdaca4916e0723c1",
      "tree": "1d335a62711b573193c53176c1cd038069343e06",
      "parents": [
        "ee21ad8bf669a200ea97698fd84a7cbd05f2b8f1"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Wed Jun 05 23:58:47 2019 -0700"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Wed Jun 05 23:58:47 2019 -0700"
      },
      "message": "[pulsar-storm] Upgrade storm version to 2.0.0 (#4486)\n\n### Motivation\r\n[Storm-2.0](http://storm.apache.org/2019/05/30/storm200-released.html) has been released now and it has performance improvements. So, upgrading storm version in pulsar-storm so, user can use upgraded pulsar-storm in their topology."
    },
    {
      "commit": "ee21ad8bf669a200ea97698fd84a7cbd05f2b8f1",
      "tree": "35e3ccc219e4578814e9c47cf8881d0d178c0fe6",
      "parents": [
        "e52b037a0af2258452bb8aeaafbba82b66a8a931"
      ],
      "author": {
        "name": "Like",
        "email": "ke.like@outlook.com",
        "time": "Thu May 30 04:09:30 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Wed May 29 13:09:30 2019 -0700"
      },
      "message": "Add missed serialization schema argument for PulsarOutputFormat constructor (#4373)\n\nThe constructor of PulsarOutputFormat expects a serializationSchema passed in otherwise it\u0027s member serializationSchema will be assigned by itself. "
    },
    {
      "commit": "e52b037a0af2258452bb8aeaafbba82b66a8a931",
      "tree": "e55a754fb97c0aa4148281275dcb29bc41fc6631",
      "parents": [
        "edab4eee603c91d31450b9db8a2e4311849b1a46"
      ],
      "author": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Wed May 29 08:31:47 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 29 08:31:47 2019 -0700"
      },
      "message": "Configure static PulsarByteBufAllocator to handle OOM errors (#4196)\n\n* Configure static PulsarByteBufAllocator to handle OOM errors\r\n\r\n* Always specify `pulsar.allocator.exit_on_oom` when starting pulsar services\r\n\r\n* Reverted metrics back\r\n\r\n* Fixed compression tests\r\n\r\n* Explicitely set the underlying allocator to netty default\r\n\r\n* Fixed shading\r\n"
    },
    {
      "commit": "edab4eee603c91d31450b9db8a2e4311849b1a46",
      "tree": "c1448013eabddbe3f318e9fcc5278044ec6a7ffc",
      "parents": [
        "a0a5598def99b80a347560724d358b77992052db"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Mon May 20 13:22:23 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 20 13:22:23 2019 -0700"
      },
      "message": "[pulsar-storm] support reader for pulsar-spout (#4236)\n\n* [pulsar-storm] pulsar-spout can use reader to read message without durable subscription\r\n\r\n* fix test\r\n"
    },
    {
      "commit": "a0a5598def99b80a347560724d358b77992052db",
      "tree": "77fbc8b53c3a454f14433813cf4ef05a64dc5da6",
      "parents": [
        "10a26e168e2158469a3e4bcc5abded1369d720d0"
      ],
      "author": {
        "name": "Shivji Kumar Jha",
        "email": "shiv4289@gmail.com",
        "time": "Sat May 18 17:57:04 2019 +0530"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Sat May 18 05:27:04 2019 -0700"
      },
      "message": "[Issue 4283][flink] construct auth when building pulsar source (#4284)\n\nFixes #4283\r\n\r\n### Motivation\r\n\r\npulsar flink connector now uses ClientConfigData to instantiate pulsar client. Pulsar client composes Authentication which can not be serialized. In an environment with Auth there is no way to set auth in pulsar client.\r\n\r\n### Modifications\r\n\r\nKeep auth params away from persistence and serialization. Construct auth when building pulsar source\r\n"
    },
    {
      "commit": "10a26e168e2158469a3e4bcc5abded1369d720d0",
      "tree": "9494261d2f35be34e97993804204c2a4e5e82554",
      "parents": [
        "0fd0e1ba25c22779c3533dd7873c4fce856b4da6"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Wed May 15 03:05:37 2019 -0700"
      },
      "committer": {
        "name": "Jia Zhai",
        "email": "zhaijia@apache.org",
        "time": "Wed May 15 18:05:37 2019 +0800"
      },
      "message": "[pulsar-storm] add more metrics to troubleshoot spout throughput (#4280)\n\n### Motivation\r\n\r\nMany time user sees lower throughput in pulsar-spout even though standalone consumer can consume such msgRate easily. It would be hard to debug user\u0027s topology without enough information so, adding two metrics which can impact spout throughput.\r\n- number of message filed: spout sleeps when it sees failed message so, it\u0027s important to have visibility of that count\r\n- number of times spout-thread not found the message in queue: spout topology internally sleeps if it doesn\u0027t see any emitted tuple in collector after triggering `nextTuple()` api.\r\n\r\nThis metrics gives more visibility about consumer throughput."
    },
    {
      "commit": "0fd0e1ba25c22779c3533dd7873c4fce856b4da6",
      "tree": "5ff2715f66c9b86c88def7a0b2b1533ea4d9ab6d",
      "parents": [
        "a76e620a23733df0038dc743613806ba3a5e88c1"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Tue May 14 23:44:39 2019 -0700"
      },
      "committer": {
        "name": "Matteo Merli",
        "email": "mmerli@apache.org",
        "time": "Tue May 14 23:44:39 2019 -0700"
      },
      "message": "[pulsar-storm] allow option to configure queue size of pulsar-spout-consumer (#4239)\n\n"
    },
    {
      "commit": "a76e620a23733df0038dc743613806ba3a5e88c1",
      "tree": "d30a780f51dd9fe2229f2e04eed34f6711ebb1ec",
      "parents": [
        "fc413e1bf6ee55d6c97e194822ada4dae8d9149c"
      ],
      "author": {
        "name": "Shivji Kumar Jha",
        "email": "shiv4289@gmail.com",
        "time": "Thu May 09 14:01:38 2019 +0530"
      },
      "committer": {
        "name": "Jia Zhai",
        "email": "zhaijia@apache.org",
        "time": "Thu May 09 16:31:38 2019 +0800"
      },
      "message": "[issue 3954] [flink] Use (client/consumer/producer) pojo to pass config to pulsar client (#4232)\n\n* Flink client to accept all pulsar client conf\r\n\r\nIn this patch, we provide handles for flink connecotr to accept ClientConfigurationData, ProducerConfigurationData, ConsumerConfigurationData so flink client can:\r\n1. accept all params of client, producer and consumer\r\n2. Keep pace with pulsar-client\r\n\r\n* Flink client to accept all pulsar client conf\r\n\r\nAdded test cases\r\n\r\n* Removing commented code\r\n"
    },
    {
      "commit": "fc413e1bf6ee55d6c97e194822ada4dae8d9149c",
      "tree": "b435b1ca79dbad433cbe7cf8a243f09b68b9d7df",
      "parents": [
        "80a61879a0b8fb6fc6abf67a5d384c56f8621691"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Wed May 08 18:36:56 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 08 18:36:56 2019 -0700"
      },
      "message": "[pulsar-storm] provide auto-unsubscribe option in pulsar-spout (#4238)\n\n"
    },
    {
      "commit": "80a61879a0b8fb6fc6abf67a5d384c56f8621691",
      "tree": "a7f7be723e2ca8957f98e55e335d85b0a4dbaaea",
      "parents": [
        "8fc17cff98cef3ef24e16176819d802a65dcd9fa"
      ],
      "author": {
        "name": "wpl",
        "email": "1269223860@qq.com",
        "time": "Mon Apr 29 04:57:35 2019 -0500"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Mon Apr 29 17:57:35 2019 +0800"
      },
      "message": "[pulsar-spark] upgrade SparkStreamingPulsarReceiver.java use pulsar-client and add spark example (#4143)\n\n### Motivation\r\n\r\nupgrade SparkStreamingPulsarReceiver.java use pulsar-client and add spark example\r\n\r\n### Modifications\r\n\r\n1. upgrade  SparkStreamingPulsarReceiver.java use pulsar-client, remove pulsar-client-1x pom\r\n2. add  simple spark example"
    },
    {
      "commit": "8fc17cff98cef3ef24e16176819d802a65dcd9fa",
      "tree": "38ecff49065211bee1de8ae59a3e10efeec23ead",
      "parents": [
        "6b2be1a2d447bd1ac1b4e88e0f2c0508cac8a92d"
      ],
      "author": {
        "name": "lipenghui",
        "email": "penghui@apache.org",
        "time": "Fri Apr 26 23:38:17 2019 +0800"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "sijie@apache.org",
        "time": "Fri Apr 26 23:38:17 2019 +0800"
      },
      "message": "[pulsar-flink] Add subscription initial position (#4129)\n\n### Motivation\r\n\r\nAllow user to specify the initial position for consumer source builder.\r\n\r\n### Modifications\r\n\r\nAdd initial position for PulsarConsumerSource."
    },
    {
      "commit": "6b2be1a2d447bd1ac1b4e88e0f2c0508cac8a92d",
      "tree": "c087f41d7da1dd3f392b538632d54a6e93965cae",
      "parents": [
        "3dc4ddf2575299aad2c93abce02e8ca0f5d9256b"
      ],
      "author": {
        "name": "Rajan Dhabalia",
        "email": "rdhabalia@apache.org",
        "time": "Mon Apr 08 19:09:46 2019 -0700"
      },
      "committer": {
        "name": "Sijie Guo",
        "email": "guosijie@gmail.com",
        "time": "Tue Apr 09 10:09:46 2019 +0800"
      },
      "message": "[pulsar-storm] Fix NPE while emitting next tuple (#3991)\n\n### Motivation\r\n\r\n[PulsarSpout] removes messages from [pendingMessageRetries](https://github.com/apache/pulsar/blob/master/pulsar-storm/src/main/java/org/apache/pulsar/storm/PulsarSpout.java#L126) but it doesn\u0027t remove from the `failedMessages` queue because of that PulsarSpout throws NPE while [emitting next tuple](https://github.com/apache/pulsar/blob/master/pulsar-storm/src/main/java/org/apache/pulsar/storm/PulsarSpout.java#L181)\r\n\r\n````\r\nstack-trace with old pulsar-storm lib: 1.20\r\n2019-04-05 18:49:58.240 b.s.util CmsSpout_[1 1] [INFO] Async loop Stacktrace is: {} java.lang.NullPointerException\r\n    at org.apache.pulsar.storm.PulsarSpout.emitNextAvailableTuple(PulsarSpout.java:176)\r\n    at org.apache.pulsar.storm.PulsarSpout.nextTuple(PulsarSpout.java:160)\r\n    at backtype.storm.daemon.executor$fn__7365$fn__7380$fn__7411.invoke(executor.clj:577)\r\n    at backtype.storm.util$async_loop$fn__551.invoke(util.clj:491)\r\n    at clojure.lang.AFn.run(AFn.java:22)\r\n    at java.lang.Thread.run(Thread.java:748)\r\n```"
    }
  ],
  "next": "3dc4ddf2575299aad2c93abce02e8ca0f5d9256b"
}
