You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/06/07 05:04:42 UTC
[pulsar] 12/17: Avoid contended synchronized block on topic load (#15883)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit c13805e4ef12c200b5abfe3c76abf86fa827f6c0
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Thu Jun 2 08:34:55 2022 -0700
Avoid contended synchronized block on topic load (#15883)
(cherry picked from commit 7d2fdea7749d72b58def4045be3f295e0ee4f04d)
---
.../org/apache/pulsar/broker/PulsarService.java | 40 ++++++++++++----------
1 file changed, 21 insertions(+), 19 deletions(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java
index e1ffbe757ad..0acc4ec6956 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java
@@ -1246,33 +1246,35 @@ public class PulsarService implements AutoCloseable, ShutdownService {
});
}
- public synchronized LedgerOffloader createManagedLedgerOffloader(OffloadPoliciesImpl offloadPolicies)
+ public LedgerOffloader createManagedLedgerOffloader(OffloadPoliciesImpl offloadPolicies)
throws PulsarServerException {
try {
if (StringUtils.isNotBlank(offloadPolicies.getManagedLedgerOffloadDriver())) {
checkNotNull(offloadPolicies.getOffloadersDirectory(),
"Offloader driver is configured to be '%s' but no offloaders directory is configured.",
offloadPolicies.getManagedLedgerOffloadDriver());
- Offloaders offloaders = offloadersCache.getOrLoadOffloaders(
- offloadPolicies.getOffloadersDirectory(), config.getNarExtractionDirectory());
-
- LedgerOffloaderFactory offloaderFactory = offloaders.getOffloaderFactory(
- offloadPolicies.getManagedLedgerOffloadDriver());
- try {
- return offloaderFactory.create(
- offloadPolicies,
- ImmutableMap.of(
- LedgerOffloader.METADATA_SOFTWARE_VERSION_KEY.toLowerCase(), PulsarVersion.getVersion(),
- LedgerOffloader.METADATA_SOFTWARE_GITSHA_KEY.toLowerCase(), PulsarVersion.getGitSha(),
- LedgerOffloader.METADATA_PULSAR_CLUSTER_NAME.toLowerCase(), config.getClusterName()
- ),
- schemaStorage,
- getOffloaderScheduler(offloadPolicies));
- } catch (IOException ioe) {
- throw new PulsarServerException(ioe.getMessage(), ioe.getCause());
+ synchronized (this) {
+ Offloaders offloaders = offloadersCache.getOrLoadOffloaders(
+ offloadPolicies.getOffloadersDirectory(), config.getNarExtractionDirectory());
+
+ LedgerOffloaderFactory offloaderFactory = offloaders.getOffloaderFactory(
+ offloadPolicies.getManagedLedgerOffloadDriver());
+ try {
+ return offloaderFactory.create(
+ offloadPolicies,
+ ImmutableMap.of(
+ LedgerOffloader.METADATA_SOFTWARE_VERSION_KEY.toLowerCase(), PulsarVersion.getVersion(),
+ LedgerOffloader.METADATA_SOFTWARE_GITSHA_KEY.toLowerCase(), PulsarVersion.getGitSha(),
+ LedgerOffloader.METADATA_PULSAR_CLUSTER_NAME.toLowerCase(), config.getClusterName()
+ ),
+ schemaStorage,
+ getOffloaderScheduler(offloadPolicies));
+ } catch (IOException ioe) {
+ throw new PulsarServerException(ioe.getMessage(), ioe.getCause());
+ }
}
} else {
- LOG.info("No ledger offloader configured, using NULL instance");
+ LOG.debug("No ledger offloader configured, using NULL instance");
return NullLedgerOffloader.INSTANCE;
}
} catch (Throwable t) {