Skip to content

Commit 99d8276

Browse files
authored
Optimizing the scope of RPC base classes (apache#15946)
* Optimizing the scope of RPC base classes * Fix UT
1 parent d218b02 commit 99d8276

File tree

28 files changed

+301
-359
lines changed

28 files changed

+301
-359
lines changed

Diff for: dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/java/org/apache/dolphinscheduler/alert/rpc/AlertRpcServer.java

+1-15
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package org.apache.dolphinscheduler.alert.rpc;
1919

2020
import org.apache.dolphinscheduler.alert.config.AlertConfig;
21-
import org.apache.dolphinscheduler.extract.base.NettyRemotingServerFactory;
2221
import org.apache.dolphinscheduler.extract.base.config.NettyServerConfig;
2322
import org.apache.dolphinscheduler.extract.base.server.SpringServerMethodInvokerDiscovery;
2423

@@ -31,20 +30,7 @@
3130
public class AlertRpcServer extends SpringServerMethodInvokerDiscovery implements AutoCloseable {
3231

3332
public AlertRpcServer(AlertConfig alertConfig) {
34-
super(NettyRemotingServerFactory.buildNettyRemotingServer(
35-
NettyServerConfig.builder().serverName("AlertRpcServer").listenPort(alertConfig.getPort()).build()));
33+
super(NettyServerConfig.builder().serverName("AlertRpcServer").listenPort(alertConfig.getPort()).build());
3634
}
3735

38-
public void start() {
39-
log.info("Starting AlertRpcServer...");
40-
nettyRemotingServer.start();
41-
log.info("Started AlertRpcServer...");
42-
}
43-
44-
@Override
45-
public void close() {
46-
log.info("Closing AlertRpcServer...");
47-
nettyRemotingServer.close();
48-
log.info("Closed AlertRpcServer...");
49-
}
5036
}

Diff for: dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/processor/TaskResponseProcessorTestConfig.java renamed to dolphinscheduler-alert/dolphinscheduler-alert-server/src/test/java/org/apache/dolphinscheduler/alert/rpc/AlertRpcServerTest.java

+15-13
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,24 @@
1515
* limitations under the License.
1616
*/
1717

18-
package org.apache.dolphinscheduler.server.master.processor;
18+
package org.apache.dolphinscheduler.alert.rpc;
1919

20-
import org.apache.dolphinscheduler.server.master.utils.DataQualityResultOperator;
20+
import org.apache.dolphinscheduler.alert.config.AlertConfig;
2121

22-
import org.mockito.Mockito;
23-
import org.springframework.context.annotation.Bean;
24-
import org.springframework.context.annotation.Configuration;
22+
import org.junit.jupiter.api.Test;
2523

26-
/**
27-
* dependency config
28-
*/
29-
@Configuration
30-
public class TaskResponseProcessorTestConfig {
24+
class AlertRpcServerTest {
25+
26+
private final AlertRpcServer alertRpcServer = new AlertRpcServer(new AlertConfig());
3127

32-
@Bean
33-
public DataQualityResultOperator dataQualityResultOperator() {
34-
return Mockito.mock(DataQualityResultOperator.class);
28+
@Test
29+
void testStart() {
30+
alertRpcServer.start();
3531
}
32+
33+
@Test
34+
void testClose() {
35+
alertRpcServer.close();
36+
}
37+
3638
}

Diff for: dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java

+9-10
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
4141
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
4242
import org.apache.dolphinscheduler.dao.repository.TaskInstanceDao;
43-
import org.apache.dolphinscheduler.extract.base.NettyRemotingServer;
4443
import org.apache.dolphinscheduler.extract.base.config.NettyServerConfig;
4544
import org.apache.dolphinscheduler.extract.base.server.SpringServerMethodInvokerDiscovery;
4645
import org.apache.dolphinscheduler.extract.common.ILogService;
@@ -91,7 +90,7 @@ public class LoggerServiceTest {
9190
@Mock
9291
private TaskDefinitionMapper taskDefinitionMapper;
9392

94-
private NettyRemotingServer nettyRemotingServer;
93+
private SpringServerMethodInvokerDiscovery springServerMethodInvokerDiscovery;
9594

9695
private int nettyServerPort = 18080;
9796

@@ -103,11 +102,10 @@ public void setUp() {
103102
return;
104103
}
105104

106-
nettyRemotingServer = new NettyRemotingServer(NettyServerConfig.builder().listenPort(nettyServerPort).build());
107-
nettyRemotingServer.start();
108-
SpringServerMethodInvokerDiscovery springServerMethodInvokerDiscovery =
109-
new SpringServerMethodInvokerDiscovery(nettyRemotingServer);
110-
springServerMethodInvokerDiscovery.postProcessAfterInitialization(new ILogService() {
105+
springServerMethodInvokerDiscovery = new SpringServerMethodInvokerDiscovery(
106+
NettyServerConfig.builder().serverName("TestLogServer").listenPort(nettyServerPort).build());
107+
springServerMethodInvokerDiscovery.start();
108+
springServerMethodInvokerDiscovery.registerServerMethodInvokerProvider(new ILogService() {
111109

112110
@Override
113111
public TaskInstanceLogFileDownloadResponse getTaskInstanceWholeLogFileBytes(TaskInstanceLogFileDownloadRequest taskInstanceLogFileDownloadRequest) {
@@ -142,13 +140,14 @@ public GetAppIdResponse getAppId(GetAppIdRequest getAppIdRequest) {
142140
public void removeTaskInstanceLog(String taskInstanceLogAbsolutePath) {
143141

144142
}
145-
}, "iLogServiceImpl");
143+
});
144+
springServerMethodInvokerDiscovery.start();
146145
}
147146

148147
@AfterEach
149148
public void tearDown() {
150-
if (nettyRemotingServer != null) {
151-
nettyRemotingServer.close();
149+
if (springServerMethodInvokerDiscovery != null) {
150+
springServerMethodInvokerDiscovery.close();
152151
}
153152
}
154153

+2-3
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@
1717

1818
package org.apache.dolphinscheduler.extract.base.client;
1919

20-
import org.apache.dolphinscheduler.extract.base.NettyRemotingClient;
2120
import org.apache.dolphinscheduler.extract.base.utils.Host;
2221

2322
import java.lang.reflect.Method;
2423

25-
public abstract class BaseRemoteMethodInvoker implements ClientMethodInvoker {
24+
abstract class AbstractClientMethodInvoker implements ClientMethodInvoker {
2625

2726
protected final String methodIdentifier;
2827

@@ -32,7 +31,7 @@ public abstract class BaseRemoteMethodInvoker implements ClientMethodInvoker {
3231

3332
protected final Host serverHost;
3433

35-
public BaseRemoteMethodInvoker(Host serverHost, Method localMethod, NettyRemotingClient nettyRemotingClient) {
34+
AbstractClientMethodInvoker(Host serverHost, Method localMethod, NettyRemotingClient nettyRemotingClient) {
3635
this.serverHost = serverHost;
3736
this.localMethod = localMethod;
3837
this.nettyRemotingClient = nettyRemotingClient;

Diff for: dolphinscheduler-extract/dolphinscheduler-extract-base/src/main/java/org/apache/dolphinscheduler/extract/base/client/ClientInvocationHandler.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import static com.google.common.base.Preconditions.checkNotNull;
2121

22-
import org.apache.dolphinscheduler.extract.base.NettyRemotingClient;
2322
import org.apache.dolphinscheduler.extract.base.RpcMethod;
2423
import org.apache.dolphinscheduler.extract.base.utils.Host;
2524

@@ -31,15 +30,15 @@
3130
import lombok.extern.slf4j.Slf4j;
3231

3332
@Slf4j
34-
public class ClientInvocationHandler implements InvocationHandler {
33+
class ClientInvocationHandler implements InvocationHandler {
3534

3635
private final NettyRemotingClient nettyRemotingClient;
3736

3837
private final Map<String, ClientMethodInvoker> methodInvokerMap;
3938

4039
private final Host serverHost;
4140

42-
public ClientInvocationHandler(Host serverHost, NettyRemotingClient nettyRemotingClient) {
41+
ClientInvocationHandler(Host serverHost, NettyRemotingClient nettyRemotingClient) {
4342
this.serverHost = checkNotNull(serverHost);
4443
this.nettyRemotingClient = checkNotNull(nettyRemotingClient);
4544
this.methodInvokerMap = new ConcurrentHashMap<>();

Diff for: dolphinscheduler-extract/dolphinscheduler-extract-base/src/main/java/org/apache/dolphinscheduler/extract/base/client/ClientMethodInvoker.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
import java.lang.reflect.Method;
2121

22-
public interface ClientMethodInvoker {
22+
interface ClientMethodInvoker {
2323

2424
Object invoke(Object proxy, Method method, Object[] args) throws Throwable;
2525

Diff for: dolphinscheduler-extract/dolphinscheduler-extract-base/src/main/java/org/apache/dolphinscheduler/extract/base/client/IRpcClientProxyFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
package org.apache.dolphinscheduler.extract.base.client;
1919

20-
public interface IRpcClientProxyFactory {
20+
interface IRpcClientProxyFactory {
2121

2222
/**
2323
* Create the client proxy.

Diff for: dolphinscheduler-extract/dolphinscheduler-extract-base/src/main/java/org/apache/dolphinscheduler/extract/base/client/JdkDynamicRpcClientProxyFactory.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
package org.apache.dolphinscheduler.extract.base.client;
1919

20-
import org.apache.dolphinscheduler.extract.base.NettyRemotingClient;
2120
import org.apache.dolphinscheduler.extract.base.utils.Host;
2221

2322
import java.lang.reflect.Proxy;
@@ -34,7 +33,7 @@
3433
/**
3534
* This class is used to create a proxy client which will transform local method invocation to remove invocation.
3635
*/
37-
public class JdkDynamicRpcClientProxyFactory implements IRpcClientProxyFactory {
36+
class JdkDynamicRpcClientProxyFactory implements IRpcClientProxyFactory {
3837

3938
private final NettyRemotingClient nettyRemotingClient;
4039

@@ -49,7 +48,7 @@ public Map<String, Object> load(String key) {
4948
}
5049
});
5150

52-
public JdkDynamicRpcClientProxyFactory(NettyRemotingClient nettyRemotingClient) {
51+
JdkDynamicRpcClientProxyFactory(NettyRemotingClient nettyRemotingClient) {
5352
this.nettyRemotingClient = nettyRemotingClient;
5453
}
5554

Diff for: dolphinscheduler-extract/dolphinscheduler-extract-base/src/main/java/org/apache/dolphinscheduler/extract/base/NettyClientHandler.java renamed to dolphinscheduler-extract/dolphinscheduler-extract-base/src/main/java/org/apache/dolphinscheduler/extract/base/client/NettyClientHandler.java

+4-14
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,15 @@
1515
* limitations under the License.
1616
*/
1717

18-
package org.apache.dolphinscheduler.extract.base;
18+
package org.apache.dolphinscheduler.extract.base.client;
1919

20+
import org.apache.dolphinscheduler.extract.base.StandardRpcResponse;
2021
import org.apache.dolphinscheduler.extract.base.future.ResponseFuture;
2122
import org.apache.dolphinscheduler.extract.base.protocal.HeartBeatTransporter;
2223
import org.apache.dolphinscheduler.extract.base.protocal.Transporter;
2324
import org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer;
2425
import org.apache.dolphinscheduler.extract.base.utils.ChannelUtils;
2526

26-
import java.util.concurrent.ExecutorService;
27-
2827
import lombok.extern.slf4j.Slf4j;
2928
import io.netty.channel.ChannelFutureListener;
3029
import io.netty.channel.ChannelHandler;
@@ -38,11 +37,8 @@ public class NettyClientHandler extends ChannelInboundHandlerAdapter {
3837

3938
private final NettyRemotingClient nettyRemotingClient;
4039

41-
private final ExecutorService callbackExecutor;
42-
43-
public NettyClientHandler(NettyRemotingClient nettyRemotingClient, ExecutorService callbackExecutor) {
40+
public NettyClientHandler(NettyRemotingClient nettyRemotingClient) {
4441
this.nettyRemotingClient = nettyRemotingClient;
45-
this.callbackExecutor = callbackExecutor;
4642
}
4743

4844
@Override
@@ -64,13 +60,7 @@ private void processReceived(final Transporter transporter) {
6460
}
6561
StandardRpcResponse deserialize = JsonSerializer.deserialize(transporter.getBody(), StandardRpcResponse.class);
6662
future.setIRpcResponse(deserialize);
67-
future.release();
68-
if (future.getInvokeCallback() != null) {
69-
future.removeFuture();
70-
this.callbackExecutor.execute(future::executeInvokeCallback);
71-
} else {
72-
future.putResponse(deserialize);
73-
}
63+
future.putResponse(deserialize);
7464
}
7565

7666
@Override

0 commit comments

Comments
 (0)