[RFR] Issue triaging contribution guide

2023-03-28 Thread tison
Hi,

I squashed over 1000 stale issues and PRs in Dec. 2022. During the work, I
notice that the community may lack some written guides for issue triaging,
and even if a contributor is willing to help, he/she doesn't know what to
do but just leave it as is.

I wrote a draft for this case[1]. It encourages contributors to do basic
classification and encourages committers to close issues as not planned
when it's the case.

Moving forward a valid issue requires knowledge and time, but by sharing &
aligning issue triage patterns, we can reduce a few engineering loss.

Best,
tison.

[1] https://github.com/apache/pulsar-site/pull/485


[PROPOSAL] Create a Chinese (Q&A) category in GitHub Discussions forum

2023-03-28 Thread tison
Hi,

I see a continuously increasing trend of users asking questions on our
GitHub Discussions forum[1].

Since a significant portion of our users come from China, and they are more
expressive when discussing in Chinese, I suggest we create a Chinese
category for Q&A only, which is expected to work as user-zh@pulsar.a.o but
on the GitHub Discussions forum for being user-friendly.

What do you think?

Best,
tison.

[1] https://github.com/apache/pulsar/discussions


[DISCUSS] Cherry-pick #15121 into branch-2.10 to solve the issue sasl authentication failure

2023-03-28 Thread Yubiao Feng
Hi community

### Summary
The Admin client (`pulsar-admin`) and Java Client (PulsarAdmin) will throw
Unauthorized Ex in both scenarios:
- If there have more than one broker in a cluster( see issue 1 below ).
- If authentication is enabled for both Pulsar-Proxy and Pulsar-Broker( see
issue 2 below),

```
bin/pulsar-admin topics stats persistent://public/default/tp1
2023-03-28T07:30:58,453+ [main] INFO
org.apache.pulsar.client.impl.auth.AuthenticationSasl - JAAS loginContext
is: PulsarAdmin.
2023-03-28T07:30:58,583+ [main] INFO
org.apache.pulsar.common.sasl.JAASCredentialsContainer - successfully
logged in.
2023-03-28T07:30:58,587+ [pulsar-tgt-refresh-thread] INFO
org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh thread started.
2023-03-28T07:30:58,612+ [pulsar-tgt-refresh-thread] INFO
org.apache.pulsar.common.sasl.TGTRefreshThread - Client principal is "
pulsar-ad...@sn.io".
2023-03-28T07:30:58,613+ [pulsar-tgt-refresh-thread] INFO
org.apache.pulsar.common.sasl.TGTRefreshThread - Server principal is
"krbtgt/sn...@sn.io".
2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
org.apache.pulsar.common.sasl.TGTRefreshThread - TGT valid starting at:
Tue Mar 28 07:30:58 UTC 2023
2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
org.apache.pulsar.common.sasl.TGTRefreshThread - TGT expires:
Wed Mar 29 07:30:58 UTC 2023
2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh sleeping
until: Wed Mar 29 03:12:29 UTC 2023
2023-03-28T07:30:59,861+ [main] INFO
org.apache.pulsar.client.impl.auth.PulsarSaslClient - Using
JAAS/SASL/GSSAPI auth to connect to server Principal broker/pulsar03,
HTTP 401 Unauthorized
Reason: HTTP 401 Unauthorized
```

And I want to cherry-pick https://github.com/apache/pulsar/pull/15121 into
branch-2.10 to fix it.

### Background
When using Kerberos for authentication, Pulsar works like this:
- client: init ticket
- request to broker
- broker identifies the client (Broker can confirm the ticket is valid by
Kerberos)
- sends a token(we call it sasl_role_token) to the client ( at this moment,
the session is successfully created )
- then the client will be authenticated through sasl_role_token, do not use
Kerberos anymore.

The `sasl_role_token` is generated by this logic: `Sha512(saslRoleName,
${secret})`, we call the `secret` sasl_sign_secret.
In version `2.10.x`, the variable `secret` is a random string initialized
when the broker starts.

### Issue 1
If a cluster includes two brokers, and a topic `public/default/tp1` is
owned by broker-0. We will get an error when we call `pulsar-admin topics
stats public/default/tp1` to broker-1.

The whole process goes like this:
- client succeeds in authentication and gets a token from broker-1
- broker-1 tells the client to redirect to broker-0
- client request to broker-0 carries the sasl_role_token generated by
broker-1
- broker-0 can not decode the sasl_role_token, because it has differ secret
of broker-1, and responses 401

### Issue 2
After authentication is enabled for both Pulsar-Proxy and Pulsar-Broker,
the error occurs as follows
- client succeeds in authentication and gets a token from Pulsar Proxy
- proxy forwards the request to broker
- the broker can not decode the `sasl_role_token`, because it has differed
secret of Pulsar Proxy, and responses 401

### solutions
There have two solutions to solve this issue:

Solution 1
- The client saves different tokens for different servers(e.g. ["broker-0",
"broker-1", "pulsar-proxy"]) so servers will receive the tokens issued by
each other, then we can fix Issue 1.
- Proxy and Broker do not enable authentication simultaneously, then we can
fix Issue 2.

Solution 2
- Make `sasl_sign_secret` configurable. Users can configure this variable
to the same value, then multi servers can decode every
`sasl_role_token.`  PR #15121 does this.

I'd prefer Solution 2 because it is already in the master branch, so I want
to cherry-pick #15121 into branch-2.10.

### Forward Compatibility
In PR #15121, the config `sasl_sign_secret` is a new item in config files.
Since it is required, users will get a system error if does not set it. To
ensure forward compatibility, we can make this variable optional in
branch-2.10


Thanks
Yubiao Feng


Re: [DISCUSS] Cherry-pick #15121 into branch-2.10 to solve the issue sasl authentication failure

