You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pulsar.apache.org by Apache Pulsar Slack <ap...@gmail.com> on 2020/08/28 09:11:05 UTC

Slack digest for #general - 2020-08-28

2020-08-27 09:43:22 UTC - SenthilM: @SenthilM has joined the channel
----
2020-08-27 11:02:09 UTC - Julius S: Were you in the right database when you issued the grants?
----
2020-08-27 11:15:36 UTC - Ali Ahmed: <https://github.com/cr-org/supernova>
cool : Frank Kelly, Ali Ahmed
----
2020-08-27 13:52:15 UTC - Frank Kelly: Is there anyway to make the Pulsar Java Client "fail fast" - I'm testing some AuthN/AuthZ scenarios and rather than wait for all the retries I'd rather it just stop on the first AuthN/AuthZ exception?
----
2020-08-27 15:16:18 UTC - Thomas O'Neill: According to the documentation
&gt; Normal topics are served only by a single broker
How do you handle a broker going down that has a topic you are writing or reading from? Can you reconnect through pulsar-proxy to another broker and continue executing, or do you need to wait for the broker to come back online? I am running pulsar in Kubernetes and there is a possibility of the node getting going down and am wondering how others have worked around this issue. All connections are made through pulsar-proxy to the brokers.
----
2020-08-27 15:38:27 UTC - Raman Gupta: Not knowing exactly where that note is coming from in the docs, but I *think* that is referring more to performance i.e. as opposed to a partitioned topic that would be served by multiple brokers.

From a resilience perspective, I don't think it matters. Another broker should quickly take over the topic and clients will use that instead (transparently).
----
2020-08-27 15:41:33 UTC - Raman Gupta: If the number of partitions for a partitioned topic is changed, is message ordering for past messages lost? Or does that change only affect future writes, thus maintaining order?
----
2020-08-27 15:55:22 UTC - Thomas O'Neill: Thanks, I read it under the Partitioned topics section in the Messaging documentation. <https://pulsar.apache.org/docs/en/concepts-messaging/>
----
2020-08-27 17:01:40 UTC - Austin Bennett: @Austin Bennett has joined the channel
----
2020-08-27 17:19:28 UTC - Addison Higham: @Thomas O'Neill as @Raman Gupta mentioned, in the event that a broker fails, pretty quickly the brokers will notice that the broker has failed and a new broker will take control of that bundle of topics.

