pulsar-release.git
22 months agoPIP-62: Remove tests and examples related to pulsar-adapters (#8511) master
Lari Hotari [Wed, 11 Nov 2020 06:37:06 +0000 (08:37 +0200)] 
PIP-62: Remove tests and examples related to pulsar-adapters (#8511)

related to #8480

remove remaining modules related to pulsar-adapters:
- examples/flink
- examples/spark
- tests/pulsar-kafka-compat-client-test
- tests/pulsar-spark-test
- tests/pulsar-storm-test

22 months ago[Bouncy Castle] include bc into pulsar-client fix docs (#8491)
Jia Zhai [Tue, 10 Nov 2020 09:54:09 +0000 (17:54 +0800)] 
[Bouncy Castle] include bc into pulsar-client fix docs (#8491)

### Motivation
The docs of bc need an update after merge PR #7453, also we could include bc in the pulsar client to avoid reference it in other modules.

### Modifications

- fix the docs after fix PR 7453;
- make pulsar client include bc module; avoid other modules to include bc.
- fix the pulsar-function bc jar issue.

### Verifying this change
all the tests passed.

22 months agoUpdate deps, allow to run tests with forkCount=1 (#8465)
Enrico Olivelli [Mon, 9 Nov 2020 08:35:54 +0000 (09:35 +0100)] 
Update deps, allow to run tests with forkCount=1 (#8465)

# Motivation
In current master you cannot run the tests with "forkCount=1", this is very annoying as by default we are running all of the tests in parallel.
This change upgrades a few testing dependencies and fixes a problem with PowerMock + Testng + Log4j2 + forkCount=1

# Modifications
Upgrade TestNG
Upgrade PowerMock
Upgrade Mockito
Verifying this change
All tests should pass

This change is a trivial rework / code cleanup without any test coverage.

* Update deps, allow to run tests with forkCount=1

* revert log4j2

* fix build

* revert javaassist

* revert surefire

* use https for TestNG DTDs

* remove SnakeYAML

Co-authored-by: Enrico Olivelli <eolivelli@apache.org>
22 months ago[Tiered Storage] Support Azure BlobStore offload configuration (#8436)
ran [Wed, 4 Nov 2020 00:46:36 +0000 (08:46 +0800)] 
[Tiered Storage] Support Azure BlobStore offload configuration (#8436)

Fix https://github.com/streamnative/pulsar/issues/1606

### Motivation

Support Azure BlobStore offload configuration.

### Modifications

The new tiered-storage configuration was introduced in the offload refinement.
Add new universal configurations in `OffloadPolicies`

22 months agoUpgrade jetty to 9.4.33.v20201020 (#8413)
Masahiro Sakamoto [Mon, 2 Nov 2020 00:38:07 +0000 (09:38 +0900)] 
Upgrade jetty to 9.4.33.v20201020 (#8413)

Jetty versions 9.4.32.v20200930 and earlier have a security vulnerability, so upgraded to the latest stable version.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-27216

22 months agoUpgrade Apache BookKeeper Client to 4.11.1 (#8270)
Enrico Olivelli [Fri, 30 Oct 2020 12:03:28 +0000 (13:03 +0100)] 
Upgrade Apache BookKeeper Client to 4.11.1 (#8270)

Motivation
Upgrade Apache BookKeeper client to version 4.11.1 and RocksDB to 6.10.2 (needed by Bookie)

Modifications
Upgrade Apache BookKeeper client, fix a few build errors, due to the introduction of BookieServiceInfo structure (see BP-38).

Verifying this change
This change is already covered by existing tests

* Upgrade Apache BookKeeper to 4.11.1

* fix build

* fix LICENSE files

* Use BK 4.11.1

* Upgrade RocksDB to 6.10.2

* Fix license and upgrade maven assembly plugin

* update license

* restore bouncy castle license

* fix licenses

* Exclude BouncyCastle inherited from BK

Co-authored-by: Enrico Olivelli <enrico.olivelli@diennea.com>
Co-authored-by: Enrico Olivelli <eolivelli@apache.org>
22 months agoAllow building Apache Pulsar on JDK15+ - upgrade Maven Assembly Plugin (#8360)
Enrico Olivelli [Thu, 29 Oct 2020 07:24:07 +0000 (08:24 +0100)] 
Allow building Apache Pulsar on JDK15+ - upgrade Maven Assembly Plugin (#8360)

Motivation
Currently Pulsar does not build on JDK15

Modifications
update Maven Assembly plugin
move maven-git-commit-id plugin execution only inside Pulsar Common (in order to speed up the build)
upgrading the Maven Assembly Plugin resulted in a different output for the "binaries", I had to update license files
forced 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)
Verifying this change
This change is already covered by existing tests

* Allow to build Pulsar on JDK14+
- update Apache Maven Assembly Plugin
- use explicit import for Record class (prevent clash with java.lang.Record)

* revert Apache pom update

* fix

* Fix presto distribution - due to maven assembly plugin upgrade

* fix licenses

* Fix kafka clients

* fix LICENSE

Co-authored-by: Enrico Olivelli <enrico.olivelli@diennea.com>
Co-authored-by: Enrico Olivelli <eolivelli@apache.org>
22 months ago[Offload] Make the field name in `OffloadPolicies` match with config file (#8310)
ran [Wed, 28 Oct 2020 08:53:31 +0000 (16:53 +0800)] 
[Offload] Make the field name in `OffloadPolicies` match with config file (#8310)

Fixes #8220

### Motivation

Currently, the fields' values couldn't be set properly by the Pulsar broker config file(`broker.conf` or `standalone.conf`).

### Modifications

changed fields in `OffloadPolicies`

1. managedLedgerOffloadAutoTriggerSizeThresholdBytes
2. managedLedgerOffloadDeletionLagMs

22 months agoDelete associated ledgers before deleting cluster metadata (#8244)
Yunze Xu [Tue, 27 Oct 2020 03:34:31 +0000 (11:34 +0800)] 
Delete associated ledgers before deleting cluster metadata (#8244)

### Motivation

#8169 introduced a command tool to delete a cluster's metadata from ZK. This PR intends to delete the cluster's ledgers from BK.

### Modifications

- Retrieve ledger ids from related ZK nodes
- Add an optional argument to specify BK metadata service URI, then delete these ledgers if it's specified

23 months agoRemove bouncy castle shaded module to avoid bring error of verifySingleJar (#7453)
Jia Zhai [Fri, 23 Oct 2020 06:36:13 +0000 (14:36 +0800)] 
Remove bouncy castle shaded module to avoid bring error of verifySingleJar (#7453)

### Motivation

shade bouncy castle will cause some signature errors, this PR tries to remove the bouncy castle shaded module.

Here is the related error stack:
```
10:01:34.257 [pulsar-client-io-33-1] ERROR org.apache.pulsar.client.impl.ConsumerImpl - MessageCryptoBc may not included in the jar. e:
java.lang.SecurityException: JCE cannot authenticate the provider BC
at javax.crypto.Cipher.getInstance(Cipher.java:657) ~[?:1.8.0_121]
at javax.crypto.Cipher.getInstance(Cipher.java:596) ~[?:1.8.0_121]
at org.apache.pulsar.client.impl.crypto.MessageCryptoBc.<init>(MessageCryptoBc.java:147) ~[classes/:?]
at org.apache.pulsar.client.impl.ConsumerImpl.<init>(ConsumerImpl.java:270) ~[classes/:?]
at org.apache.pulsar.client.impl.ConsumerImpl.newConsumerImpl(ConsumerImpl.java:209) ~[classes/:?]
at org.apache.pulsar.client.impl.PulsarClientImpl.lambda$doSingleTopicSubscribeAsync$5(PulsarClientImpl.java:364) ~[classes/:?]
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:656) ~[?:1.8.0_131]
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632) ~[?:1.8.0_131]
...

Caused 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
at javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:500) ~[?:1.8.0_121]
at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:361) ~[?:1.8.0_121]
at javax.crypto.JarVerifier.verify(JarVerifier.java:289) ~[?:1.8.0_121]
at javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:159) ~[?:1.8.0_121]
at javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:185) ~[?:1.8.0_121]
at javax.crypto.Cipher.getInstance(Cipher.java:653) ~[?:1.8.0_121]
```

### Modifications

- Remove bouncy castle shaded module, avoid package bouncy castle into a dependency jar.
- enhance test case to identify this error.

### Verifying this change

ut passed.

* remove dep of bc-shaded from other module

* remove bc-shaded module

* enhance testECDSAEncryption and testRSAEncryption to cover error case

* fix license check

* remove bc-shaded module

* build a jar in jar to avoid break bc signature

* use new bc dependency by classifier in maven

* build pulsar-all docker image instead of pull from dockerhub in integration tests

* remove nar

* fix licence, fix error brings in #7640

* add bc when broker/client is referenced in pom

* add missing bc reference in pom

* change ci back to not build docker image

23 months agoSupport exclude the message when reset cursor by message ID (#8306)
feynmanlin [Wed, 21 Oct 2020 16:57:57 +0000 (00:57 +0800)] 
Support exclude the message when reset cursor by message ID (#8306)

Fixes #8259
### Motivation
Currently, when reset the cursor to a position, the broker will set the mark delete position to the previous position of the reset position. For some usecase, we don't want to consume the reset position again, so it's better to provide a way to reset the cursor to a specific position and exclude this position. So that the consumers under the subscription can start consume messages from the next position of the reset position.

### Modifications
Add a new API to exclude the message when reset cursor by message ID

### Verifying this change
SimpleProducerConsumerTest#testResetPosition

23 months agoRefactored JCloud Tiered Storage (#6335)
David Kjerrumgaard [Mon, 19 Oct 2020 01:56:24 +0000 (18:56 -0700)] 
Refactored JCloud Tiered Storage (#6335)

Motivation

In order to facilitate the support of additional JClouds-supported providers, we first needed to clean up the existing code, as there were a lot of if/then/else constructs throughout the code that were based on the assumption that we either supported AWS S3 or Google Cloud Storage. I didn't want to keep adding else if's to these code blocks for every new provider we add, so I decided to refactor the code to make it a bit cleaner

Modifications

in addition to being home for most of the aforementioned if/then/else blocks, the BlobStoreManagedLedgerOffloader class had multiple responsibilities in addition to providing an implementation for the LedgerOffloader interface. My goal was to simplify this class such that its only responsibility was to implement the LedgerOffloader interface.

The other major change was the addition of the JCloudBlobStoreProvider enum, which implements 3 interfaces that allow for it to handle the provider specific logic for things such as acquiring the credentials, validating the configuration, and creating a provider-specific instance of BlobStore.

Result

After this change, we will be able to easily add support for additional JClouds-supported providers by simply adding new elements to the JCloudBlobStoreProvider Enums since the other logic has been isolated and is not vendor specific.

See #2865 for more details

* Refactored JCloud Tiered Storage

* Refactored JCloud Tiered Storage

* Added missing import statements

* Refactored JCloud Tiered Storage

* Refactored JCloud Tiered Storage

* Added missing import statements

* Refactored JCloud Tiered Storage

* Refactored JCloud Tiered Storage

* Added missing import statements

* fix test

* add test logs

* fix logs

* fix test

* fix

* fix

* fix broker log

* fix configuration

* fix

* fix

* fix

* fix get BlobStore

* repair test presto query tiered storage data

* fix test

* fix test

* fix test TestPrestoQueryTieredStorage

* fix

* fix

Co-authored-by: Sijie Guo <sijie@apache.org>
Co-authored-by: gaoran10 <gaoran_10@126.com>
Co-authored-by: xiaolong.ran <rxl@apache.org>
23 months agoUpgrade Jcommander to 1.78 (#8206)
Sanjeev Kulkarni [Wed, 7 Oct 2020 20:23:51 +0000 (13:23 -0700)] 
Upgrade Jcommander to 1.78 (#8206)

* Upgrade Jcommander to 1.80

* Fix build

* 1.78 is the stable version

* Fix test

Co-authored-by: Sanjeev Kulkarni <sanjeevk@splunk.com>
2 years agoFix pulsar functions threaded integration tests (#8118)
Boyang Jerry Peng [Wed, 23 Sep 2020 21:52:01 +0000 (14:52 -0700)] 
Fix pulsar functions threaded integration tests (#8118)

Co-authored-by: Jerry Peng <jerryp@splunk.com>
2 years agoCancel retry if the error is autheticate failed (#8058)
Yong Zhang [Wed, 16 Sep 2020 13:39:56 +0000 (21:39 +0800)] 
Cancel retry if the error is autheticate failed (#8058)

---

Fixes #7929

*Motivation*

We shouldn't retry to connect to the server if the client has authenticate error.

2 years agoFix protobuf version to 3.11.4 (#8028)
冉小龙 [Fri, 11 Sep 2020 09:31:36 +0000 (17:31 +0800)] 
Fix protobuf version to 3.11.4 (#8028)

* Fix protobuf version to 3.11.4

Signed-off-by: xiaolong.ran <rxl@apache.org>
* fix ci error

Signed-off-by: xiaolong.ran <rxl@apache.org>
2 years agoUpgrade jetty-util version to 9.4.31 (#8035)
冉小龙 [Fri, 11 Sep 2020 09:31:21 +0000 (17:31 +0800)] 
Upgrade jetty-util version to 9.4.31 (#8035)

Signed-off-by: xiaolong.ran <rxl@apache.org>
2 years agoRemove python2 from the pulsar images build (#7936)
Yong Zhang [Tue, 8 Sep 2020 13:24:58 +0000 (21:24 +0800)] 
Remove python2 from the pulsar images build (#7936)

The pulsar docker and pulsar standalone docker image build failed by:
```
Processing ./pulsar-client/pulsar_client-2.6.0-cp27-cp27mu-manylinux1_x86_64.whl
2020-08-25T02:23:28.9567844Z [INFO] Collecting fastavro
2020-08-25T02:23:29.0080316Z [INFO]   Downloading fastavro-1.0.0.tar.gz (658 kB)
2020-08-25T02:23:29.3108074Z [INFO]     ERROR: Command errored out with exit status 1:
2020-08-25T02:23:29.3109489Z [INFO]      command: /usr/bin/python2.7 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-jvZueR/fastavro/setup.py'"'"'; __file__='"'"'/tmp/pip-install-jvZueR/fastavro/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-iH1mMy
2020-08-25T02:23:29.3110061Z [INFO]          cwd: /tmp/pip-install-jvZueR/fastavro/
2020-08-25T02:23:29.3110303Z [INFO]     Complete output (5 lines):
2020-08-25T02:23:29.3110520Z [INFO]     Traceback (most recent call last):
2020-08-25T02:23:29.3110741Z [INFO]       File "<string>", line 1, in <module>
2020-08-25T02:23:29.3111190Z [INFO]       File "/tmp/pip-install-jvZueR/fastavro/setup.py", line 58, in <module>
2020-08-25T02:23:29.3111437Z [INFO]         if sys.implementation.name != "pypy":
2020-08-25T02:23:29.3111886Z [INFO]     AttributeError: 'module' object has no attribute 'implementation'
```

I remove the python2.7 and using the python3 to build images.

* Remove python2 in images

* Remove python2 stuff

* Update the default python version

2 years agoExclude vertx from bookkeeper-http package (#7997)
冉小龙 [Tue, 8 Sep 2020 08:05:39 +0000 (16:05 +0800)] 
Exclude vertx from bookkeeper-http package (#7997)

Signed-off-by: xiaolong.ran <rxl@apache.org>
### Motivation

```
$ mvn dependency:tree|grep vertx
```

Output:
```
[INFO] +- org.apache.bookkeeper.http:vertx-http-server:jar:4.10.0:compile
[INFO] +- io.vertx:vertx-core:jar:3.5.3:compile
[INFO] +- io.vertx:vertx-web:jar:3.5.3:compile
[INFO] |  +- io.vertx:vertx-auth-common:jar:3.5.3:compile
[INFO] |  \- io.vertx:vertx-bridge-common:jar:3.5.3:compile
[INFO] |  +- org.apache.bookkeeper.http:vertx-http-server:jar:4.10.0:provided
[INFO] |  +- io.vertx:vertx-core:jar:3.5.3:provided
[INFO] |  \- io.vertx:vertx-web:jar:3.5.3:provided
[INFO] |     +- io.vertx:vertx-auth-common:jar:3.5.3:provided
[INFO] |     \- io.vertx:vertx-bridge-common:jar:3.5.3:provided
```

### Modifications

- exclude `vertx` from bookkeeper-http package and include vertx of `3.5.3` to `vertx-http-server`

2 years ago[Security] Upgrade the snakeyaml verion to 1.26 (#7994)
冉小龙 [Tue, 8 Sep 2020 01:05:23 +0000 (09:05 +0800)] 
[Security] Upgrade the snakeyaml verion to 1.26 (#7994)

Fixes #7928

### Motivation

As https://nvd.nist.gov/vuln/detail/CVE-2017-18640 said, the `snakeyaml` < 1.26

### Modifications

In `pulsar-functions` model:

- The `snakeyaml` 1.19 appears to be included from dependency on org.apache.pulsar:pulsar-functions-secrets:jar:2.6.1 based on included dependency of io.kubernetes:client-java-api:jar:2.0.0:compile Fixed in 9.0.2

- The `snakeyaml` 1.16 appears to be included from the dependency on org.apache.pulsar:pulsar-functions-instance:jar:2.6.1 based on io.prometheus.jmx:collector:jar:0.12.0 Fixed in 0.13.0

- The 1.17 org.apache.pulsar.tests:integration:test-jar:tests:2.6.1:test depends on org.elasticsearch.client:elasticsearch-rest-high-level-client:jar:6.3.2:test Fixed in elasticsearch >= 7.7.1 (7.9.1 current)

2 years agoadd java8 date and time type to pulsar's primitive schemas (#7874)
jianyun [Fri, 28 Aug 2020 13:50:32 +0000 (21:50 +0800)] 
add java8 date and time type to pulsar's primitive schemas (#7874)

### Motivation

*Compatible with flink 1.11 need to use java8 date api in pulsar's primitive schemas.*

### Modifications

*Add Instant, LocalDate, LocalTime, LocalDateTime to pulsar's primitive schemas*

### Verifying this change

Add Instant, LocalDate, LocalTime, LocalDateTime types to the Schema type test

2 years ago[Python Build] Add python-dev to pulsar standalone docker image (#7871)
冉小龙 [Fri, 21 Aug 2020 13:47:01 +0000 (21:47 +0800)] 
[Python Build] Add python-dev to pulsar standalone docker image (#7871)

Motivation
Follow #7857 In the pulsar standalone Dockerfile, we also need to do the same operation

Modifications
Add python2.7-dev to pulsar standalone docker image

2 years agoAdd python-dev to pulsar docker image (#7857)
Masahiro Sakamoto [Thu, 20 Aug 2020 15:04:59 +0000 (00:04 +0900)] 
Add python-dev to pulsar docker image (#7857)

### Motivation

Recently, building Pulsar Docker image in CI jobs has continued to fail. It seems that the header file "Python.h" does not exist.
```
[INFO]   building 'fastavro._read' extension
[INFO]   creating build/temp.linux-x86_64-2.7
[INFO]   creating build/temp.linux-x86_64-2.7/fastavro
[INFO]   x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-2.7.16=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c fastavro/_read.c -o build/temp.linux-x86_64-2.7/fastavro/_read.o
[INFO]   fastavro/_read.c:4:10: fatal error: Python.h: No such file or directory
[INFO]    #include "Python.h"
[INFO]             ^~~~~~~~~~
[INFO]   compilation terminated.
[INFO]   error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
[INFO]   ----------------------------------------
[INFO]
[INFO]   ERROR: Failed building wheel for fastavro
```

### Modifications

I'm not sure why the build has recently failed, but added `python2.7-dev` and `python3.7-dev` to the Docker image.

2 years agoFix security vulnerabilities of Pulsar (#7801)
冉小龙 [Fri, 14 Aug 2020 02:29:48 +0000 (10:29 +0800)] 
Fix security vulnerabilities of Pulsar (#7801)

### Motivation

Based on the scan results of `Black Duck`, we found that there are security vulnerabilities in the components currently used by pulsar, some are directly referenced by pulsar, and some are indirectly referenced by the pulsar.

2 years ago[Pulsar SQL] Make Pulsar SQL get correct offload configurations (#7701)
ran [Wed, 5 Aug 2020 09:07:52 +0000 (17:07 +0800)] 
[Pulsar SQL] Make Pulsar SQL get correct offload configurations (#7701)

### Motivation

Currently, Pulsar SQL can't get the correct offload configurations.

### Modifications

Make Pulsar SQL get the complete offload configurations.

### Verifying this change

Add a new integration test.

2 years agoFix the nondurable consumer can not specify the initial position (#7702)
Yong Zhang [Mon, 3 Aug 2020 14:10:19 +0000 (22:10 +0800)] 
Fix the nondurable consumer can not specify the initial position (#7702)

Fixes #7619

Motivation

When using nondurable consumer to consumer message and specify the initial position
from earliest, the consumer can not start consume from the earliest message.

2 years agoFix backward compatibility issues with batch index acknowledgment. (#7655)
lipenghui [Tue, 28 Jul 2020 15:49:42 +0000 (23:49 +0800)] 
Fix backward compatibility issues with batch index acknowledgment. (#7655)

### Motivation

Fix backward compatibility issues with batch index acknowledgment.

### Modifications

Disable batch index acknowledgment by default at the consumer side.

2 years agoAvoid dependency on Apache HTTP client for TLS hostname verifier (#7612) (#7664)
Matteo Merli [Mon, 27 Jul 2020 16:36:39 +0000 (09:36 -0700)] 
Avoid dependency on Apache HTTP client for TLS hostname verifier (#7612) (#7664)

2 years agoUpdate Jersey to 2.31 (#7515)
Matteo Merli [Fri, 17 Jul 2020 03:10:58 +0000 (20:10 -0700)] 
Update Jersey to 2.31 (#7515)

* Update Jersey to 2.31

* Update shade plugin to pick up bug fix

* Updated license files

* More license file fixes

* Added missing license file

* More license file fixes

* Fixed shading config for pulsar-client-admin

* wrong group name

* Another typo

2 years ago#5922 - Update poms to use project.groupId instead of org.apache.pulsar where applica...
Varghese Cottagiri [Thu, 16 Jul 2020 05:24:26 +0000 (01:24 -0400)] 
#5922 - Update poms to use project.groupId instead of org.apache.pulsar where applicable (#7548)

2 years agoAdd limited module set profile to the pom files (#7541)
Ali Ahmed [Wed, 15 Jul 2020 23:32:06 +0000 (16:32 -0700)] 
Add limited module set profile to the pom files (#7541)

2 years agoAdd test group tags for functions and state integration tests (#7529)
Ali Ahmed [Wed, 15 Jul 2020 16:33:26 +0000 (09:33 -0700)] 
Add test group tags for functions and state integration tests (#7529)

Co-authored-by: Ali Ahmed <alia@splunk.com>
2 years agoUpdate Jackson to 2.11.1 and ensure all dependencies are pinned (#7519)
Matteo Merli [Mon, 13 Jul 2020 23:45:51 +0000 (16:45 -0700)] 
Update Jackson to 2.11.1 and ensure all dependencies are pinned (#7519)

* Update Jackson to 2.11.1 and ensure all dependencies are pinned

* Fixed license file

* More license file fixes

* Fixed passing annotation introspector which is now required

2 years agoUpdate Jetty to 9.4.29 (#7235)
Matteo Merli [Tue, 30 Jun 2020 05:44:44 +0000 (22:44 -0700)] 
Update Jetty to 9.4.29 (#7235)

* Update Jetty to 9.4.29

* Fixed test exception message expectation

* Fixed test

* Fixed difference in extracting exception message

2 years agoUpgrade Presto version to 332 (#7194)
Yuya Ebihara [Sun, 14 Jun 2020 01:14:19 +0000 (10:14 +0900)] 
Upgrade Presto version to 332 (#7194)

* Upgrade Presto version to 332

* Update LICENSE file in pulsar-sql module

* Wrap ClassLoaderSafeConnectorMetadata around PulsarMetadata

* Update LICENSE file in pulsar-sql module

2 years agoBumped version to 2.7.0-SNAPSHOT (#7233)
lipenghui [Thu, 11 Jun 2020 08:30:26 +0000 (16:30 +0800)] 
Bumped version to 2.7.0-SNAPSHOT (#7233)

* Bumped version to 2.7.0-SNAPSHOT

2 years agoDuring Function update, cleanup should only happen for temp files that were generated...
Sanjeev Kulkarni [Wed, 10 Jun 2020 01:11:51 +0000 (18:11 -0700)] 
During Function update, cleanup should only happen for temp files that were generated (#7201)

* Fix logic while updating functions. Cleanup should only happen for temp files that were generated

* Fix integration tests

* Fix test

* Fix logic for parallelism > 1

* Fix test

* Address comments

Co-authored-by: Sanjeev Kulkarni <sanjeevk@splunk.com>
2 years ago[Issue 7202] Upgrade commons-lang3 version to 3.6 (#7203)
wangjialing218 [Tue, 9 Jun 2020 04:54:26 +0000 (12:54 +0800)] 
[Issue 7202] Upgrade commons-lang3 version to 3.6 (#7203)

* [Upgrade commons-lang3 version to 3.6

* Upgrade commons-lang3 version to 3.6

* Upgrade commons-lang3 version to 3.6 in LICENSE

Co-authored-by: wangjialing <wangjialing@cmss.chinamobile.com>
2 years agoUse pure-java Air-Compressor instead of JNI based libraries (#5390)
Matteo Merli [Thu, 4 Jun 2020 06:23:49 +0000 (23:23 -0700)] 
Use pure-java Air-Compressor instead of JNI based libraries (#5390)

* Use pure-java Air-Compressor instead of JNI based libraries

* Fixed license files

* Fixed non-needed exclusion

* Added compat tests with JNI implementations

* Ensure direct buffer is used in the test

* Ensure direct bytebuf for both compression and decompression test

Co-authored-by: penghui <penghui@apache.org>
2 years agoCorrect tokenSecretKey base64 inline description. (#6959)
Fangbin Sun [Tue, 2 Jun 2020 07:54:04 +0000 (15:54 +0800)] 
Correct tokenSecretKey base64 inline description. (#6959)

### Motivation

Fixes #6761

### Modifications

Correct tokenSecretKey base64 inline description in documents (based master & version 2.5.1) and examples.

2 years agoupdate asynchttpclient verison (#7087)
Jia Zhai [Fri, 29 May 2020 21:39:40 +0000 (05:39 +0800)] 
update asynchttpclient verison (#7087)

* update asynchttpclient verison

* add default config for new version of asynchttp

* update license version

* fix ut

* add default config for asynchttp to avoid npe

2 years agoadd postgresql to supervisord for pulsar-standalone image (#7086)
dockerzhang [Fri, 29 May 2020 21:38:56 +0000 (05:38 +0800)] 
add postgresql to supervisord for pulsar-standalone image (#7086)

2 years agoAdd dynamodb streams source (#6874)
Jacob Burroughs [Tue, 19 May 2020 15:16:51 +0000 (10:16 -0500)] 
Add dynamodb streams source (#6874)

### Motivation

The goal is to allow consuming dynamodb streams directly into pulsar

### Modifications

I created a new source for dynamo, which shares less code than ideal with the kinesis source, since the dynamodb kinesis client adapter supports KCL v1.x only, while, the kinesis source is using KCL v2.x.  I also abstracted the aws credential management pieces into their own package.

### Verifying this change

Create a dynamodb table with streams enabled.  Configure this connector with the stream ARN and appropriate credentials.  Create/update an entry in the table and ensure it is written to pulsar by the connector.

2 years ago[Issue 5215,4601,5215][pulsar-io] Add jdbc sinks: postgres, mariadb, clickhouse ...
Sergii Zhevzhyk [Mon, 18 May 2020 20:53:51 +0000 (22:53 +0200)] 
[Issue 5215,4601,5215][pulsar-io] Add jdbc sinks: postgres, mariadb, clickhouse (#6835)

Fixes #5215  #4601 #5215

### Motivation

Right now, the number of supported JDBC connectors is rather limited. There are a couple of open issues related to the missing connectors.

### Modifications

As a base for this pull request, I took the [changes](https://github.com/apache/pulsar/pull/5624) from @huangdx0726 Unfortunately,  I was not able to reach him to merge my changes to his branch, so I created a new one.

The main modification is a split of one JDBC module into a bunch of them. One module serves as a core and provides the main logic of the connector. Other modules are real connectors and add only an appropriate JDBC driver.

2 years ago[Pulsar IO][Issue 5633]Support avro schema for debezium connector (#6034)
guangning [Thu, 30 Apr 2020 13:29:05 +0000 (21:29 +0800)] 
[Pulsar IO][Issue 5633]Support avro schema for debezium connector (#6034)

Fixes #5633

### Motivation

Currently, some users want to support Avro schema in debezium, so this pr supports this feature.
For Kafka's Avro schema, it depends on the Avro 1.8 version, but Avro version has just been upgraded to 1.9 in pulsar, so shade is needed to avoid finding `addProp` function

### Modifications

* Add a package `kafka-connect-avro-converter-shaded`
* Add class KafkaSchema to converter Kafka's Avro schema to pulsar's schema

### Verifying this change

Unit test and integration tests

2 years ago[Grafana] Add tags to all grafana dashboards (#6770)
Sergii Zhevzhyk [Mon, 27 Apr 2020 07:51:38 +0000 (09:51 +0200)] 
[Grafana] Add tags to all grafana dashboards (#6770)

2 years agoBump netty version to 4.1.48.Final (#6746)
Masahiro Sakamoto [Fri, 17 Apr 2020 17:31:02 +0000 (02:31 +0900)] 
Bump netty version to 4.1.48.Final (#6746)

2 years ago[Issue #6711]: add audience verify in AuthenticationProviderToken (#6716)
Jia Zhai [Thu, 16 Apr 2020 06:50:17 +0000 (14:50 +0800)] 
[Issue #6711]: add audience verify in AuthenticationProviderToken (#6716)

Fixes #6711

### Motivation
User like to be able to configure the JWT authentication provider to verify the audience on incoming tokens.  I believe this will improve security because it would prevent a spoofer from reusing a token that was intended for another purpose (yet signed by the same issuer).  [RFC 6749 section 4.1.3](https://tools.ietf.org/html/rfc7519#section-4.1.3) has some guidance on this.  In my scenario, the token is an OAuth 2.0 token, and OAuth 2.0 makes extensive use of the audience claim ([ref](https://auth0.com/docs/tokens/guides/validate-access-tokens#check-additional-standard-claims)).

1. a configurable audience claim name (e.g. `aud`).
2. if audience isn't configured, do not validate the audience (for back-compatibility).
3. if audience is configured, validate that the value is present in the token.

### Modifications
- Add the logic in AuthenticationProviderToken.
- Add related tests.

### Verifying this change
- Ut passed

2 years agoAdd Joda time logical type conversion. (#6704)
lipenghui [Sat, 11 Apr 2020 17:58:06 +0000 (01:58 +0800)] 
Add Joda time logical type conversion. (#6704)

### Motivation

After upgrade to Apache Avro 1.9.x, the default time conversion changed to JSR-310. For forwarding compatibility, we'd better add the Joda time conversion.

related to #5938

### Modifications

Add joda time conversions

### Verifying this change

New integration test added

2 years agoFixed avro schema decode error in functions (#6662)
ran [Sun, 5 Apr 2020 00:33:42 +0000 (08:33 +0800)] 
Fixed avro schema decode error in functions (#6662)

Fixes #5503
From #6445

# Motivation
In functions, it will encounter ```ClassCastException``` when using the Avro schema for topics.

```
Exception in thread "main" java.lang.ClassCastException: org.apache.pulsar.shade.org.apache.avro.generic.GenericData$Record cannot be cast to io.streamnative.KeyValueSchemaTest$Foo2
at io.streamnative.KeyValueSchemaTest.testConsumerByPythonProduce(KeyValueSchemaTest.java:412)
at io.streamnative.KeyValueSchemaTest.main(KeyValueSchemaTest.java:305)
```

# Modifications
In functions, when using Avro schema specific the ClassLoader for ReflectDatumReader.

Add integration test ```testAvroSchemaFunction``` in class ```PulsarFunctionsTest```.

2 years ago[hotfix]Python function protobuf missing field and broker test failed (#6641)
guangning [Tue, 31 Mar 2020 12:58:29 +0000 (20:58 +0800)] 
[hotfix]Python function protobuf missing field and broker test failed (#6641)

### Motivation

At present, in the test, we found that due to the addition of a field `forwardSourceMessageProperty` in the proto file of function, this field was lost in the proto file generated by python and go. Due to python parsing with the following code:

```
json_format.Parse(args.function_details, function_details)
```

the following exception will be thrown.

```
2020-03-30T13:13:25.2339031Z 13:13:24.379 [pulsar-external-listener-20-1] INFO  org.apache.pulsar.functions.runtime.process.ProcessRuntime - Started process successfully
2020-03-30T13:13:25.2339190Z Traceback (most recent call last):
2020-03-30T13:13:25.2340782Z   File "/pulsar/instances/python-instance/python_instance_main.py", line 211, in <module>
2020-03-30T13:13:25.2340944Z     main()
2020-03-30T13:13:25.2342589Z   File "/pulsar/instances/python-instance/python_instance_main.py", line 98, in main
2020-03-30T13:13:25.2342744Z     json_format.Parse(args.function_details, function_details)
2020-03-30T13:13:25.2354119Z   File "/usr/local/lib/python2.7/dist-packages/google/protobuf/json_format.py", line 430, in Parse
2020-03-30T13:13:25.2354284Z     return ParseDict(js, message, ignore_unknown_fields, descriptor_pool)
2020-03-30T13:13:25.2354689Z   File "/usr/local/lib/python2.7/dist-packages/google/protobuf/json_format.py", line 450, in ParseDict
2020-03-30T13:13:25.2354882Z     parser.ConvertMessage(js_dict, message)
2020-03-30T13:13:25.2355386Z   File "/usr/local/lib/python2.7/dist-packages/google/protobuf/json_format.py", line 481, in ConvertMessage
2020-03-30T13:13:25.2355537Z     self._ConvertFieldValuePair(value, message)
2020-03-30T13:13:25.2356082Z   File "/usr/local/lib/python2.7/dist-packages/google/protobuf/json_format.py", line 590, in _ConvertFieldValuePair
2020-03-30T13:13:25.2356559Z     raise ParseError('Failed to parse {0} field: {1}.'.format(name, e))
2020-03-30T13:13:25.2357199Z google.protobuf.json_format.ParseError: Failed to parse sink field: Message type "proto.SinkSpec" has no field named "forwardSourceMessageProperty".
2020-03-30T13:13:25.2357634Z  Available Fields(except extensions): ['className', 'configs', 'typeClassName', 'topic', 'serDeClassName', 'builtin', 'schemaType'].
```

This pr is mainly to fix the proto file generated by python first. In order to make the test pass smoothly, I will gradually fix this problem in other languages in the next pull request.

### Modifications

* Enable build docker image to pulsar and pulsar-all.
* Add new generated protobuf file for python
* Disable go function integration test
* Add sleep for method testGetPartitionedStatsInternal

### Verifying this change

The integration process test passed https://github.com/AmateurEvents/pulsar/pull/22

2 years agoSupport BouncyCastle FIPS provider (#6588)
Jia Zhai [Sat, 28 Mar 2020 10:34:57 +0000 (18:34 +0800)] 
Support BouncyCastle FIPS provider  (#6588)

### Motivation

Try to make user able to use both "org.bouncycastle.jce.provider.BouncyCastleProvider" and  "org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider".

Current code, bouncycastle (bc) jars  are used in both broker and client, and are tied strongly in both broker and client.  We need to make it easy config. This change try to split bc and module that depends on it. Then user could freely include/exclude it.

### Changes
- build a shaded jar for bouncycastle non-fips version. other module depends on this module.
- build nar for both fips and non-fips version of bouncycastle, user could able to load bouncycastle by these 2 nar.
- split MessageCrypto out from client and made it an individual module.  so client is able to exclude bouncycastle.
- Add 2 test examples:  1, exclude bc-non-fips version, and include bc-fips version; 2, exclude bc-non-fips version and load bc-fips version by nar.

2 years agoDo not apply env values to conf/pulsar_env.sh and conf/bkenv.sh implicitly when runni...
Yang Yang [Thu, 26 Mar 2020 06:31:31 +0000 (14:31 +0800)] 
Do not apply env values to conf/pulsar_env.sh and conf/bkenv.sh implicitly when running apply-config-from-env.py. (#6579)

2 years ago[docker]Docker standalone build error (#6586)
guangning [Thu, 26 Mar 2020 06:31:03 +0000 (14:31 +0800)] 
[docker]Docker standalone build error (#6586)

* Fixed docker build package

* Fixed docker build package

2 years ago[Issue 6507][deployment]fix k8s config and env py (#6508)
lan [Thu, 19 Mar 2020 05:43:43 +0000 (13:43 +0800)] 
[Issue 6507][deployment]fix k8s config and env py (#6508)

* fix k8s config and env py

* fix BOOKIE_MEN parmater for k8s

2 years ago[Maven Cleanup] Remove managed-ledger and zk-utils test-jar dependencies when possibl...
Yijie Shen [Wed, 11 Mar 2020 01:31:00 +0000 (09:31 +0800)] 
[Maven Cleanup] Remove managed-ledger and zk-utils test-jar dependencies when possible (#6513)

Currently, 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.

This PR introduces a new `testmocks` module and pulls all mocks from managed-ledger tests into the new module.

2 years agoBump netty version to 4.1.45.Final (#6424)
Dzmitry Kazimirchyk [Thu, 27 Feb 2020 06:43:57 +0000 (22:43 -0800)] 
Bump netty version to 4.1.45.Final (#6424)

netty 4.1.43 has a bug preventing it from using Linux native Epoll transport

This results in pulsar brokers failing over to NioEventLoopGroup even when running on Linux.

The bug is fixed in netty releases 4.1.45.Final

2 years agoCleanup pom files in the tests module (#6421)
Sergii Zhevzhyk [Wed, 26 Feb 2020 09:14:23 +0000 (10:14 +0100)] 
Cleanup pom files in the tests module (#6421)

### Modifications

- Removed dependencies on test libraries that were already imported in the parent pom file.

- Removed groupId tags that are inherited from the parent pom file.

2 years agoRemove duplicated lombok annotations in the tests module (#6412)
Sergii Zhevzhyk [Tue, 25 Feb 2020 04:02:25 +0000 (05:02 +0100)] 
Remove duplicated lombok annotations in the tests module (#6412)

2 years ago[Issue 4175] [pulsar-function-go] Create integration tests for Go Functions for produ...
Devin Bost [Sun, 16 Feb 2020 05:29:53 +0000 (22:29 -0700)] 
[Issue 4175] [pulsar-function-go] Create integration tests for Go Functions for production-readiness (#6104)

This PR is to provide integration tests that test execution of Go functions that are managed by the Java FunctionManager. This will allow us to test things like behavior during function timeouts, heartbeat failures, and other situations that can only be effectively tested in an integration test.

Master issue: #4175
Fixes issue: #6204

### Modifications

We must add Go to the integration testing logic. We must also build the Go dependencies into the test Dockerfile to ensure the Go binaries are available at runtime for the integration tests.

2 years agoUpgrade ZooKeeper to 3.5.7 (#6329)
Matteo Merli [Sat, 15 Feb 2020 13:04:26 +0000 (05:04 -0800)] 
Upgrade ZooKeeper to 3.5.7 (#6329)

Upgrade ZK to latest stable version. In particular we need to include:

- Split brain on log disk full https://issues.apache.org/jira/browse/ZOOKEEPER-3701
- Data loss after upgrading standalone ZK server 3.4.14 to 3.5.6 with snapshot.trust.empty=true https://issues.apache.org/jira/browse/ZOOKEEPER-3644

2 years agoFix script apply-config-from-env.py (#6293)
Andres Garagiola [Tue, 11 Feb 2020 23:19:07 +0000 (00:19 +0100)] 
Fix script apply-config-from-env.py (#6293)

2 years agoWhen building docker image, copy tarball at the end to use build cache (#5334)
Matteo Merli [Mon, 10 Feb 2020 17:36:03 +0000 (09:36 -0800)] 
When building docker image, copy tarball at the end to use build cache (#5334)

* When building docker image, copy tarball at the end to use build cache

* Install the pulsar python client wheel file after copy the pulsar tarball

* When building docker image, copy tarball at the end to use build cache

2 years agoPIP-55: Refresh Authentication Credentials (#6074)
Matteo Merli [Mon, 10 Feb 2020 16:59:18 +0000 (08:59 -0800)] 
PIP-55: Refresh Authentication Credentials (#6074)

* PIP-55: Refresh Authentication Credentials

* Fixed import order

* Do not check for original client credential if it's not coming through proxy

* Fixed import order

* Fixed mocked test assumption

* Addressed comments

* Avoid to print NPE on auth refresh check if auth is disabled

2 years ago[Issue 6274][Test] Fixed integration Pulsar SQL test failed (#6279)
Guangning [Sun, 9 Feb 2020 23:00:58 +0000 (07:00 +0800)] 
[Issue 6274][Test] Fixed integration Pulsar SQL test failed (#6279)

* Delete no use docker image

* Add get docker images for delete docker images

* Add command for get space size

* Add delete docker images

* Fixed error

* Upgrade postgresql from version 9.6 to 11

* Delete no used image first

* Fixed delete image

* Fixed docker images order

* Add maven install step

* Add option docker.nocache=true

* Fixed correct docker image

* Fixed integration test failed

* Delete debug info

2 years agoPin the netty-transport-native-epoll to avoid conflicts (#6194)
Matteo Merli [Sat, 8 Feb 2020 04:17:18 +0000 (20:17 -0800)] 
Pin the netty-transport-native-epoll to avoid conflicts (#6194)

### Motivation

Currently the version pinning for `netty-transport-native-epoll` is not including the native library artifact.

That results, depending on the Maven version, to be picking up an earlier version of `transport-native-epoll-4.1.33.Final-linux-x86_64.jar`, where the version is 4.1.33 as opposed to 4.1.43 which is the correct expected version.

This results in using Java NIO based transport instead of the more effiecient/performant epoll based one.

This affects 2.5.0 as well.

2 years agoRevert "Support for python native logging from python wrapper (#6113)" (#6174)
Sijie Guo [Thu, 6 Feb 2020 23:27:36 +0000 (15:27 -0800)] 
Revert "Support for python native logging from python wrapper (#6113)" (#6174)

As stated in #6171, change #6113 broke the function instance runner. This change attempts to revert #6113 first to make sure CI back to normal.

Additionally, it fixes and improves a bunch of integration tests. (unfortunately, we have to couple these changes to make sure it pass CI).

2 years ago[Github actions]Fix integration test disk space is full (#6098)
Guangning [Mon, 20 Jan 2020 17:37:40 +0000 (01:37 +0800)] 
[Github actions]Fix integration test disk space is full (#6098)

### Motivation

At present, there are about 28 GB of space available on the running machine of Github action, and there is less than 10GB of disk space left after packing with the `mvn install -DskipTests -Pdocker` command. therefore, the bookie is very easy to exit due to insufficient disk in the integration test. therefore, fix this problem and pack only the needed images.

The current integration tests `PulsarFunctionsTest` are all in one class, which is very inconvenient to manage. For example, after the relevant tests of debezium are run, we can clean up the unused images of debezium, so adding groups to the integration test cases, so that we can control the tests more conveniently in the future.

Now we have about 20G of space for testing.
```
df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.4G     0  3.4G   0% /dev
tmpfs           695M  688K  694M   1% /run
/dev/sda1        84G   64G   20G  77% /
tmpfs           3.4G  8.0K  3.4G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.4G     0  3.4G   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1        14G   41M   13G   1% /mnt
```

```
docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
apachepulsar/pulsar-test-latest-version              2.6.0-SNAPSHOT      c599fe91d80e        2 seconds ago       2.82GB
apachepulsar/pulsar-test-latest-version              latest              c599fe91d80e        2 seconds ago       2.82GB
apachepulsar/pulsar-all                              latest              77d849fb13b7        3 days ago          2.76GB
node                                                 10                  ea119cebc1c3        3 weeks ago         908MB
node                                                 12                  6b5991bf650f        3 weeks ago         913MB
buildpack-deps                                       stretch             2adbcf3b6aff        3 weeks ago         835MB
debian                                               9                   f6c68e2ad82a        3 weeks ago         101MB
debian                                               8                   5d7d9c6338e8        3 weeks ago         129MB
node                                                 10-alpine           d32bf7fc7d5f        3 weeks ago         80.5MB
node                                                 12-alpine           1cbcaddb8074        3 weeks ago         85.2MB
alpine                                               3.10                965ea09ff2eb        3 months ago        5.55MB
jekyll/builder                                       latest              4605d94a6b36        3 months ago        564MB
alpine                                               3.9                 055936d39205        8 months ago        5.53MB
alpine                                               3.7                 6d1ef012b567        10 months ago       4.21MB
alpine                                               3.8                 dac705114996        10 months ago       4.41MB
mcr.microsoft.com/azure-pipelines/node8-typescript   latest              9a948d360778        15 months ago       595MB
```

### Modifications

* Add groups for integration tests
* Delete no used Docker image
* Pack images as needed

### Verifying this change
Now the integration test can pass normally, please refer to https://github.com/AmateurEvents/pulsar/pull/5/checks?check_run_id=398472038

2 years ago[pulsar-io-rabbitmq] Added integration test for RabbitMQ. (#6033)
Yang Yang [Mon, 13 Jan 2020 18:02:02 +0000 (02:02 +0800)] 
[pulsar-io-rabbitmq] Added integration test for RabbitMQ. (#6033)

Fixes https://github.com/apache/pulsar/issues/5920

### Motivation

The current RabbitMQ connector lacks an integration test.

### Modifications

Adds an integration test for the RabbitMQ connector(both source and sink):
- A container definition using `rabbitmq:3.8-management` as suggested.
- A RabbitMQ source tester, which provides configurations for the RabbitMQ source connector and publishes messages to the RabbitMQ.
- A RabbitMQ sink tester, which provides configurations for the RabbitMQ sink connector and consumes messages from the RabbitMQ for verification.
- A test case that invokes the testers with the current test framework.

### Verifying this change

This change added tests and can be verified as follows:

*(example:)*
  - *Added integration tests for the RabbitMQ connector*

2 years agoUpgrade Avro to 1.9.1 (#5938)
Masahiro Sakamoto [Mon, 6 Jan 2020 04:06:05 +0000 (13:06 +0900)] 
Upgrade Avro to 1.9.1 (#5938)

### Motivation

Currently, Pulsar uses Avro 1.8.2, a version released two years ago. The latest version of Avro is 1.9.1, which uses FasterXML's Jackson 2.x instead of Codehaus's Jackson 1.x. Jackson is prone to security issues, so we should not keep using older versions.
https://blog.godatadriven.com/apache-avro-1-9-release

### Modifications

Avro 1.9 has some major changes:

- The library used to handle logical datetime values has changed from Joda-Time to JSR-310 (https://github.com/apache/avro/pull/631)
- Namespaces no longer include "$" when generating schemas containing inner classes using ReflectData (https://github.com/apache/avro/pull/283)
- 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:
```json
{
  "name": "fieldName",
  "type": [
    "null",
    "string"
  ],
  "default": "defaultValue"
}
```
The 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.

2 years ago[Github Action] Clean up space before running backwards compatibility test (#5977)
Yong Zhang [Mon, 6 Jan 2020 02:48:09 +0000 (10:48 +0800)] 
[Github Action] Clean up space before running backwards compatibility test (#5977)

---

*Motivation*

Backwards compatibility test always failed with
`Docker environment should have more than 2GB free disk space`.

*Modifications*

Clean up space before running test.

2 years agoMake unit tests to only use dynamically allocated ports (#5486)
Matteo Merli [Sun, 5 Jan 2020 20:44:27 +0000 (12:44 -0800)] 
Make unit tests to only use dynamically allocated ports (#5486)

* Make unit tests to only use dynamically allocated ports

* Fixed proxy tests

* Fixed zk test utils after merge

* Fixed multi host client test

* Fix for testConcurrentConsumerReceiveWhileReconnect

* Increased timeout on testPulsarSourceLocalRunWithFile

* Fixed newer test to also avoid port manager

* Fixed test race condition with thread starting in PulsarFunctionLocalRunTest

* Fixed ProxyWithAuthorizationNegTest

* Fixed ProxySaslAuthenticationTest

2 years agoAdd diskUsageThreshold to 0.99 (#5970)
Guangning [Wed, 1 Jan 2020 00:26:03 +0000 (08:26 +0800)] 
Add diskUsageThreshold to 0.99 (#5970)

### Motivation

The current GitHub action test will show that the disk space exceeds 95%, and then the bookie will detect that bookie exits, so fix this problem.

![image](https://user-images.githubusercontent.com/1907867/71616693-8748da00-2bf2-11ea-82f2-e54eda012136.png)

### Modifications

* Configuration parameter disUsageThreshold is 0.99 to prevent bookie exit.

### Verifying this change

Integration test pass

2 years ago[functions] Added default metrics for Prometheus (#5885)
Nathan Mills [Tue, 24 Dec 2019 02:39:51 +0000 (19:39 -0700)] 
[functions] Added default metrics for Prometheus (#5885)

Currently functions do not report the default Prometheus metrics
like the broker does, or any JMX metrics that normally get
reported by kafka clients.

This add the default Prometheus exports used by the broker as
well as JMX exports that are reported by kafka clients when
using the kafka wrapper.

This change is a trivial rework / code cleanup without any test coverage.

2 years ago[Issue 5832][Pulsar IO]Fix npe of debezium delete event (#5876)
tuteng [Fri, 20 Dec 2019 06:05:46 +0000 (14:05 +0800)] 
[Issue 5832][Pulsar IO]Fix npe of debezium delete event (#5876)

Fixes https://github.com/apache/pulsar/issues/5832

Master Issue: https://github.com/apache/pulsar/issues/5832

### Motivation

Currently, in debezium, for delete events, in order to be compatible with Kafka's compaction, each delete event will be followed by a record with a null value. For records with a null value, the null value is not currently processed in pulsar, resulting in an exception of throwing a null pointer. Now, we considered to ignore the null value or use it in combination with pulsar's compaction feature in the future.

![image](https://user-images.githubusercontent.com/1907867/70976050-21cef680-20e6-11ea-963f-56471c915c98.png)
https://debezium.io/documentation/reference/0.10/connectors/mysql.html

### Modifications

* Ignore the record of the null value.
* Add more integrations, such as insert, delete, update.

2 years ago[Pulsar Client Tools]Support generate documentation of pulsar admin cli automatically...
tuteng [Fri, 20 Dec 2019 05:35:06 +0000 (13:35 +0800)] 
[Pulsar Client Tools]Support generate documentation of pulsar admin cli automatically (#5738)

### Motivation

Currently, the commands on the page http://pulsar.apache.org/docs/en/pulsar-admin/ are all manually added. when the document changes, there are often wrong contents. in order to solve this problem, we expect the commands on this page to be automatically generated. this pr is the first step. If it passes, we will add a new page on the website to show the automatically generated commands later.

2 years agoFix flaky test for debezium (#5878)
tuteng [Tue, 17 Dec 2019 14:55:55 +0000 (22:55 +0800)] 
Fix flaky test for debezium (#5878)

2 years ago[build] Allow skipping deploying docker artifacts to maven repo (#5821)
Sijie Guo [Mon, 9 Dec 2019 18:16:38 +0000 (10:16 -0800)] 
[build] Allow skipping deploying docker artifacts to maven repo (#5821)

*Motivation*

Allow skipping deploying docker artifacts to maven repo if `skipBuildDistribution` is specified

2 years agoBump version to 2.6.0 (#5820)
Sijie Guo [Mon, 9 Dec 2019 16:50:21 +0000 (08:50 -0800)] 
Bump version to 2.6.0 (#5820)

*Motivation*

Bump the development version to 2.6.0-SNAPSHOT

2 years agoBump jackson libraries to 2.10.1 (#5758)
Masahiro Sakamoto [Tue, 3 Dec 2019 17:45:20 +0000 (02:45 +0900)] 
Bump jackson libraries to 2.10.1 (#5758)

Updated jackson libraries to the latest version. There is a security vulnerability in `jackson-databind` currently used by Pulsar.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-17531

2 years agoUse simple GC settings when running integration tests (#5342)
Matteo Merli [Tue, 19 Nov 2019 18:03:50 +0000 (10:03 -0800)] 
Use simple GC settings when running integration tests (#5342)

### Motivation

Services started in integration tests are using a very aggressive GC config, with many threads and trading more memory for pause times.

Additionally, multiple variables are being passed in the wrong way to the bookie container, resulting in bookies using the default Xmx of 2 GB.

2 years ago[PIP-38] Support batch receive in java client. (#4621)
lipenghui [Tue, 19 Nov 2019 07:30:10 +0000 (15:30 +0800)] 
[PIP-38] Support batch receive in java client. (#4621)

Motivation
Support 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.

At 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.

For example:
```
Messages messages = consumer.batchReceive();
insertToDB(messages);
consumer.acknowledge(messages);
Verifying this change
Added new UT to verify this change.
```

2 years ago[Issue 5474][pulsar-io-debezium] Support CDC Connector for MongoDB (#5590)
huangdx0726 [Tue, 19 Nov 2019 01:53:37 +0000 (09:53 +0800)] 
[Issue 5474][pulsar-io-debezium] Support CDC Connector for MongoDB (#5590)

* support mongodb connector

* add tester

* add tester

* add tester

* add  license header

* fix by some comments

* add jdbc source sink

* add init data

* fix code style and default port 27017 of mongodb

2 years agoAdd highest sequenceId for CommandSendReceipt. (#5653)
lipenghui [Fri, 15 Nov 2019 07:03:29 +0000 (15:03 +0800)] 
Add highest sequenceId for CommandSendReceipt. (#5653)

## Motivation

Since #5491 merged, while user use new pulsar client to produce batch messages to older version broker(e.g. 2.4.0), send ack error will occur:

```
[pulsar-client-io-8-2] WARN  org.apache.pulsar.client.impl.ProducerImpl - [persistent://sandbox/pressure-test/test-A-partition-11] [pulsar-cluster-test-13-294] Got ack for msg. expecting: 13 - got: 224 - queue-size: 9
```

The problem is client use highest sequence id to match the response sequence id, but in old version broker can not return the highest id.

So, this pr is try to fix the problem of produce batch message with new version client and old version broker.

### Modifications

Add highest sequence id to CommandSendReceipt. If the response highest sequence id of send receipt > lowest sequence id, it means broker is a new version broker, so we need to verify the highest sequence id, otherwise we only verify the lowest sequence id.

2 years agoUpgrade bk version to 4.10.0 (#5607)
冉小龙 [Thu, 14 Nov 2019 06:50:07 +0000 (14:50 +0800)] 
Upgrade bk version to 4.10.0 (#5607)

* Upgrade bk version to 4.10.0

Signed-off-by: xiaolong.ran <ranxiaolong716@gmail.com>
* Handle NoSuchLedgerExistsOnMetadataServer error

2 years agoRemove old Pulsar website (#5576)
Sijie Guo [Thu, 7 Nov 2019 18:13:17 +0000 (02:13 +0800)] 
Remove old Pulsar website (#5576)

* Remove old Pulsar website

* Remove `site/` reference

2 years agoFix license file in the distribution package (#5578)
Sijie Guo [Thu, 7 Nov 2019 10:47:24 +0000 (18:47 +0800)] 
Fix license file in the distribution package (#5578)

2 years agoFix Test Assertion retry (#5544)
Ali Ahmed [Tue, 5 Nov 2019 17:16:34 +0000 (09:16 -0800)] 
Fix Test Assertion retry (#5544)

2 years ago[PIP-44] Separate schema compatibility checker for producer and consumer (#5227)
congbo [Mon, 4 Nov 2019 15:12:38 +0000 (23:12 +0800)] 
[PIP-44] Separate schema compatibility checker for producer and consumer (#5227)

* Change import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy;

* Schema compatibility check change

* Add the test

* modify the cmdNamespaces

* Modify the variable name

* Delete the configuration

* Modify the variable name

* modify the method

* Fix some tests

* add the integration test

* Modify the test

* modity the Timeout time

* Modify the test's sequence

* modify the exception message

* Add the test

* modify the httpLookupService

* Add the license

* add the method

* Modify decode message throw exception

* Add the import class

* fix some comment

* Modify the implments method

* add the judgement for consumer schema compatibility check

* add the import

2 years agoFix list non-persistent topics shows the persistent topics (#5502)
Yong Zhang [Fri, 1 Nov 2019 02:10:06 +0000 (10:10 +0800)] 
Fix list non-persistent topics shows the persistent topics (#5502)

* Fix list non-persistent topics shows the persistent topics
---

Fixes #5414

*Motivation*

When using the REST API to request to list all the non-persistent
topics, it will show the persistent topics.

*Modifications*

- Add a filter when before sending the response

2 years agoUpgrade dependencies for security fixes (#5232)
Matteo Merli [Thu, 31 Oct 2019 06:38:27 +0000 (23:38 -0700)] 
Upgrade dependencies for security fixes (#5232)

* Upgrade dependencies for security fixes

* Use guava 18 for jclouds-shaded

* Fix the guava version for HDFS tiered storage component

* Rollback guava to 25.1 since there are API breaking changes

* Rollback to Maven 3.0.5 which has the fix for sec issue

* Fixed Jetty SslContextFactory creation

* Roll back to 9.4.20.v20190813

2 years ago[Issue 5415][docker build]Updating docker build for pulsar-standalone to use main...
Chris Bartholomew [Tue, 29 Oct 2019 18:57:07 +0000 (14:57 -0400)] 
[Issue 5415][docker build]Updating docker build for pulsar-standalone to use main dashboard sou… (#5420)

* Updating docker build for puslar-standalone to use main dashboard source files; deleting duplicate files

* Committed the wrong Dockerfile

2 years ago[functions][Issue:5350]Fix pulsar can't load the customized SerDe (#5357)
冉小龙 [Mon, 28 Oct 2019 13:06:10 +0000 (21:06 +0800)] 
[functions][Issue:5350]Fix pulsar can't load the customized SerDe (#5357)

Fixes #5350

### Motivation

When using the `--output-serde-classname` option, `functionClassLoader` is not set correctly.

2 years agoUse individual netty-* artifacts instead of netty-all (#3613)
Matteo Merli [Fri, 25 Oct 2019 16:43:45 +0000 (09:43 -0700)] 
Use individual netty-* artifacts instead of netty-all (#3613)

2 years ago[integration-tests]Enable messaging tests to integration tests. (#5456)
lipenghui [Fri, 25 Oct 2019 15:23:03 +0000 (23:23 +0800)] 
[integration-tests]Enable messaging tests to integration tests. (#5456)

* Enable messaging tests to integration tests.

* Fix integration tests

2 years agoExpose metrics of Caffeine caches (#5320)
Matteo Merli [Thu, 24 Oct 2019 21:39:00 +0000 (14:39 -0700)] 
Expose metrics of Caffeine caches (#5320)

* Expose metrics of Caffeine and Guava caches

* Fixed test

* removed guava cache instrumentation

* Fixed test

2 years agoMultiple unit tests improvements (#5439)
Matteo Merli [Thu, 24 Oct 2019 18:27:30 +0000 (11:27 -0700)] 
Multiple unit tests improvements (#5439)

* Multiple unit tests improvements

* Fixed Storm integration tests

* Fixed StringSchema static initialization

* Peg number of forks to number of cores

* Updated to 4 forks

* Fixed resourcel leak in managed ledger tests

* Use different temp folders for PulsarFunctionState test

* Increase retries count for PulsarFunctionE2ESecurityTest

* Fixed Flume connector test

* Fixed race conditions in primitive schema types static initialization

* Improve port manager

* Removed PulsarFunctionStateTest to move to integration tests

* Fixed dangling class reference

2 years ago[proxy] Fix proxy to be able to re-send request body (#5361)
Addison Higham [Thu, 24 Oct 2019 16:58:41 +0000 (10:58 -0600)] 
[proxy] Fix proxy to be able to re-send request body (#5361)

Fixes #5360

This adds a small cache of the request body to ensure that it can be
re-sent.

TODO: still needs tested

2 years agoFix couple functions related integration tests (#5434)
Boyang Jerry Peng [Tue, 22 Oct 2019 09:21:51 +0000 (02:21 -0700)] 
Fix couple functions related integration tests (#5434)

2 years agoRevert "Add default loader for latest pyyaml (#4974)" (#5432)
Boyang Jerry Peng [Tue, 22 Oct 2019 03:58:16 +0000 (20:58 -0700)] 
Revert "Add default loader for latest pyyaml (#4974)" (#5432)

This reverts commit d49e61e0907c30d71184da4eb769c9761456a80f.