Skip to content

Commit

Permalink
[improve][broker] Remove ClassLoaderSwitcher to avoid objects allocat…
Browse files Browse the repository at this point in the history
…ions and consistent the codestyle (apache#22796)
  • Loading branch information
dao-jun authored and Technoboy- committed May 30, 2024
1 parent 18db799 commit 7918ed5
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 51 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.pulsar.broker.ClassLoaderSwitcher;
import org.apache.pulsar.common.configuration.PulsarConfiguration;
import org.apache.pulsar.common.nar.NarClassLoader;
import org.eclipse.jetty.servlet.ServletHolder;
Expand All @@ -40,29 +39,45 @@ public class AdditionalServletWithClassLoader implements AdditionalServlet {

@Override
public void loadConfig(PulsarConfiguration pulsarConfiguration) {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
servlet.loadConfig(pulsarConfiguration);
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public String getBasePath() {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
return servlet.getBasePath();
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public ServletHolder getServletHolder() {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
return servlet.getServletHolder();
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public void close() {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
servlet.close();
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
try {
classLoader.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.pulsar.broker.ClassLoaderSwitcher;
import org.apache.pulsar.broker.ServiceConfiguration;
import org.apache.pulsar.broker.service.BrokerService;
import org.apache.pulsar.common.nar.NarClassLoader;
Expand All @@ -44,52 +43,79 @@ class ProtocolHandlerWithClassLoader implements ProtocolHandler {

@Override
public String protocolName() {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
return handler.protocolName();
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public boolean accept(String protocol) {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
return handler.accept(protocol);
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public void initialize(ServiceConfiguration conf) throws Exception {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
handler.initialize(conf);
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public String getProtocolDataToAdvertise() {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
return handler.getProtocolDataToAdvertise();
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public void start(BrokerService service) {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
handler.start(service);
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public Map<InetSocketAddress, ChannelInitializer<SocketChannel>> newChannelInitializers() {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
return handler.newChannelInitializers();
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}
}

@Override
public void close() {
try (ClassLoaderSwitcher ignored = new ClassLoaderSwitcher(classLoader)) {
ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
handler.close();
} finally {
Thread.currentThread().setContextClassLoader(prevClassLoader);
}

try {
classLoader.close();
} catch (IOException e) {
Expand Down

0 comments on commit 7918ed5

Please sign in to comment.