Skip to content

Commit 2dab315

Browse files
horizonzyTechnoboy-
authored andcommitted
[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.
1 parent c4141e9 commit 2dab315

File tree

4 files changed

+55
-3
lines changed

4 files changed

+55
-3
lines changed

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,37 @@ public interface LedgerOffloaderFactory<T extends LedgerOffloader> {
4242
boolean isDriverSupported(String driverName);
4343

4444
/**
45-
* Create a ledger offloader with the provided configuration, user-metadata and scheduler.
45+
* Create a ledger offloader with the provided configuration, user-metadata, scheduler and offloaderStats.
4646
*
4747
* @param offloadPolicies offload policies
4848
* @param userMetadata user metadata
4949
* @param scheduler scheduler
5050
* @return the offloader instance
5151
* @throws IOException when fail to create an offloader
5252
*/
53+
T create(OffloadPoliciesImpl offloadPolicies,
54+
Map<String, String> userMetadata,
55+
OrderedScheduler scheduler)
56+
throws IOException;
57+
58+
59+
/**
60+
* Create a ledger offloader with the provided configuration, user-metadata, scheduler and offloaderStats.
61+
*
62+
* @param offloadPolicies offload policies
63+
* @param userMetadata user metadata
64+
* @param scheduler scheduler
65+
* @param offloaderStats offloaderStats
66+
* @return the offloader instance
67+
* @throws IOException when fail to create an offloader
68+
*/
5369
T create(OffloadPoliciesImpl offloadPolicies,
5470
Map<String, String> userMetadata,
5571
OrderedScheduler scheduler,
5672
LedgerOffloaderStats offloaderStats)
5773
throws IOException;
5874

75+
5976
/**
6077
* Create a ledger offloader with the provided configuration, user-metadata, schema storage and scheduler.
6178
*
@@ -66,6 +83,26 @@ T create(OffloadPoliciesImpl offloadPolicies,
6683
* @return the offloader instance
6784
* @throws IOException when fail to create an offloader
6885
*/
86+
default T create(OffloadPoliciesImpl offloadPolicies,
87+
Map<String, String> userMetadata,
88+
SchemaStorage schemaStorage,
89+
OrderedScheduler scheduler)
90+
throws IOException {
91+
return create(offloadPolicies, userMetadata, scheduler);
92+
}
93+
94+
/**
95+
* Create a ledger offloader with the provided configuration, user-metadata, schema storage,
96+
* scheduler and offloaderStats.
97+
*
98+
* @param offloadPolicies offload policies
99+
* @param userMetadata user metadata
100+
* @param schemaStorage used for schema lookup in offloader
101+
* @param scheduler scheduler
102+
* @param offloaderStats offloaderStats
103+
* @return the offloader instance
104+
* @throws IOException when fail to create an offloader
105+
*/
69106
default T create(OffloadPoliciesImpl offloadPolicies,
70107
Map<String, String> userMetadata,
71108
SchemaStorage schemaStorage,

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderStatsDisable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020

2121
import java.util.concurrent.TimeUnit;
2222

23-
class LedgerOffloaderStatsDisable implements LedgerOffloaderStats {
23+
public class LedgerOffloaderStatsDisable implements LedgerOffloaderStats {
2424

25-
static final LedgerOffloaderStats INSTANCE = new LedgerOffloaderStatsDisable();
25+
public static final LedgerOffloaderStats INSTANCE = new LedgerOffloaderStatsDisable();
2626

2727
private LedgerOffloaderStatsDisable() {
2828

tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.bookkeeper.common.util.OrderedScheduler;
2424
import org.apache.bookkeeper.mledger.LedgerOffloaderFactory;
2525
import org.apache.bookkeeper.mledger.LedgerOffloaderStats;
26+
import org.apache.bookkeeper.mledger.LedgerOffloaderStatsDisable;
2627
import org.apache.bookkeeper.mledger.offload.filesystem.impl.FileSystemManagedLedgerOffloader;
2728
import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl;
2829

@@ -32,6 +33,13 @@ public boolean isDriverSupported(String driverName) {
3233
return FileSystemManagedLedgerOffloader.driverSupported(driverName);
3334
}
3435

36+
@Override
37+
public FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies,
38+
Map<String, String> userMetadata, OrderedScheduler scheduler)
39+
throws IOException {
40+
return create(offloadPolicies, userMetadata, scheduler, LedgerOffloaderStatsDisable.INSTANCE);
41+
}
42+
3543
@Override
3644
public FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies,
3745
Map<String, String> userMetadata,

tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/JCloudLedgerOffloaderFactory.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.bookkeeper.common.util.OrderedScheduler;
2424
import org.apache.bookkeeper.mledger.LedgerOffloaderFactory;
2525
import org.apache.bookkeeper.mledger.LedgerOffloaderStats;
26+
import org.apache.bookkeeper.mledger.LedgerOffloaderStatsDisable;
2627
import org.apache.bookkeeper.mledger.offload.jcloud.impl.BlobStoreManagedLedgerOffloader;
2728
import org.apache.bookkeeper.mledger.offload.jcloud.provider.JCloudBlobStoreProvider;
2829
import org.apache.bookkeeper.mledger.offload.jcloud.provider.TieredStorageConfiguration;
@@ -44,6 +45,12 @@ public boolean isDriverSupported(String driverName) {
4445
return JCloudBlobStoreProvider.driverSupported(driverName);
4546
}
4647

48+
@Override
49+
public BlobStoreManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, Map<String, String> userMetadata,
50+
OrderedScheduler scheduler) throws IOException {
51+
return create(offloadPolicies, userMetadata, scheduler, LedgerOffloaderStatsDisable.INSTANCE);
52+
}
53+
4754
@Override
4855
public BlobStoreManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, Map<String, String> userMetadata,
4956
OrderedScheduler scheduler,

0 commit comments

Comments
 (0)