2023-03-28 Thread mattisonchao
I agree with cherry-picking PR 15121 to branch-2.10 and keep compatibility.


Best,
Mattison

On Mar 28, 2023, 19:52 +0800, Yubiao Feng 
, wrote:
> Hi community
>
> ### Summary
> The Admin client (`pulsar-admin`) and Java Client (PulsarAdmin) will throw
> Unauthorized Ex in both scenarios:
> - If there have more than one broker in a cluster( see issue 1 below ).
> - If authentication is enabled for both Pulsar-Proxy and Pulsar-Broker( see
> issue 2 below),
>
> ```
> bin/pulsar-admin topics stats persistent://public/default/tp1
> 2023-03-28T07:30:58,453+ [main] INFO
> org.apache.pulsar.client.impl.auth.AuthenticationSasl - JAAS loginContext
> is: PulsarAdmin.
> 2023-03-28T07:30:58,583+ [main] INFO
> org.apache.pulsar.common.sasl.JAASCredentialsContainer - successfully
> logged in.
> 2023-03-28T07:30:58,587+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh thread started.
> 2023-03-28T07:30:58,612+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - Client principal is "
> pulsar-ad...@sn.io".
> 2023-03-28T07:30:58,613+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - Server principal is
> "krbtgt/sn...@sn.io".
> 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT valid starting at:
> Tue Mar 28 07:30:58 UTC 2023
> 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT expires:
> Wed Mar 29 07:30:58 UTC 2023
> 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh sleeping
> until: Wed Mar 29 03:12:29 UTC 2023
> 2023-03-28T07:30:59,861+ [main] INFO
> org.apache.pulsar.client.impl.auth.PulsarSaslClient - Using
> JAAS/SASL/GSSAPI auth to connect to server Principal broker/pulsar03,
> HTTP 401 Unauthorized
> Reason: HTTP 401 Unauthorized
> ```
>
> And I want to cherry-pick https://github.com/apache/pulsar/pull/15121 into
> branch-2.10 to fix it.
>
> ### Background
> When using Kerberos for authentication, Pulsar works like this:
> - client: init ticket
> - request to broker
> - broker identifies the client (Broker can confirm the ticket is valid by
> Kerberos)
> - sends a token(we call it sasl_role_token) to the client ( at this moment,
> the session is successfully created )
> - then the client will be authenticated through sasl_role_token, do not use
> Kerberos anymore.
>
> The `sasl_role_token` is generated by this logic: `Sha512(saslRoleName,
> ${secret})`, we call the `secret` sasl_sign_secret.
> In version `2.10.x`, the variable `secret` is a random string initialized
> when the broker starts.
>
> ### Issue 1
> If a cluster includes two brokers, and a topic `public/default/tp1` is
> owned by broker-0. We will get an error when we call `pulsar-admin topics
> stats public/default/tp1` to broker-1.
>
> The whole process goes like this:
> - client succeeds in authentication and gets a token from broker-1
> - broker-1 tells the client to redirect to broker-0
> - client request to broker-0 carries the sasl_role_token generated by
> broker-1
> - broker-0 can not decode the sasl_role_token, because it has differ secret
> of broker-1, and responses 401
>
> ### Issue 2
> After authentication is enabled for both Pulsar-Proxy and Pulsar-Broker,
> the error occurs as follows
> - client succeeds in authentication and gets a token from Pulsar Proxy
> - proxy forwards the request to broker
> - the broker can not decode the `sasl_role_token`, because it has differed
> secret of Pulsar Proxy, and responses 401
>
> ### solutions
> There have two solutions to solve this issue:
>
> Solution 1
> - The client saves different tokens for different servers(e.g. ["broker-0",
> "broker-1", "pulsar-proxy"]) so servers will receive the tokens issued by
> each other, then we can fix Issue 1.
> - Proxy and Broker do not enable authentication simultaneously, then we can
> fix Issue 2.
>
> Solution 2
> - Make `sasl_sign_secret` configurable. Users can configure this variable
> to the same value, then multi servers can decode every
> `sasl_role_token.` PR #15121 does this.
>
> I'd prefer Solution 2 because it is already in the master branch, so I want
> to cherry-pick #15121 into branch-2.10.
>
> ### Forward Compatibility
> In PR #15121, the config `sasl_sign_secret` is a new item in config files.
> Since it is required, users will get a system error if does not set it. To
> ensure forward compatibility, we can make this variable optional in
> branch-2.10
>
>
> Thanks
> Yubiao Feng


Re: [DISCUSS] Cherry-pick #15121 into branch-2.10 to solve the issue sasl authentication failure

2023-03-28 Thread Dezhi Liu
I agree with cherry-picking PR 15121 to branch-2.10 and keep compatibility.


Best,
Dezhi

