Skip to content

Commit

Permalink
Fix export
Browse files Browse the repository at this point in the history
  • Loading branch information
AlbumenJ committed Jun 20, 2023
1 parent cb8544d commit 625e010
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,24 @@
*/
package org.apache.dubbo.registry.integration;

import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.Exporter;

import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;

public class ExporterFactory {
private final Map<String, ReferenceCountExporter<?>> exporters = new ConcurrentHashMap<>();

private final Protocol protocol;

public ExporterFactory(FrameworkModel frameworkModel) {
this.protocol = frameworkModel.getExtensionLoader(Protocol.class).getAdaptiveExtension();
}

protected ReferenceCountExporter<?> createExporter(String providerKey, Invoker<?> invoker) {
protected ReferenceCountExporter<?> createExporter(String providerKey, Callable<Exporter<?>> exporterProducer) {
return exporters.computeIfAbsent(providerKey,
key -> new ReferenceCountExporter<>(protocol.export(invoker), key, this));
key -> {
try {
return new ReferenceCountExporter<>(exporterProducer.call(), key, this);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}

protected void remove(String key, ReferenceCountExporter<?> exporter) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,8 @@ private <T> ExporterChangeableWrapper<T> doLocalExport(final Invoker<T> originIn
.computeIfAbsent(registryUrlKey, s -> {
Invoker<?> invokerDelegate = new InvokerDelegate<>(originInvoker, providerUrl);
return new ExporterChangeableWrapper<>(
(ReferenceCountExporter<T>) exporterFactory.createExporter(providerUrlKey, invokerDelegate), originInvoker);
(ReferenceCountExporter<T>) exporterFactory.createExporter(providerUrlKey,
() -> protocol.export(originInvoker)), originInvoker);
});
}

Expand Down

0 comments on commit 625e010

Please sign in to comment.