You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by te...@apache.org on 2023/05/09 06:25:36 UTC
[pulsar] branch branch-2.11 updated: [fix][broker]Make LedgerOffloaderFactory can load the old nar. (#19913)
This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch branch-2.11
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.11 by this push:
new 2dab31534a4 [fix][broker]Make LedgerOffloaderFactory can load the old nar. (#19913)
2dab31534a4 is described below
commit 2dab31534a40895d0a8db01619dce41e3d93556d
Author: Yan Zhao <ho...@apache.org>
AuthorDate: Mon Apr 10 22:49:29 2023 +0800
[fix][broker]Make LedgerOffloaderFactory can load the old nar. (#19913)
After #13833, we change the signature of LedgerOffloaderFactory#create. But some users may use the old version LedgerOffloaderFactory in the offloader nar, when pulsar load the offloader nar, it will use the LedgerOffloaderFactory in the offloader nar, the LedgerOffloaderFactory#create has no param offloaderStats.
Modifications: Make LedgerOffloaderFactory can load the old nar.
---
.../bookkeeper/mledger/LedgerOffloaderFactory.java | 39 +++++++++++++++++++++-
.../mledger/LedgerOffloaderStatsDisable.java | 4 +--
.../FileSystemLedgerOffloaderFactory.java | 8 +++++
.../jcloud/JCloudLedgerOffloaderFactory.java | 7 ++++
4 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java
index bb94cee6fde..0e6ffc44b87 100644
--- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java
+++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java
@@ -42,7 +42,7 @@ public interface LedgerOffloaderFactory<T extends LedgerOffloader> {
boolean isDriverSupported(String driverName);
/**
- * Create a ledger offloader with the provided configuration, user-metadata and scheduler.
+ * Create a ledger offloader with the provided configuration, user-metadata, scheduler and offloaderStats.
*
* @param offloadPolicies offload policies
* @param userMetadata user metadata
@@ -50,12 +50,29 @@ public interface LedgerOffloaderFactory<T extends LedgerOffloader> {
* @return the offloader instance
* @throws IOException when fail to create an offloader
*/
+ T create(OffloadPoliciesImpl offloadPolicies,
+ Map<String, String> userMetadata,
+ OrderedScheduler scheduler)
+ throws IOException;
+
+
+ /**
+ * Create a ledger offloader with the provided configuration, user-metadata, scheduler and offloaderStats.
+ *
+ * @param offloadPolicies offload policies
+ * @param userMetadata user metadata
+ * @param scheduler scheduler
+ * @param offloaderStats offloaderStats
+ * @return the offloader instance
+ * @throws IOException when fail to create an offloader
+ */
T create(OffloadPoliciesImpl offloadPolicies,
Map<String, String> userMetadata,
OrderedScheduler scheduler,
LedgerOffloaderStats offloaderStats)
throws IOException;
+
/**
* Create a ledger offloader with the provided configuration, user-metadata, schema storage and scheduler.
*
@@ -66,6 +83,26 @@ public interface LedgerOffloaderFactory<T extends LedgerOffloader> {
* @return the offloader instance
* @throws IOException when fail to create an offloader
*/
+ default T create(OffloadPoliciesImpl offloadPolicies,
+ Map<String, String> userMetadata,
+ SchemaStorage schemaStorage,
+ OrderedScheduler scheduler)
+ throws IOException {
+ return create(offloadPolicies, userMetadata, scheduler);
+ }
+
+ /**
+ * Create a ledger offloader with the provided configuration, user-metadata, schema storage,
+ * scheduler and offloaderStats.
+ *
+ * @param offloadPolicies offload policies
+ * @param userMetadata user metadata
+ * @param schemaStorage used for schema lookup in offloader
+ * @param scheduler scheduler
+ * @param offloaderStats offloaderStats
+ * @return the offloader instance
+ * @throws IOException when fail to create an offloader
+ */
default T create(OffloadPoliciesImpl offloadPolicies,
Map<String, String> userMetadata,
SchemaStorage schemaStorage,
diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderStatsDisable.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderStatsDisable.java
index 862d466067e..7f57e8a4395 100644
--- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderStatsDisable.java
+++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderStatsDisable.java
@@ -20,9 +20,9 @@ package org.apache.bookkeeper.mledger;
import java.util.concurrent.TimeUnit;
-class LedgerOffloaderStatsDisable implements LedgerOffloaderStats {
+public class LedgerOffloaderStatsDisable implements LedgerOffloaderStats {
- static final LedgerOffloaderStats INSTANCE = new LedgerOffloaderStatsDisable();
+ public static final LedgerOffloaderStats INSTANCE = new LedgerOffloaderStatsDisable();
private LedgerOffloaderStatsDisable() {
diff --git a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java
index c7876f9941a..227245b3aa7 100644
--- a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java
+++ b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.bookkeeper.common.util.OrderedScheduler;
import org.apache.bookkeeper.mledger.LedgerOffloaderFactory;
import org.apache.bookkeeper.mledger.LedgerOffloaderStats;
+import org.apache.bookkeeper.mledger.LedgerOffloaderStatsDisable;
import org.apache.bookkeeper.mledger.offload.filesystem.impl.FileSystemManagedLedgerOffloader;
import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl;
@@ -32,6 +33,13 @@ public class FileSystemLedgerOffloaderFactory implements LedgerOffloaderFactory<
return FileSystemManagedLedgerOffloader.driverSupported(driverName);
}
+ @Override
+ public FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies,
+ Map<String, String> userMetadata, OrderedScheduler scheduler)
+ throws IOException {
+ return create(offloadPolicies, userMetadata, scheduler, LedgerOffloaderStatsDisable.INSTANCE);
+ }
+
@Override
public FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies,
Map<String, String> userMetadata,
diff --git a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/JCloudLedgerOffloaderFactory.java b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/JCloudLedgerOffloaderFactory.java
index c7293696c2f..e05cb55f70d 100644
--- a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/JCloudLedgerOffloaderFactory.java
+++ b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/JCloudLedgerOffloaderFactory.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.bookkeeper.common.util.OrderedScheduler;
import org.apache.bookkeeper.mledger.LedgerOffloaderFactory;
import org.apache.bookkeeper.mledger.LedgerOffloaderStats;
+import org.apache.bookkeeper.mledger.LedgerOffloaderStatsDisable;
import org.apache.bookkeeper.mledger.offload.jcloud.impl.BlobStoreManagedLedgerOffloader;
import org.apache.bookkeeper.mledger.offload.jcloud.provider.JCloudBlobStoreProvider;
import org.apache.bookkeeper.mledger.offload.jcloud.provider.TieredStorageConfiguration;
@@ -44,6 +45,12 @@ public class JCloudLedgerOffloaderFactory implements LedgerOffloaderFactory<Blob
return JCloudBlobStoreProvider.driverSupported(driverName);
}
+ @Override
+ public BlobStoreManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, Map<String, String> userMetadata,
+ OrderedScheduler scheduler) throws IOException {
+ return create(offloadPolicies, userMetadata, scheduler, LedgerOffloaderStatsDisable.INSTANCE);
+ }
+
@Override
public BlobStoreManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, Map<String, String> userMetadata,
OrderedScheduler scheduler,