On 2023/03/28 11:52:06 Yubiao Feng wrote:
> Hi community
> 
> ### Summary
> The Admin client (`pulsar-admin`) and Java Client (PulsarAdmin) will throw
> Unauthorized Ex in both scenarios:
> - If there have more than one broker in a cluster( see issue 1 below ).
> - If authentication is enabled for both Pulsar-Proxy and Pulsar-Broker( see
> issue 2 below),
> 
> ```
> bin/pulsar-admin topics stats persistent://public/default/tp1
> 2023-03-28T07:30:58,453+ [main] INFO
> org.apache.pulsar.client.impl.auth.AuthenticationSasl - JAAS loginContext
> is: PulsarAdmin.
> 2023-03-28T07:30:58,583+ [main] INFO
> org.apache.pulsar.common.sasl.JAASCredentialsContainer - successfully
> logged in.
> 2023-03-28T07:30:58,587+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh thread started.
> 2023-03-28T07:30:58,612+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - Client principal is "
> pulsar-ad...@sn.io".
> 2023-03-28T07:30:58,613+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - Server principal is
> "krbtgt/sn...@sn.io".
> 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT valid starting at:
> Tue Mar 28 07:30:58 UTC 2023
> 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT expires:
> Wed Mar 29 07:30:58 UTC 2023
> 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh sleeping
> until: Wed Mar 29 03:12:29 UTC 2023
> 2023-03-28T07:30:59,861+ [main] INFO
> org.apache.pulsar.client.impl.auth.PulsarSaslClient - Using
> JAAS/SASL/GSSAPI auth to connect to server Principal broker/pulsar03,
> HTTP 401 Unauthorized
> Reason: HTTP 401 Unauthorized
> ```
> 
> And I want to cherry-pick https://github.com/apache/pulsar/pull/15121 into
> branch-2.10 to fix it.
> 
> ### Background
> When using Kerberos for authentication, Pulsar works like this:
> - client: init ticket
> - request to broker
> - broker identifies the client (Broker can confirm the ticket is valid by
> Kerberos)
> - sends a token(we call it sasl_role_token) to the client ( at this moment,
> the session is successfully created )
> - then the client will be authenticated through sasl_role_token, do not use
> Kerberos anymore.
> 
> The `sasl_role_token` is generated by this logic: `Sha512(saslRoleName,
> ${secret})`, we call the `secret` sasl_sign_secret.
> In version `2.10.x`, the variable `secret` is a random string initialized
> when the broker starts.
> 
> ### Issue 1
> If a cluster includes two brokers, and a topic `public/default/tp1` is
> owned by broker-0. We will get an error when we call `pulsar-admin topics
> stats public/default/tp1` to broker-1.
> 
> The whole process goes like this:
> - client succeeds in authentication and gets a token from broker-1
> - broker-1 tells the client to redirect to broker-0
> - client request to broker-0 carries the sasl_role_token generated by
> broker-1
> - broker-0 can not decode the sasl_role_token, because it has differ secret
> of broker-1, and responses 401
> 
> ### Issue 2
> After authentication is enabled for both Pulsar-Proxy and Pulsar-Broker,
> the error occurs as follows
> - client succeeds in authentication and gets a token from Pulsar Proxy
> - proxy forwards the request to broker
> - the broker can not decode the `sasl_role_token`, because it has differed
> secret of Pulsar Proxy, and responses 401
> 
> ### solutions
> There have two solutions to solve this issue:
> 
> Solution 1
> - The client saves different tokens for different servers(e.g. ["broker-0",
> "broker-1", "pulsar-proxy"]) so servers will receive the tokens issued by
> each other, then we can fix Issue 1.
> - Proxy and Broker do not enable authentication simultaneously, then we can
> fix Issue 2.
> 
> Solution 2
> - Make `sasl_sign_secret` configurable. Users can configure this variable
> to the same value, then multi servers can decode every
> `sasl_role_token.`  PR #15121 does this.
> 
> I'd prefer Solution 2 because it is already in the master branch, so I want
> to cherry-pick #15121 into branch-2.10.
> 
> ### Forward Compatibility
> In PR #15121, the config `sasl_sign_secret` is a new item in config files.
> Since it is required, users will get a system error if does not set it. To
> ensure forward compatibility, we can make this variable optional in
> branch-2.10
> 
> 
> Thanks
> Yubiao Feng
> 


Re: [VOTE] Pulsar Release 2.9.5 Candidate 2

2023-03-28 Thread guo jiwei
+1 (binding)

- Checked the signature
- Start standalone
- Publish and consume messages
- Verified Function and State Function
- Verified Cassandra connector
- Build from the source package



Regards
Jiwei Guo (Tboy)

On Tue, Mar 28, 2023 at 2:34 PM 丛搏  wrote:
>
> +1 (binding)
>
> os: mac 12.3.1, Intel
> java: OpenJDK 17.0.1
>
> - Checked the signature
> - Checked LICENSE
> - Start standalone
> - Publish and consume messages
> - Verified Function and State Function
> - Verified Cassandra connector
> - Build from the source package (maven 3.8.6, openJDK 17.0.1)
> - Run a simple transaction check
>
> Thanks,
> Bo
>
> Cong Zhao  于2023年3月27日周一 23:09写道:
> >
> > This is the third release candidate for Apache Pulsar, version 2.9.5.
> >
> > This release contains 103 commits by 30 contributors.
> > https://github.com/apache/pulsar/compare/v2.9.4...v2.9.5-candidate-2
> >
> > *** Please download, test, and vote on this release. This vote will stay
> > open
> > for at least 72 hours ***
> >
> > Note that we are voting upon the source (tag), binaries are provided for
> > convenience.
> >
> > Source and binary files:
> > https://dist.apache.org/repos/dist/dev/pulsar/pulsar-2.9.5-candidate-2/
> >
> > SHA-512 checksums:
> > 5e1d0c1b38441cdcb36a2f4e59ab9755b39a5c4a0136e078e91ab9bc2169016f195268692cafd6f13a45248dba2e97959b41f3cfbc8659e3cbd0bade0c954998
> > apache-pulsar-2.9.5-bin.tar.gz
> >
> > 72c9f47005636c6e629dd5117b15fdc13bfd9c7efe107be77a9d55b7dfcdda2f941003eb120ea8beeffe44c41bc41c385a2e5a9cb6540d2fe83a6d04ea53a7389d
> > apache-pulsar-2.9.5-src.tar.gz
> >
> > 73d286af64e189cf91c0511d360d98371b7ade1eec67bc6acf6ff766784e9e40388d3da8ae99a206369feaf398b254fff36e2206077041c37b8055ee7edde86eea
> > apache-pulsar-offloaders-2.9.5-bin.tar.gz
> >
> > Maven staging repo:
> > https://repository.apache.org/content/repositories/orgapachepulsar-1222/
> >
> > The tag to be voted upon:
> > v2.9.5-candidate-2 (c75c811ee48f51cf74f399f5b364bc1527186b34)
> > https://github.com/apache/pulsar/releases/tag/v2.9.5-candidate-2
> >
> > Pulsar's KEYS file containing PGP keys you use to sign the release:
> > https://downloads.apache.org/pulsar/KEYS
> >
> > Docker images:
> >
> > 
> > https://hub.docker.com/layers/czcoder/pulsar/2.9.5/images/sha256-c6d3435d5699cb3697ee2ddc4f8a45e0ac5e35d8aefd557e280b7cf91366b981?context=explore
> >
> > 
> > https://hub.docker.com/layers/czcoder/pulsar-all/2.9.5/images/sha256-a09a8e177ca7856c29dc8b9828cd293c6d44b473add20d1877bb3137b94a20c5?context=explore
> >
> > 
> > https://hub.docker.com/layers/czcoder/pulsar-grafana/2.9.5/images/sha256-c43a489c65cf6c407d6c3be6fc7a001227805b1aaa9413115cf55ba11a1e329f?context=explore
> >
> > Please download the source package, and follow the README to build
> > and run the Pulsar standalone service.
> >
> > Thanks
> > Cong Zhao