During that period of time, the clients will buffer any messages and as soon as the new broker is ready it will flush those messages
----
2020-08-27 18:43:50 UTC - Maksym Domarev: I want to TTL not the message but a topic e.g. to do a clean up the topics itself, I want to have a very dynamic configuration that will generate thousanfs of topics a day
----
2020-08-27 18:44:27 UTC - Maksym Domarev: some of them will remain active some of them never re-use again, so in general if I will clean it once a week i will not have any issues, but if it will never clean it will be a problem
----
2020-08-27 18:55:50 UTC - Evan Furman: Do we have to enable anything to take advantage of `pulsar_detector` in the grafana dashboards? It doesn’t look like `pulsar_detector_publish_latency_ms` or any other metrics are being scraped
----
2020-08-27 19:17:48 UTC - Derek Moore: Schema algebras would allow the declarative definition of how aggregates are maintained. Has Pulsar talked much about those?
----
2020-08-27 19:25:06 UTC - Derek Moore: What's the `journalSyncData=false` bug that Confluent mentions here: <https://www.confluent.io/blog/kafka-fastest-messaging-system/>
----
2020-08-27 19:25:13 UTC - Addison Higham: I haven't seen much discussion in the community about it, but personally something I am very interested in :slightly_smiling_face: if you have any ideas of how it might be applicable to Pulsar writing up a small doc or blog post for discussion can be pretty useful
----
2020-08-27 19:28:35 UTC - Addison Higham: Not sure, they asked one question here and we asked to open up an issue with more context and info about their configuration, but that never happened.
----
2020-08-27 19:34:26 UTC - Addison Higham: (see <https://apache-pulsar.slack.com/archives/C5Z4T36F7/p1594655381230800>)


Also, just FYI, there is a change that is in progress currently which will be to bypass the journal (see <https://github.com/apache/bookkeeper/pull/2401>) that will allow bookkeeper to be configured to run more in line with how kafka works

I don't think many people run with sync set to false, so I am not sure if there is enough data to know what happened there.

If you have more questions about the article in general, there was some discussion in <#C5Z1W2BDY|random>
+1 : Derek Moore
----
2020-08-27 19:43:03 UTC - Addison Higham: any progress here? sorry meant to dig into this earlier.

I believe this should be doable but it may depend on the way you are creating the client/product/etc

Can you share a code example and also a test log if you have it?
----
2020-08-27 19:47:11 UTC - Addison Higham: if you are using a key and a hash-partition router, then many keys will likely go to new partitions, but old messages will still stay in their older partitions. Compaction would change that however.

Also, just to be clear, you would probably see some re-ordering around the period of the change. For example, with an exclusive consumer to a partitioned topic, it is actually multiple consumers internally that all may be at different offsets in each partition, which could lead to a consumer further ahead reading newly keyed data from new topics before another consumer finishes reading all the old keyed data
----
2020-08-27 19:47:20 UTC - Frank Kelly: No success so far - I'm just trying to instantiate a pulsar client either without a token
```            return PulsarClient.builder()
                    .allowTlsInsecureConnection(false)
                    .serviceUrl("pulsar://" + SERVER + ":6650")
                    .build();```
or with a bad JWT token
```            return PulsarClient.builder()
                    .allowTlsInsecureConnection(false)
                    .serviceUrl("pulsar://" + SERVER + ":6650")
                    .authentication(new CogitoStreamAccessJWTAuthentication("HeyIamNotAValidJWTToken"))
                    .build();```
then doing an `assertThrows`
```        assertThrows(PulsarClientException.class, () -&gt; pulsarClient.newProducer()
                .topic(topicBeingRequested)
                .create());```
but I have to wait about 30 seconds for the retries
----
2020-08-27 19:48:19 UTC - Frank Kelly: I see a lot of these in the Test debug logs
```2020-08-27 15:46:49,028 - WARN  - [pulsar-client-io-8-1:BinaryProtoLookupService@197] - [<persistent://testTenant1/testNamespace1/my-topic-1598557604630>] failed to get Partitioned metadata : org.apache.pulsar.client.api.PulsarClientException: Disconnected from server at pulsar-broker.cogito.svc.cluster.local/10.100.43.26:6650
java.util.concurrent.CompletionException: org.apache.pulsar.client.api.PulsarClientException$LookupException: org.apache.pulsar.client.api.PulsarClientException: Disconnected from server at pulsar-broker.cogito.svc.cluster.local/10.100.43.26:6650
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:704)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
	at org.apache.pulsar.client.impl.ClientCnx.handleLookupResponse(ClientCnx.java:474)
	at org.apache.pulsar.common.protocol.PulsarDecoder.channelRead(PulsarDecoder.java:131)
	.
    .
    .
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.apache.pulsar.client.api.PulsarClientException$LookupException: org.apache.pulsar.client.api.PulsarClientException: Disconnected from server at pulsar-broker.cogito.svc.cluster.local/10.100.43.26:6650
	at org.apache.pulsar.client.impl.ClientCnx.getPulsarClientException(ClientCnx.java:991)
	at org.apache.pulsar.client.impl.ClientCnx.handleLookupResponse(ClientCnx.java:475)
	... 22 more```
----
2020-08-27 19:49:32 UTC - Raman Gupta: That wouldn't be the case with Key_Shared right? Since a given key should only be assigned to one consumer?
----
2020-08-27 19:58:47 UTC - Addison Higham: I am not 100% sure on that, it *should* but I don't know how extensively it has been tested
----
2020-08-27 19:59:08 UTC - Addison Higham: I will ask around and try an update here
----
2020-08-27 19:59:16 UTC - Addison Higham: ah is this via a proxy?
----
2020-08-27 19:59:51 UTC - Raman Gupta: It surprises me that the docs mention nothing about these caveats. Proper ordering can be very important for many use cases.
----
2020-08-27 19:59:58 UTC - Raman Gupta: Thanks for checking...
----
2020-08-27 20:01:16 UTC - Frank Kelly: Yep
----
2020-08-27 20:04:52 UTC - Enrico Olivelli: @Viktor did you create the issue on BK?
----
2020-08-27 20:10:50 UTC - Addison Higham: `maxNumberOfRejectedRequestPerConnection` is what controls that but I am wondering if it is working as it should. Some requests, such as subscribing, we properly throw an exception right away
----
2020-08-27 20:11:03 UTC - Addison Higham: that seems like we should be consistent for lookups as well
----
2020-08-27 20:12:00 UTC - Frank Kelly: Yeah I tried that but it didn't seem to impact anything for my testing
----
2020-08-27 20:12:41 UTC - Frank Kelly: Again it's kinda weird what I'm trying to do - but having some level of control over the number of retries would be nice if people would like to "fail fast"
----
2020-08-27 20:14:23 UTC - Addison Higham: how low did you set the value?
----
2020-08-27 20:14:44 UTC - Addison Higham: it is within a 30 second window, so depending on your backoff values, you would need to set it quite low
----
2020-08-27 20:17:26 UTC - Addison Higham: I searched around a bit and couldn't find anything :shrug:
----
2020-08-27 20:17:31 UTC - Frank Kelly: I set it to 1 :slightly_smiling_face:
----
2020-08-27 20:17:58 UTC - Raman Gupta: Also, a follow-up on compaction: will compaction cause messages, both old and new, to be placed into partitions in a consistent way? i.e. will a consumer re-reading the topic from the beginning be guaranteed a properly ordered read?
----
2020-08-27 20:20:41 UTC - Addison Higham: two things:
1. if you have a way to try this direct against a broker (perhaps a port forward?), I would be very curious to see if you get a different result
2. Could you make a github issue for this? I expect there are some issues here
----
2020-08-27 20:21:45 UTC - Frank Kelly: 2. Will do
1. OK and this maybe just me but with a port-forward to my broker (all Pulsar components in my local minikube) it would refuse the connection - again this is probably something silly I set up but not sure
----
2020-08-27 20:25:38 UTC - Addison Higham: ah if running with the helm chart there should be a service for pulsar brokers as well
----
2020-08-27 20:25:49 UTC - Addison Higham: not sure why port forward wouldn't work, but you could try that
----
2020-08-27 20:26:29 UTC - Frank Kelly: Yeah I was doing port forward in all test cases (proxy and broker) and there was a service for broker with those ports (8080, 6650)
----
2020-08-27 20:27:35 UTC - Frank Kelly: Hold on might be have figured it out. . . . .
----
2020-08-27 20:29:12 UTC - Frank Kelly: Nope. Here is the service setup
```$ kubectl get services | grep pulsar
pulsar-bookkeeper                ClusterIP   None             &lt;none&gt;        3181/TCP                                       86m
pulsar-broker                    ClusterIP   10.100.43.26     &lt;none&gt;        8080/TCP,6650/TCP,8443/TCP,6651/TCP            86m
pulsar-proxy                     NodePort    10.97.122.80     &lt;none&gt;        8080:31074/TCP,6650:30002/TCP,8000:32173/TCP   86m
pulsar-zookeeper                 ClusterIP   None             &lt;none&gt;        2888/TCP,3888/TCP,2181/TCP                     86m```
----
2020-08-27 20:29:38 UTC - Addison Higham: ah, it might be because of NodePort vs ClusterIP, I have not use minikube much
----
2020-08-27 20:31:21 UTC - Frank Kelly: OK
----
2020-08-27 20:32:02 UTC - Frank Kelly: Port-forward to the proxy works great - and the port-forward to the broker at least shows up on the Broker logs - just I get a bunch of connection errors
```2020-08-27 16:30:33,120 - WARN  - [pulsar-client-io-8-1:ConnectionPool@212] - Failed to open connection to 172.17.0.3:6650 : org.apache.pulsar.shade.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /172.17.0.3:6650
2020-08-27 16:30:33,120 - WARN  - [pulsar-client-io-8-1:ConnectionHandler@77] - [<persistent://testtenant/wav/topic1>] [null] Error connecting to broker: org.apache.pulsar.client.api.PulsarClientException: java.util.concurrent.CompletionException: org.apache.pulsar.shade.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /172.17.0.3:6650
2020-08-27 16:30:33,121 - WARN  - [pulsar-client-io-8-1:ConnectionHandler@101] - [<persistent://testtenant/wav/topic1>] [null] Could not get connection to broker: org.apache.pulsar.client.api.PulsarClientException: java.util.concurrent.CompletionException: org.apache.pulsar.shade.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /172.17.0.3:6650 -- Will try again in 0.187 s
2020-08-27 16:30:33,309 - INFO  - [pulsar-timer-10-1:ConnectionHandler@105] - [<persistent://testtenant/wav/topic1>] [null] Reconnecting after connection was closed```
----
2020-08-27 20:34:27 UTC - Addison Higham: I assume you mean with the same key? Compaction does re-order, as it only keeps the most recent version of every key and that can inherently be a different order that the original event ordering. However anything after the compacted part of the topic (the tail that hasn't yet been compacted) has the some order properties

If you are just talking about the same key, that is another thing I am not sure about and have wondered as well. It may need to be explicitly handled by compaction, if compaction happens topic by topic and it doesn't "re-hash" the message by the key, then it would just keep the most recent version in each topic
----
2020-08-27 20:35:01 UTC - Raman Gupta: Sorry I meant different keys that hash to the same partition.
----
2020-08-27 20:35:56 UTC - Frank Kelly: (BTW on the Github issue - would you classify this as a bug or enhancement)
----
2020-08-27 20:36:04 UTC - Raman Gupta: Or I suppose really messages that have the same `orderingKey`
----
2020-08-27 20:40:11 UTC - Raman Gupta: I here <https://github.com/apache/pulsar/pull/7745> some discussion of `partitionKey` and `orderingKey` -- it seems `partitionKey` is used on compaction, but what's unclear is how this interacts with partition count changes.
----
2020-08-27 20:41:04 UTC - Addison Higham: orderingKey isn't (currently) considered by compaction
----
2020-08-27 20:45:03 UTC - Raman Gupta: Generally I would set partitionKey to be the same as orderingKey, because I'd want to ensure that messages with the same ordering key were in the same partition. Though I would think in the presence of orderingKey, partitionKey should be ignored anyway, because otherwise how could Pulsar guarantee ordering for a given ordering key if the messages with that orderingKey are splashed across multiple partitions?
----
2020-08-27 20:46:43 UTC - Raman Gupta: Though I suppose there might be a use case for correct ordering by orderingKey, but the user only cares about that within the scope of a partition, so never mind my last msg.
----
2020-08-27 20:50:07 UTC - Raman Gupta: Yet another confusion and/or omission of detail: the section of the docs discussing ordering gurantee for partitioned topics just talks about "key", not "partition key": <https://pulsar.apache.org/docs/en/concepts-messaging/#ordering-guarantee>.
----
2020-08-28 09:08:24 UTC - Tymm: Hello, let's say I have a subscriber went offline and back online after 2 hours, and when it is back online, I want it to only get the latest message instead of all the messages it had missed. How can I do this? What should I configure? Thanks
----