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/06/04 09:11:05 UTC

Slack digest for #general - 2020-06-04

2020-06-03 10:41:27 UTC - Pushkar Sawant: 1
----
2020-06-03 10:54:54 UTC - Huanli Meng: will improve the doc quality. thanks
+1 : Frank Kelly
----
2020-06-03 11:50:27 UTC - Vladimir Shchur: Hi, can someone please explain how pulsar client _should_ behave when <https://github.com/apache/pulsar/blob/branch-2.5/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PersistentAcknowledgmentsGroupingTracker.java#L183-L184|acknowledge> fails. What I see now from code
1. <https://github.com/apache/pulsar/blob/branch-2.5/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PersistentAcknowledgmentsGroupingTracker.java#L174-L181|pendingIndividualAcks gets empty right before sending>, so it will stay empty on error
2. if consumer is non-durable it starts from first message in message queue on reconnect, which will lead to unacknowledged messages not being redelivered, so *messages that failed to acknowledge will be not acknowledged again*
3. if consumer is durable, it starts from the beginning on reconnect and will get the unacknowledged messages again, however <https://github.com/apache/pulsar/blob/branch-2.5/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java#L866|this check> will not pass (message will be regarded as duplicate) since <https://github.com/apache/pulsar/blob/branch-2.5/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PersistentAcknowledgmentsGroupingTracker.java#L59|lastCumlativeAck> is not reset on failure which again results in *not acknowledging messages that failed to be acknowledged before*
Am I missing something? Thank you
----
2020-06-03 13:45:12 UTC - Rounak Jaggi: @Sijie Guo more about how do we upgrade/migrate to new pulsar version.
----
2020-06-03 13:47:27 UTC - jujugrrr: @jujugrrr has joined the channel
----
2020-06-03 14:17:25 UTC - Ebere Abanonu: @Sijie Guo @Penghui Li is it possible for you to make ProducerSuccess to return the latest Schema too? The current implementation only return the SchemaVersion
----
2020-06-03 14:24:03 UTC - Addison Higham: @Rounak Jaggi here is the pulsar upgrade guide <http://pulsar.apache.org/docs/en/administration-upgrade/|http://pulsar.apache.org/docs/en/administration-upgrade/>
----
2020-06-03 14:25:45 UTC - Addison Higham: More specifically, you can code some of that up in ansible and when you apply your ansible you can use a different host list
----
2020-06-03 15:12:42 UTC - Ebere Abanonu: I will take that back! Since schema is added to producer creation that will not be needed!
----
2020-06-03 15:40:54 UTC - Chris DiGiovanni: I see conflicting info in the docs of what version of Java should be used.  In this link (<https://pulsar.apache.org/docs/en/2.5.2/deploy-bare-metal/>) I see:
```Each machine in your cluster needs to have Java 8 or higher version of Java installed.```
In the standalone docs (<https://pulsar.apache.org/docs/en/2.5.2/standalone/>) I see:
```Pulsar is currently available for MacOS and Linux. To use Pulsar, you need to install Java 8 from Oracle download center.```
In the docker images I see it's being packaged up with version
```openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)```
So my question is, What Java version should we be using?  I'm asking as we are using jdk11.0.2 and we saw a suspicious bug fix around TLS1.3 and resuming sessions being fixed in jdk11.0.3.  Which looks like it could be linked to our Proxy to Broker 5xx return codes.  All these docs seem to have a theme around JAVA8, though before I go through all the trouble of changing all our bare-metal deployments, I would like to see if I could get some confirmation of what should actually be used.  Java8 from Oracle, OpenJDK8, or actually any version of JDK &gt;=8?
+1 : Frank Kelly
----
2020-06-03 16:09:14 UTC - jujugrrr: Hi All,
I'm trying to work on a robust disaster recovery plan but without relying on geo-replication(cost/location constraints). Looking a Tiered storage it seems we can offload as soon as possible or based on size. If using as soon as possible it seems to be happening as soon as a segment is closed. I'm struggling to find what is a segment size or when is it closed. It looks like a bookkeeper segment can be rolled based on time and not size only. Does that mean there is a way to configure segment to roll every 5 mins by example and offload to Tiered asap, which would allow us to lose 5mins of data in the worst case scenario(we lost all our bookies and persistent storage) ?

If we follow this approach, is it possible to create a new Pulsar cluster, point it to the existing Tiered storage (or a copy of it) and all data will be available?
----
2020-06-03 16:12:19 UTC - Matteo Merli: &gt;  Does that mean there is a way to configure segment to roll every 5 mins by example and offload to Tiered asap, which would allow us to lose 5mins of data in the worst case scenario(we lost all our bookies and persistent storage) ?
Yes, you can configure the rollover timings

&gt;  If we follow this approach, is it possible to create a new Pulsar cluster, point it to the existing Tiered storage (or a copy of it) and all data will be available?
Not exactly, while the data will be in S3, the metadata for the old topics is gone, so the new cluster will not be able to recover it as simply.
----
2020-06-03 16:20:43 UTC - jujugrrr: If we had zookeeper snapshot would it be enough?
----
2020-06-03 16:25:51 UTC - jujugrrr: I mean with something like <https://github.com/mhausenblas/burry.sh>
----
2020-06-03 16:31:22 UTC - Sijie Guo: what does “unable to load” mean?
----
2020-06-03 16:33:44 UTC - Sijie Guo: Java 8 is recommended. I think there were issues when you try to run it with Java 11 (can’t recall it is functions related issues or not) because the binary is compiled with java 8.
heavy_check_mark : Chris DiGiovanni
----
2020-06-03 16:52:59 UTC - Chris DiGiovanni: Thanks for the reply
----
2020-06-04 04:02:57 UTC - Luke Stephenson: We enabled log compaction on the brokers using `pulsar-admin namespaces set-compaction-threshold`.  While I was aware that doing log cleaning on the brokers would create some memory pressure, I was hopeful that any given broker would only compact 1 topic at a time. However with partitioned topics, it appears that the broker is kicking off compaction with multiple partitions at once.  While I've given the broker enough memory to allow compacting 1 partition at a time, running several in parallel causes it to die.  Here is a screenshot showing compaction kicking off for 12 partitions of the same topic within 1 second on the same broker.  Looking at pulsar source code, it looks like only 1 partition should be compacted at a time.
----
2020-06-04 06:27:50 UTC - Ankush: Hi All,
I am playing with `KeySharedPolicy.stickyHashRange()` and noticed that we can only provide blocks of sequential ranges to consumers, ex: consumer-0: [0-9999], consumer 1: [10000-1999], consumer 2: [20000-3999], and so on. This does not guarantee a good distribution of load (specially if you have few keys).
I was thinking of using consistent hashing to assign portions of hash ranges distributed equally around the ring to the consumer but get the error `Range conflict with consumer` from `HashRangeExclusiveStickyKeyConsumerSelector.validateKeySharedMeta` . I am trying to understand what is the reason for doing this?
For easily testing this, we can start one consumer with
```KeySharedPolicy.stickyHashRange().ranges(Range.of(0,999), Range.of(5000, 65535))```
and another consumer with
```KeySharedPolicy.stickyHashRange().ranges(Range.of(1000, 4999))```
Thanks!
----
2020-06-04 08:35:11 UTC - Craig: @Craig has joined the channel
----