Re: [VOTE] PIP-257: Add Open ID Connect Support to Server Components

2023-03-28 Thread Devin Bost
+1

Devin G. Bost


On Tue, Mar 28, 2023 at 1:57 AM Enrico Olivelli  wrote:

> +1 (binding)
>
> Enrico
>
> Il giorno mar 28 mar 2023 alle ore 04:59 Dave Fisher
>  ha scritto:
> >
> > +1 (binding)
> >
> > Sent from my iPhone
> >
> > > On Mar 27, 2023, at 12:59 PM, Lari Hotari  wrote:
> > >
> > > +1, binding
> > >
> > > -Lari
> > >
> > >> On Mon, 27 Mar 2023, 22.37 Michael Marshall, 
> wrote:
> > >>
> > >> Hi Pulsar Community,
> > >>
> > >> This thread is to start the vote for PIP 257.
> > >>
> > >> Discussion:
> > >> https://lists.apache.org/thread/ttdh74t6v5nznmtw436otk8qdymjvrfk
> > >> Issue: https://github.com/apache/pulsar/issues/19771
> > >> Work in Progress Implementations:
> > >> - https://github.com/apache/pulsar/pull/19849
> > >> - https://github.com/apache/pulsar/pull/19888
> > >>
> > >> The implementation still has some minor details to iron out, but I
> > >> don't think those are a large enough issue to delay the vote any
> > >> longer. If you feel otherwise, please let me know and continue the
> > >> discussion on the discussion thread.
> > >>
> > >> Thanks,
> > >> Michael
> > >>
> >
>


[VOTE] Pulsar Release 2.9.5 Candidate 2

2023-03-28 Thread Cong Zhao
This is the third release candidate for Apache Pulsar, version 2.9.5.

This release contains 103 commits by 30 contributors.
https://github.com/apache/pulsar/compare/v2.9.4...v2.9.5-candidate-2

*** Please download, test, and vote on this release. This vote will stay
open
for at least 72 hours ***

Note that we are voting upon the source (tag), binaries are provided for
convenience.

Source and binary files:
https://dist.apache.org/repos/dist/dev/pulsar/pulsar-2.9.5-candidate-2/

SHA-512 checksums:
5e1d0c1b38441cdcb36a2f4e59ab9755b39a5c4a0136e078e91ab9bc2169016f195268692cafd6f13a45248dba2e97959b41f3cfbc8659e3cbd0bade0c954998
apache-pulsar-2.9.5-bin.tar.gz
72c9f47005636c6e629dd5117b15fdc13bfd9c7efe107be77a9d55b7dfcdda2f941003eb120ea8beeffe44c41bc41c385a2e5a9cb6540d2fe83a6d04ea53a7389d
apache-pulsar-2.9.5-src.tar.gz
73d286af64e189cf91c0511d360d98371b7ade1eec67bc6acf6ff766784e9e40388d3da8ae99a206369feaf398b254fff36e2206077041c37b8055ee7edde86eea
apache-pulsar-offloaders-2.9.5-bin.tar.gz

Maven staging repo:
https://repository.apache.org/content/repositories/orgapachepulsar-1222/

The tag to be voted upon:
v2.9.5-candidate-2 (c75c811ee48f51cf74f399f5b364bc1527186b34)
https://github.com/apache/pulsar/releases/tag/v2.9.5-candidate-2

Pulsar's KEYS file containing PGP keys you use to sign the release:
https://downloads.apache.org/pulsar/KEYS

Docker images:


https://hub.docker.com/layers/czcoder/pulsar/2.9.5/images/sha256-c6d3435d5699cb3697ee2ddc4f8a45e0ac5e35d8aefd557e280b7cf91366b981?context=explore


https://hub.docker.com/layers/czcoder/pulsar-all/2.9.5/images/sha256-a09a8e177ca7856c29dc8b9828cd293c6d44b473add20d1877bb3137b94a20c5?context=explore


https://hub.docker.com/layers/czcoder/pulsar-grafana/2.9.5/images/sha256-c43a489c65cf6c407d6c3be6fc7a001227805b1aaa9413115cf55ba11a1e329f?context=explore

Please download the source package, and follow the README to build
and run the Pulsar standalone service.

Thanks
Cong Zhao


Re: [DISCUSS] Cherry-pick #15121 into branch-2.10 to solve the issue sasl authentication failure

