You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Update upgrade guide for Luna Streaming 3.1 with improved clarity and details
* Enhance documentation for Luna Streaming 3.1 with additional examples and troubleshooting tips
* remove-migrate-page-content
* spelling-and-build-push
|This will affect the public API for the AuthorizationService and the AuthorizationProvider, which only impacts users that are running custom code inside the Pulsar Broker
|[cleanup][broker] Remove AuthorizationProvider methods deprecated in 2.7 and 2.9
139
+
|Remove AuthorizationProvider methods deprecated in 2.7 and 2.9
141
140
|Removing deprecated methods allowTenantOperationAsync, allowTenantOperation, allowNamespaceOperationAsync, allowNamespaceOperation, allowNamespacePolicyOperationAsync, allowNamespacePolicyOperation, allowTopicOperationAsync, allowTopicOperation. These methods could be used by third party extensions
|[feat][broker] OneStageAuth State: move authn out of constructor
147
+
|OneStageAuth State: move authn out of constructor
149
148
|This could break 3rd party plugins in the broker if they were relying on authentication to happen in the constructor. In order to make those implementations fail fast, this PR includes a change to throw an exception when the getAuthRole is called without first calling authenticateAsync or authenticate. That makes these changes semi-backwards compatible.
|[fix][broker] TokenAuthenticationState: authenticate token only once
151
+
|TokenAuthenticationState: authenticate token only once
153
152
|In a sense, this breaks an implicit contract that the class had. However, because the getAuthRole() method will throw an exception if called incorrectly, it is likely that misuse of this class will result in a fail fast behavior.
|[improve][broker] Require authRole is proxyRole to set originalPrincipal
155
+
|Require authRole is proxyRole to set originalPrincipal
157
156
|This change affects the binary protocol's usage without changing the binary protocol itself. Upgrading existing proxies will not work if the proxyRoles is not correctly configured in the broker.conf.
|[improve][client] Remove default 30s ackTimeout when setting DLQ policy on java consumer
159
+
|Remove default 30s ackTimeout when setting DLQ policy on java consumer
161
160
|Removed setting default ackTimeoutMillis in java ConsumerBuilder when a deadLetterPolicy is set. It has to be specified exclusively to use.
162
161
|===
163
162
164
163
== Configuration impacts
165
164
166
-
=== Removed in 3.1
165
+
This section describes changes in Luna Streaming 3.1 that may impact your deployment's configuration.
167
166
168
-
* https://github.com/apache/pulsar/pull/14506[#14506] removes `managedLedgerNumWorkerThreads`. The `MetadataStore` instance is passed from the `PulsarService` directly to the `ManagedLedgerFactory`.
Direct memory usage weight for calculating resource usage in `ThresholdShedder ` strategy
209
-
|1.0
210
-
|0
206
+
|`1.0`
207
+
|`0`
208
+
211
209
|`fileSystemProfilePath`
212
-
File System Storage profile path
213
210
|`../conf/filesystem_offload_core_site.xml`
214
211
|`conf/filesystem_offload_core_site.xml`
212
+
215
213
|`gcsManagedLedgerOffloadMaxBlockSizeInBytes`
216
-
Max block size in bytes for Google Cloud Storage ledger offload
217
-
|67108864
218
-
|134217728
214
+
|`67108864`
215
+
|`134217728`
219
216
|===
220
217
221
218
== Operational impacts
222
219
223
220
This section describes changes in Luna Streaming 3.1 that may impact how your deployment operates.
224
221
225
-
=== Upgrade to JDK 17
222
+
=== JDK 17 upgrade
226
223
227
-
Luna Streaming 3.1 uses JDK 17. This changes the Pulsar server module's javac release version to 17.
224
+
Luna Streaming 3.1 uses JDK 17.
228
225
229
-
Client and client-server shared modules will remain at the target Java 8 release.
226
+
The Pulsar server module's `javac` release version is `17`.
230
227
231
-
The modification is described in detail in PIP-156 in https://github.com/apache/pulsar/pull/15207[#15207].
228
+
Client and client-server shared modules remain at the target Java 8 release.
232
229
233
-
=== Removed Python 2 support
230
+
This modification is described in detail in https://github.com/apache/pulsar/pull/15207[PIP-156].
234
231
235
-
Luna Streaming 3.1 removes Python 2 from build scripts.
236
-
237
-
Python3 is used in the build image.
232
+
=== Python 2 support removed
238
233
239
-
The build image has been updated to ubuntu:20.04 as there is no Python 3.7 support in the old Ubuntu.
234
+
Luna Streaming 3.1 removes Python 2 from build scripts.
240
235
241
-
Executable scripts have been updated to use python3 instead of python.
236
+
Python 3 is used in the build image.
242
237
243
-
The modification is described in detail in PIP-155 in https://github.com/apache/pulsar/pull/15376[#15376]
238
+
The build image is updated to use `ubuntu:20.04`, as there is no Python 3.7 support in the previous Ubuntu image.
244
239
245
-
=== Updated Prometheus metrics
240
+
Executable scripts have been updated to invoke `python3` instead of `python`.
246
241
247
-
Prometheus metrics have been updated in Luna Streaming 3.1.
248
-
249
-
See <<Prometheus metrics>> for details.
242
+
This modification is described in detail in https://github.com/apache/pulsar/pull/15376[PIP-155]
250
243
251
244
== Known issues
252
245
253
246
This section describes known issues encountered when upgrading to Luna Streaming 3.1.
254
247
255
248
=== Bookkeeper / RocksDB format
256
249
257
-
Pulsar 3.1 uses RocksDB 7.x, which writes in a format that is not compatible with RocksDB 6.x, which is used by LunaStreaming 2.10 via Bookkeeper 4.14.
258
-
259
-
**Downgrading to 2.10 from 3.1 is not supported for Bookies and ZooKeeper**. All other components such as Broker, Proxy and Functions Worker can be downgraded at any time.
250
+
**Downgrading to Luna Streaming 2.10 from Luna Streaming 3.1 is not supported for Bookies and ZooKeeper**.
260
251
261
-
For more information, see https://github.com/apache/pulsar/issues/22051[(Bug) Downgrade issue #22051 - apache/pulsar · GitHub].s
252
+
Pulsar 3.1 uses RocksDB `7.x`, which writes in a format that is not compatible with RocksDB `6.x`.
262
253
263
-
To reproduce the issue where Bookkeeper instances fail to downgrade:
254
+
Luna Streaming 2.10 uses Bookkeeper 4.14, which uses RocksDB `6.x`.
264
255
265
-
. Install Luna Streaming 2.10.
266
-
. Upgrade to Luna Streaming 3.1.
267
-
. Downgrade to Luna Streaming 2.10.
256
+
All other components such as Broker, Proxy, and Functions Worker can be downgraded at any time.
268
257
269
-
Stack trace for the downgrade failure:
270
-
271
-
[%collapsible]
272
-
=====
273
-
[source,java]
274
-
----
275
-
2024-02-23T11:42:13,993+0000 [main] INFO org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage - Creating single directory db ledger storage on data/bookkeeper/ledgers/current
276
-
2024-02-23T11:42:14,146+0000 [main] INFO org.apache.bookkeeper.proto.BookieNettyServer - Shutting down BookieNettyServer
277
-
2024-02-23T11:42:14,155+0000 [main] ERROR org.apache.bookkeeper.server.Main - Failed to build bookie server
278
-
java.io.IOException: Error open RocksDB database
279
-
at org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB.<init>(KeyValueStorageRocksDB.java:200) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
280
-
at org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB.<init>(KeyValueStorageRocksDB.java:89) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
281
-
at org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB.lambda$static$0(KeyValueStorageRocksDB.java:63) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
282
-
at org.apache.bookkeeper.bookie.storage.ldb.LedgerMetadataIndex.<init>(LedgerMetadataIndex.java:68) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
283
-
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.<init>(SingleDirectoryDbLedgerStorage.java:170) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
284
-
at org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage.newSingleDirectoryDbLedgerStorage(DbLedgerStorage.java:150) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
285
-
at org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage.initialize(DbLedgerStorage.java:129) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
286
-
at org.apache.bookkeeper.bookie.Bookie.<init>(Bookie.java:818) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
287
-
at org.apache.bookkeeper.proto.BookieServer.newBookie(BookieServer.java:152) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
288
-
at org.apache.bookkeeper.proto.BookieServer.<init>(BookieServer.java:120) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
289
-
at org.apache.bookkeeper.server.service.BookieService.<init>(BookieService.java:52) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
290
-
at org.apache.bookkeeper.server.Main.buildBookieServer(Main.java:304) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
291
-
at org.apache.bookkeeper.server.Main.doMain(Main.java:226) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
292
-
at org.apache.bookkeeper.server.Main.main(Main.java:208) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
293
-
Caused by: org.rocksdb.RocksDBException: unknown checksum type 4 in data/bookkeeper/ledgers/current/ledgers/000006.sst offset 1020 size 33
294
-
at org.rocksdb.RocksDB.open(Native Method) ~[org.rocksdb-rocksdbjni-6.10.2.jar:?]
295
-
at org.rocksdb.RocksDB.open(RocksDB.java:239) ~[org.rocksdb-rocksdbjni-6.10.2.jar:?]
296
-
at org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB.<init>(KeyValueStorageRocksDB.java:197) ~[com.datastax.oss-bookkeeper-server-4.14.5.1.0.2.jar:4.14.5.1.0.2]
297
-
... 13 more
298
-
----
299
-
=====
258
+
For more information, see https://github.com/apache/pulsar/issues/22051[Issue 22051].
300
259
301
260
== Upgrade procedure
302
261
303
-
Luna Streaming can be deployed on Bare metal, Docker, and Kubernetes.
262
+
Luna Streaming can be deployed on bare metal, Docker, and Kubernetes.
304
263
305
-
This guide will only address Kubernetes deployment.
264
+
This guide only addresses Kubernetes deployment.
306
265
307
266
For more information on upgrading bare metal and Docker Pulsar deployments, see the https://pulsar.apache.org/docs/3.3.x/administration-upgrade/[Pulsar documentation].
308
267
309
-
=== Kubernetes deployment using KAAP Operator
268
+
=== Upgrade Kubernetes deployment with KAAP Operator
310
269
311
-
Deploying Luna Streaming on Kubernetes with KAAP (Kubernetes Autoscaling for Apache Pulsar) Operator is a common method for running Pulsar in a cloud-native environment.
270
+
Upgrade to Luna Streaming 3.1 on Kubernetes with the KAAP (Kubernetes Autoscaling for Apache Pulsar) operator.
312
271
313
272
For more information, see the xref:kaap-operator::index.adoc[KAAP documentation].
314
273
315
-
. Back up your existing Pulsar data and configurations to prevent data loss.
274
+
. To prevent data loss, back up your existing Pulsar data and configuration files.
316
275
. To save your current Helm release configuration, run the following command:
317
276
+
318
277
[source,bash,subs="+quotes"]
@@ -327,7 +286,7 @@ helm get values *RELEASE-NAME* > pulsar-backup-values.yaml
327
286
helm repo update
328
287
----
329
288
+
330
-
. Open `helm/kaap-stack/values.yaml` and update the image tag to 3.1.0 (or the specific tag you wish to use).
289
+
. Open `helm/kaap-stack/values.yaml`, and then update the image tag to `3.1.0` (or the specific tag you wish to use).
331
290
+
332
291
[source,yaml]
333
292
----
@@ -343,7 +302,7 @@ kaap:
343
302
datastax/lunastreaming-all: 3.1_4.5
344
303
----
345
304
+
346
-
. Review and modify any other configuration parameters that may have changed between versions, such as resource limits, storage classes, and additional components. To modify other configurations, update `values.yaml` as needed. For example, to modify the broker's namespace shedding and splitting configurations, update the following fields:
305
+
. To modify other configurations, update `values.yaml` as needed. For example, to modify the broker's namespace shedding and splitting configurations, update the following fields:
347
306
+
348
307
[source,yaml]
349
308
----
@@ -387,18 +346,13 @@ kubectl get pods --namespace *NAMESPACE*
387
346
kubectl logs *POD-NAME* -n *NAMESPACE*
388
347
----
389
348
390
-
. After upgrading, check if any additional configurations are required for new features in version 3.1. Adjust settings related to multi-tenancy, security, and observability as needed. Ensure all necessary configurations are in place and correct after the upgrade.
391
-
. Test the functionality of your Pulsar cluster by sending messages and ensuring that consumers can read them without issues. Conduct functional tests to ensure that the upgrade did not impact existing applications and that new features work as expected.
392
-
393
-
// known issues
349
+
. After the upgrade, ensure all necessary configurations are in place and correct.
394
350
395
-
=== Kubernetes deployment using Helm chart
351
+
=== Upgrade Kubernetes deployment with Helm chart
396
352
397
353
The Helm chart for Luna Streaming is available in the https://github.com/datastax/pulsar-helm-chart/blob/master/helm-chart-sources/pulsar/values.yaml[Helm chart sources] repository.
398
354
399
-
Deploying Luna Streaming on Kubernetes using the DataStax Helm chart is another common method for running Pulsar in a cloud-native environment.
400
-
401
-
. Back up your existing Pulsar data and configurations to prevent data loss.
355
+
. To prevent data loss, back up your existing Pulsar data and configuration files.
402
356
. To save your current Helm release configuration, run the following command:
403
357
+
404
358
[source,bash,subs="+quotes"]
@@ -413,7 +367,7 @@ helm get values *RELEASE-NAME* > pulsar-backup-values.yaml
413
367
helm repo update
414
368
----
415
369
+
416
-
. Open `helm-chart-sources/pulsar/values.yaml` and update the image tag to 3.1.0 (or the specific tag you wish to use).
370
+
. Open `helm-chart-sources/pulsar/values.yaml` and update the image tag to `3.1.0` (or the specific tag you wish to use).
417
371
+
418
372
[source,yaml]
419
373
----
@@ -487,7 +441,6 @@ kubectl get pods --namespace *NAMESPACE*
487
441
kubectl logs *POD-NAME* -n *NAMESPACE*
488
442
----
489
443
490
-
. After upgrading, check if any additional configurations are required for new features in version 3.1. Adjust settings related to multi-tenancy, security, and observability as needed. Ensure all necessary configurations are in place and correct after the upgrade.
491
-
. Test the functionality of your Pulsar cluster by sending messages and ensuring that consumers can read them without issues. Conduct functional tests to ensure that the upgrade did not impact existing applications and that new features work as expected.
444
+
. After the upgrade, ensure all necessary configurations are in place and correct.
0 commit comments