2023-03-28 Thread PengHui Li
Looks good to me to make it optional in branch-2.10 since we don't want to
introduce any break behaviors in the subsequent patch releases.

Thanks,
Penghui

On Tue, Mar 28, 2023 at 9:39 PM Dezhi Liu  wrote:

> I agree with cherry-picking PR 15121 to branch-2.10 and keep compatibility.
>
>
> Best,
> Dezhi
>
> On 2023/03/28 11:52:06 Yubiao Feng wrote:
> > Hi community
> >
> > ### Summary
> > The Admin client (`pulsar-admin`) and Java Client (PulsarAdmin) will
> throw
> > Unauthorized Ex in both scenarios:
> > - If there have more than one broker in a cluster( see issue 1 below ).
> > - If authentication is enabled for both Pulsar-Proxy and Pulsar-Broker(
> see
> > issue 2 below),
> >
> > ```
> > bin/pulsar-admin topics stats persistent://public/default/tp1
> > 2023-03-28T07:30:58,453+ [main] INFO
> > org.apache.pulsar.client.impl.auth.AuthenticationSasl - JAAS loginContext
> > is: PulsarAdmin.
> > 2023-03-28T07:30:58,583+ [main] INFO
> > org.apache.pulsar.common.sasl.JAASCredentialsContainer - successfully
> > logged in.
> > 2023-03-28T07:30:58,587+ [pulsar-tgt-refresh-thread] INFO
> > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh thread
> started.
> > 2023-03-28T07:30:58,612+ [pulsar-tgt-refresh-thread] INFO
> > org.apache.pulsar.common.sasl.TGTRefreshThread - Client principal is "
> > pulsar-ad...@sn.io".
> > 2023-03-28T07:30:58,613+ [pulsar-tgt-refresh-thread] INFO
> > org.apache.pulsar.common.sasl.TGTRefreshThread - Server principal is
> > "krbtgt/sn...@sn.io".
> > 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT valid starting at:
> > Tue Mar 28 07:30:58 UTC 2023
> > 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT expires:
> > Wed Mar 29 07:30:58 UTC 2023
> > 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh sleeping
> > until: Wed Mar 29 03:12:29 UTC 2023
> > 2023-03-28T07:30:59,861+ [main] INFO
> > org.apache.pulsar.client.impl.auth.PulsarSaslClient - Using
> > JAAS/SASL/GSSAPI auth to connect to server Principal broker/pulsar03,
> > HTTP 401 Unauthorized
> > Reason: HTTP 401 Unauthorized
> > ```
> >
> > And I want to cherry-pick https://github.com/apache/pulsar/pull/15121
> into
> > branch-2.10 to fix it.
> >
> > ### Background
> > When using Kerberos for authentication, Pulsar works like this:
> > - client: init ticket
> > - request to broker
> > - broker identifies the client (Broker can confirm the ticket is valid by
> > Kerberos)
> > - sends a token(we call it sasl_role_token) to the client ( at this
> moment,
> > the session is successfully created )
> > - then the client will be authenticated through sasl_role_token, do not
> use
> > Kerberos anymore.
> >
> > The `sasl_role_token` is generated by this logic: `Sha512(saslRoleName,
> > ${secret})`, we call the `secret` sasl_sign_secret.
> > In version `2.10.x`, the variable `secret` is a random string initialized
> > when the broker starts.
> >
> > ### Issue 1
> > If a cluster includes two brokers, and a topic `public/default/tp1` is
> > owned by broker-0. We will get an error when we call `pulsar-admin topics
> > stats public/default/tp1` to broker-1.
> >
> > The whole process goes like this:
> > - client succeeds in authentication and gets a token from broker-1
> > - broker-1 tells the client to redirect to broker-0
> > - client request to broker-0 carries the sasl_role_token generated by
> > broker-1
> > - broker-0 can not decode the sasl_role_token, because it has differ
> secret
> > of broker-1, and responses 401
> >
> > ### Issue 2
> > After authentication is enabled for both Pulsar-Proxy and Pulsar-Broker,
> > the error occurs as follows
> > - client succeeds in authentication and gets a token from Pulsar Proxy
> > - proxy forwards the request to broker
> > - the broker can not decode the `sasl_role_token`, because it has
> differed
> > secret of Pulsar Proxy, and responses 401
> >
> > ### solutions
> > There have two solutions to solve this issue:
> >
> > Solution 1
> > - The client saves different tokens for different servers(e.g.
> ["broker-0",
> > "broker-1", "pulsar-proxy"]) so servers will receive the tokens issued by
> > each other, then we can fix Issue 1.
> > - Proxy and Broker do not enable authentication simultaneously, then we
> can
> > fix Issue 2.
> >
> > Solution 2
> > - Make `sasl_sign_secret` configurable. Users can configure this variable
> > to the same value, then multi servers can decode every
> > `sasl_role_token.`  PR #15121 does this.
> >
> > I'd prefer Solution 2 because it is already in the master branch, so I
> want
> > to cherry-pick #15121 into branch-2.10.
> >
> > ### Forward Compatibility
> > In PR #15121, the config `sasl_sign_secret` is a new item in config
> files.
> > Since it is required, users will get a system error if does not set it.
> To
>

Re: [DISCUSS] Cherry-pick #15121 into branch-2.10 to solve the issue sasl authentication failure

2023-03-28 Thread 丛搏
+1 (Solution 2)

Thanks,
Bo

PengHui Li  于2023年3月29日周三 09:47写道:
>
> Looks good to me to make it optional in branch-2.10 since we don't want to
> introduce any break behaviors in the subsequent patch releases.
>
> Thanks,
> Penghui
>
> On Tue, Mar 28, 2023 at 9:39 PM Dezhi Liu  wrote:
>
> > I agree with cherry-picking PR 15121 to branch-2.10 and keep compatibility.
> >
> >
> > Best,
> > Dezhi
> >
> > On 2023/03/28 11:52:06 Yubiao Feng wrote:
> > > Hi community
> > >
> > > ### Summary
> > > The Admin client (`pulsar-admin`) and Java Client (PulsarAdmin) will
> > throw
> > > Unauthorized Ex in both scenarios:
> > > - If there have more than one broker in a cluster( see issue 1 below ).
> > > - If authentication is enabled for both Pulsar-Proxy and Pulsar-Broker(
> > see
> > > issue 2 below),
> > >
> > > ```
> > > bin/pulsar-admin topics stats persistent://public/default/tp1
> > > 2023-03-28T07:30:58,453+ [main] INFO
> > > org.apache.pulsar.client.impl.auth.AuthenticationSasl - JAAS loginContext
> > > is: PulsarAdmin.
> > > 2023-03-28T07:30:58,583+ [main] INFO
> > > org.apache.pulsar.common.sasl.JAASCredentialsContainer - successfully
> > > logged in.
> > > 2023-03-28T07:30:58,587+ [pulsar-tgt-refresh-thread] INFO
> > > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh thread
> > started.
> > > 2023-03-28T07:30:58,612+ [pulsar-tgt-refresh-thread] INFO
> > > org.apache.pulsar.common.sasl.TGTRefreshThread - Client principal is "
> > > pulsar-ad...@sn.io".
> > > 2023-03-28T07:30:58,613+ [pulsar-tgt-refresh-thread] INFO
> > > org.apache.pulsar.common.sasl.TGTRefreshThread - Server principal is
> > > "krbtgt/sn...@sn.io".
> > > 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> > > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT valid starting at:
> > > Tue Mar 28 07:30:58 UTC 2023
> > > 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> > > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT expires:
> > > Wed Mar 29 07:30:58 UTC 2023
> > > 2023-03-28T07:30:58,617+ [pulsar-tgt-refresh-thread] INFO
> > > org.apache.pulsar.common.sasl.TGTRefreshThread - TGT refresh sleeping
> > > until: Wed Mar 29 03:12:29 UTC 2023
> > > 2023-03-28T07:30:59,861+ [main] INFO
> > > org.apache.pulsar.client.impl.auth.PulsarSaslClient - Using
> > > JAAS/SASL/GSSAPI auth to connect to server Principal broker/pulsar03,
> > > HTTP 401 Unauthorized
> > > Reason: HTTP 401 Unauthorized
> > > ```
> > >
> > > And I want to cherry-pick https://github.com/apache/pulsar/pull/15121
> > into
> > > branch-2.10 to fix it.
> > >
> > > ### Background
> > > When using Kerberos for authentication, Pulsar works like this:
> > > - client: init ticket
> > > - request to broker
> > > - broker identifies the client (Broker can confirm the ticket is valid by
> > > Kerberos)
> > > - sends a token(we call it sasl_role_token) to the client ( at this
> > moment,
> > > the session is successfully created )
> > > - then the client will be authenticated through sasl_role_token, do not
> > use
> > > Kerberos anymore.
> > >
> > > The `sasl_role_token` is generated by this logic: `Sha512(saslRoleName,
> > > ${secret})`, we call the `secret` sasl_sign_secret.
> > > In version `2.10.x`, the variable `secret` is a random string initialized
> > > when the broker starts.
> > >
> > > ### Issue 1
> > > If a cluster includes two brokers, and a topic `public/default/tp1` is
> > > owned by broker-0. We will get an error when we call `pulsar-admin topics
> > > stats public/default/tp1` to broker-1.
> > >
> > > The whole process goes like this:
> > > - client succeeds in authentication and gets a token from broker-1
> > > - broker-1 tells the client to redirect to broker-0
> > > - client request to broker-0 carries the sasl_role_token generated by
> > > broker-1
> > > - broker-0 can not decode the sasl_role_token, because it has differ
> > secret
> > > of broker-1, and responses 401
> > >
> > > ### Issue 2
> > > After authentication is enabled for both Pulsar-Proxy and Pulsar-Broker,
> > > the error occurs as follows
> > > - client succeeds in authentication and gets a token from Pulsar Proxy
> > > - proxy forwards the request to broker
> > > - the broker can not decode the `sasl_role_token`, because it has
> > differed
> > > secret of Pulsar Proxy, and responses 401
> > >
> > > ### solutions
> > > There have two solutions to solve this issue:
> > >
> > > Solution 1
> > > - The client saves different tokens for different servers(e.g.
> > ["broker-0",
> > > "broker-1", "pulsar-proxy"]) so servers will receive the tokens issued by
> > > each other, then we can fix Issue 1.
> > > - Proxy and Broker do not enable authentication simultaneously, then we
> > can
> > > fix Issue 2.
> > >
> > > Solution 2
> > > - Make `sasl_sign_secret` configurable. Users can configure this variable
> > > to the same value, then multi servers can decode every
> > > `sasl_role_token.`  PR #15121 does this.
> > >
> > > I'd prefer S

[ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread guo jiwei
Dear Community,

We are thrilled to announce that Qiang Zhao
(https://github.com/mattisonchao) has been invited and has accepted the
role of member of the Apache Pulsar Project Management Committee (PMC).

Qiang has been a vital asset to our community, consistently
demonstrating his dedication and active participation through
significant contributions. In addition to his technical contributions,
Qiang also plays an important role in reviewing pull requests and
ensuring the overall quality of our project. We look forward to his
continued contributions.

On behalf of the Pulsar PMC, we extend a warm welcome and
congratulations to Qiang Zhao.

Best regards
Jiwei


Re: [ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread tison
Congrats!

Best,
tison.


guo jiwei  于2023年3月29日周三 11:22写道:

> Dear Community,
>
> We are thrilled to announce that Qiang Zhao
> (https://github.com/mattisonchao) has been invited and has accepted the
> role of member of the Apache Pulsar Project Management Committee (PMC).
>
> Qiang has been a vital asset to our community, consistently
> demonstrating his dedication and active participation through
> significant contributions. In addition to his technical contributions,
> Qiang also plays an important role in reviewing pull requests and
> ensuring the overall quality of our project. We look forward to his
> continued contributions.
>
> On behalf of the Pulsar PMC, we extend a warm welcome and
> congratulations to Qiang Zhao.
>
> Best regards
> Jiwei
>


Re: [ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread Horizon
Congrats!

> 2023年3月29日 11:24,tison  写道:
> 
> Congrats!



Re: [ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread Baodi Shi
 Congrats! Qiang.


Thanks,
Baodi Shi


在 2023年3月29日 11:27:58 上,Horizon <1060026...@qq.com.invalid> 写道:

> Congrats!
>
> 2023年3月29日 11:24,tison  写道:
>
>
> Congrats!
>
>
>


Re: [ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread 丛搏
Congrats!

Thanks,
Bo

Baodi Shi  于2023年3月29日周三 11:29写道:
>
>  Congrats! Qiang.
>
>
> Thanks,
> Baodi Shi
>
>
> 在 2023年3月29日 11:27:58 上,Horizon <1060026...@qq.com.invalid> 写道:
>
> > Congrats!
> >
> > 2023年3月29日 11:24,tison  写道:
> >
> >
> > Congrats!
> >
> >
> >


Re: [ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread Dave Fisher
Congratulations!

Best,
Dave

Sent from my iPhone

> On Mar 28, 2023, at 8:29 PM, Baodi Shi  wrote:
> 
>  Congrats! Qiang.
> 
> 
> Thanks,
> Baodi Shi
> 
> 
>> 在 2023年3月29日 11:27:58 上,Horizon <1060026...@qq.com.invalid> 写道:
>> 
>> Congrats!
>> 
>> 2023年3月29日 11:24,tison  写道:
>> 
>> 
>> Congrats!
>> 
>> 
>> 



Re: [ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread Yubiao Feng
Congrats! Qiang.

Thanks
Yubiao

On Wed, Mar 29, 2023 at 11:22 AM guo jiwei  wrote:

> Dear Community,
>
> We are thrilled to announce that Qiang Zhao
> (https://github.com/mattisonchao) has been invited and has accepted the
> role of member of the Apache Pulsar Project Management Committee (PMC).
>
> Qiang has been a vital asset to our community, consistently
> demonstrating his dedication and active participation through
> significant contributions. In addition to his technical contributions,
> Qiang also plays an important role in reviewing pull requests and
> ensuring the overall quality of our project. We look forward to his
> continued contributions.
>
> On behalf of the Pulsar PMC, we extend a warm welcome and
> congratulations to Qiang Zhao.
>
> Best regards
> Jiwei
>


Re: [DISCUSS] PIP-260: Client consumer filter received messages

2023-03-28 Thread 丛搏
Hi, all :

Thanks to everyone who discussed it.

Our current care points include the following aspects:

1. The filtering efficiency of the client consumer is not as
good as doing something directly in startMessageId
2. Does not support reset cursor

Because my previous PIP description is to add configuration
in consumerBuilder. The definition of this configuration is not
clear, and it will cause great trouble to users.

We can add a separate configuration that is only used for
acks with transactions. Simple example:

```
ConsumerBuilder transactionConfiguration(ConsumerTransactionConfiguration);

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@InterfaceAudience.Public
@InterfaceStability.Stable

public class ConsumerTransactionConfiguration {
   boolean isFilterReceivedMessagesEnabled = false;
}

```

if the design of startMessageId can provide the feature,
we can remove the configuration, or currently has a startMessageId
closed loop solution, I agree to use startMessageId.

As for the reset cursor, I think it is another problem,
not related to this PIP.

Thanks,
Bo

丛搏  于2023年3月24日周五 18:53写道:
>
> Hi, Michael:
>
> I thought about it carefully, and using 'startMessageId'
> is indeed a good idea. But it is more complicated, we
> need to ensure its absolute correctness, and take
> performance into consideration. If you can come up
>  with a closed-loop solution based on 'startMessageId',
> I support you. If it can't take into account performance
> and correctness, I think we will make a combination of
> our two solutions. You are responsible for ensuring that
> a certain degree of messages are not re-delivered, which
>  reduces the overhead caused by the repeated delivery
> of many messages. My design is responsible for
> the final consistency.
>
> Thanks,
> Bo
>
> Michael Marshall  于2023年3月22日周三 14:22写道:
> >
> > Because we already send the `startMessageId`, there is a chance where
> > we might not even need to update the protocol for the
> > CommandSubscribe. In light of that, I quickly put together a PR
> > showing how that field might be used to inform the broker where to
> > start the read position for the cursor.
> >
> > https://github.com/apache/pulsar/pull/19892
> >
> > The PR is not complete, but it does convey the general idea. I wrote
> > additional details in the draft's description.
> >
> > Thanks,
> > Michael
> >
> > On Tue, Mar 21, 2023 at 11:31 PM Michael Marshall  
> > wrote:
> > >
> > > I am not following your objections to the protocol solution. It might
> > > be more productive if I provided a draft PR with a sample
> > > implementation. I'm not sure that I'll have time, but I'll try to put
> > > something together this week.
> > >
> > > > At least it will simplify the process of using cumulative ack with the
> > > > transaction.
> > >
> > > Is this the underlying motivation for the PIP?
> > >
> > > From my perspective, the PIP is seeking to decrease duplicate messages
> > > experienced due to disconnections from the broker.
> > >
> > > > The problem of the resetting cursor can be optimized in the future
> > >
> > > Why should we push off solving this problem? It seems fundamental to
> > > this PIP and should not be ignored. At the very least, I think we need
> > > to have an idea of what the future solution would be before we defer
> > > its implementation.
> > >
> > > Thanks,
> > > Michael
> > >
> > >
> > > On Tue, Mar 21, 2023 at 10:52 PM 丛搏  wrote:
> > > >
> > > > Hi, Michael
> > > > > In this case, the consumer does not have the source of truth for the
> > > > > readPosition. It would leave the new protocol field for `readPosition`
> > > > > empty and the broker would use its source of truth for the read
> > > > > position.
> > > > application has received all the messages by application thread. we 
> > > > also need a
> > > > correct `startPosition`, right? but in your way, we will think about
> > > > the consumer
> > > > hasn't received any messages.
> > > >
> > > > >
> > > > > > why do we need to invoke `BlockingQueue.take` and `synchronized` in 
> > > > > > the
> > > > > > same logic? it's a bad code.
> > > > >
> > > > > We don't need to synchronize this code here because the logic will
> > > > > come after the consumer has been disconnected from broker a and before
> > > > > it is connected to broker b.
> > > > The application takes a message from the queue then reconnect,
> > > > the SubCommond can use the right startPostion? example:
> > > > 1. application receives one message with `MessageId = 1`
> > > > 2. consumer reconnect discovers the queue is empty, and the
> > > > lastDequeMessageId doesn't change.
> > > > 3. consumer sends a subcommand with MessageId.earliest, the `MessageId 
> > > > = 1`
> > > > will redeliver from broker to client consumer, right?
> > > >
> > > > As we can see in the example, the application also can receive
> > > > `MessageId = 1`, right?
> > > > > We would not need to lock here because we do not enqueue new messages
> > > > > after we've be

Re: [RFR] Issue triaging contribution guide

2023-03-28 Thread Yu
Hi tison,

Thanks for raising this up! Just my $2:

==Guide Structure==

Suggest optimizing the guide structure with the EPPO and 5W2H methods to
clarify info and improve readability.

For example,

## What is issue triaging?
...

## Why is issue triaging beneficial?
...

## How to triage issues? (a step-by-step flow)
...

## References
### Label instructions
### Issue triage checklist
...

## Related topics
...

==Issue Labels Instructions==

To instruct users how to use issue labels, does it make sense to add
explanations for them?
Currently, we only have explanations for partial labels. [1].

The meaning of some labels is clear at 1st glance, while some are blur.

For example,

- `component/ML`
What does this mean?

- `lifecycle/stale`, `Stale`
What are the differences between them?
Now the issues labeled with them only show they haven't been updated for
some time, but no more action is taken next step. Can we define it?

-  `help wanted`
To help newbies find proper issues in minimal time, some communities use
"good-first-issuse" while others use "help wanted". We can clarify this
explicitly.

==New Issue Labels==

Does it make sense to create new labels like "priority" or "severity"?

For example, p0, p1, p2; s0, s1, s2.

The pros (help identify and solve urgent or severe issues quickly) outweigh
the cons (increase complexity a little).

==Lean Toward Closing==

For the cases that can close issues, can we add more applicable scenarios
to reduce triagers "guilties"? (since we cannot satisfy all users and need
to keep the project maintainable)

==Re-Evaluating Closed Issues==

Does it make sense to add some instructions for this?

This happens at intervals because decisions might be adjusted based on
additional info that surfaces later.

==Visuals==

Suggest creating illustrations [2] to give users a holistic and bird-eye
view of the whole workflow. A picture is worth a thousand words.

==

Yu

[1] https://pulsar.apache.org/contribute/develop-labels/
[2]
https://equiptowerhamlets.nhs.uk/wp-content/uploads/2020/06/Triage-process-overview.jpg


On Tue, Mar 28, 2023 at 5:20 PM tison  wrote:

> Hi,
>
> I squashed over 1000 stale issues and PRs in Dec. 2022. During the work, I
> notice that the community may lack some written guides for issue triaging,
> and even if a contributor is willing to help, he/she doesn't know what to
> do but just leave it as is.
>
> I wrote a draft for this case[1]. It encourages contributors to do basic
> classification and encourages committers to close issues as not planned
> when it's the case.
>
> Moving forward a valid issue requires knowledge and time, but by sharing &
> aligning issue triage patterns, we can reduce a few engineering loss.
>
> Best,
> tison.
>
> [1] https://github.com/apache/pulsar-site/pull/485
>


Re: [ANNOUNCE] Qiang Zhao as new PMC member in Apache Pulsar

2023-03-28 Thread Xiangying Meng
 Congrats! Qiang.

Sincerely,
Xiangying

On Wed, Mar 29, 2023 at 11:51 AM Yubiao Feng
 wrote:

> Congrats! Qiang.
>
> Thanks
> Yubiao
>
> On Wed, Mar 29, 2023 at 11:22 AM guo jiwei  wrote:
>
> > Dear Community,
> >
> > We are thrilled to announce that Qiang Zhao
> > (https://github.com/mattisonchao) has been invited and has accepted the
> > role of member of the Apache Pulsar Project Management Committee (PMC).
> >
> > Qiang has been a vital asset to our community, consistently
> > demonstrating his dedication and active participation through
> > significant contributions. In addition to his technical contributions,
> > Qiang also plays an important role in reviewing pull requests and
> > ensuring the overall quality of our project. We look forward to his
> > continued contributions.
> >
> > On behalf of the Pulsar PMC, we extend a warm welcome and
> > congratulations to Qiang Zhao.
> >
> > Best regards
> > Jiwei
> >
>