Skip to content

Commit 7277f5e

Browse files
ralf0131jerrick-zhu
authored andcommitted
Qos enhancement (#2153)
* Not to accept foreign ip by default. * Log if fail to start qos server. #2046 * Fix typo. No functional change. * Remove redundant declaration. * Sync dubbo.xsd to compact dubbo.xsd. * Simplify code and add comments. * Add log message if qos is not enabled. * Fix UT failure.
1 parent 3a267f8 commit 7277f5e

File tree

6 files changed

+381
-364
lines changed

6 files changed

+381
-364
lines changed

dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,13 @@ public class ApplicationConfig extends AbstractConfig {
7171
// directory for saving thread dump
7272
private String dumpDirectory;
7373

74+
// whether to enable qos or not
7475
private Boolean qosEnable;
7576

77+
// the qos port to listen
7678
private Integer qosPort;
7779

80+
// should we accept foreign ip or not?
7881
private Boolean qosAcceptForeignIp;
7982

8083
// customized parameters

dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd

Lines changed: 179 additions & 174 deletions
Large diffs are not rendered by default.

dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd

Lines changed: 174 additions & 174 deletions
Large diffs are not rendered by default.

dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
import org.apache.dubbo.common.Constants;
2020
import org.apache.dubbo.common.URL;
21+
import org.apache.dubbo.common.logger.Logger;
22+
import org.apache.dubbo.common.logger.LoggerFactory;
23+
import org.apache.dubbo.qos.common.QosConstants;
2124
import org.apache.dubbo.qos.server.Server;
2225
import org.apache.dubbo.rpc.Exporter;
2326
import org.apache.dubbo.rpc.Invoker;
@@ -30,7 +33,11 @@
3033
import static org.apache.dubbo.common.Constants.QOS_ENABLE;
3134
import static org.apache.dubbo.common.Constants.QOS_PORT;
3235

36+
3337
public class QosProtocolWrapper implements Protocol {
38+
39+
private final Logger logger = LoggerFactory.getLogger(QosProtocolWrapper.class);
40+
3441
private static AtomicBoolean hasStarted = new AtomicBoolean(false);
3542

3643
private Protocol protocol;
@@ -76,20 +83,23 @@ private void startQosServer(URL url) {
7683
}
7784

7885
try {
79-
boolean qosEnable = Boolean.parseBoolean(url.getParameter(QOS_ENABLE,"true"));
86+
boolean qosEnable = url.getParameter(QOS_ENABLE,true);
8087
if (!qosEnable) {
88+
logger.info("qos won't be started because it is disabled. " +
89+
"Please check dubbo.application.qos.enable is configured either in system property, " +
90+
"dubbo.properties or XML/spring-boot configuration.");
8191
return;
8292
}
8393

84-
int port = Integer.parseInt(url.getParameter(QOS_PORT,"22222"));
85-
boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"true"));
94+
int port = url.getParameter(QOS_PORT, QosConstants.DEFAULT_PORT);
95+
boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"false"));
8696
Server server = Server.getInstance();
8797
server.setPort(port);
8898
server.setAcceptForeignIp(acceptForeignIp);
8999
server.start();
90100

91101
} catch (Throwable throwable) {
92-
//throw new RpcException("fail to start qos server", throwable);
102+
logger.warn("Fail to start qos server: ", throwable);
93103
}
94104
}
95105

dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ public class QosProtocolWrapperTest {
4242

4343
@Before
4444
public void setUp() throws Exception {
45-
when(url.getParameter(Constants.QOS_ENABLE, "true")).thenReturn("true");
46-
when(url.getParameter(Constants.QOS_PORT, "22222")).thenReturn("12345");
47-
when(url.getParameter(Constants.ACCEPT_FOREIGN_IP, "true")).thenReturn("false");
45+
when(url.getParameter(Constants.QOS_ENABLE, true)).thenReturn(true);
46+
when(url.getParameter(Constants.QOS_PORT, 22222)).thenReturn(12345);
47+
when(url.getParameter(Constants.ACCEPT_FOREIGN_IP, true)).thenReturn(false);
4848
when(invoker.getUrl()).thenReturn(url);
4949
when(url.getProtocol()).thenReturn(Constants.REGISTRY_PROTOCOL);
5050
}

dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -136,26 +136,26 @@ public <T> Exporter<T> export(final Invoker<T> originInvoker) throws RpcExceptio
136136

137137
//registry provider
138138
final Registry registry = getRegistry(originInvoker);
139-
final URL registedProviderUrl = getRegistedProviderUrl(originInvoker);
139+
final URL registeredProviderUrl = getRegisteredProviderUrl(originInvoker);
140140

141141
//to judge to delay publish whether or not
142-
boolean register = registedProviderUrl.getParameter("register", true);
142+
boolean register = registeredProviderUrl.getParameter("register", true);
143143

144-
ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registedProviderUrl);
144+
ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registeredProviderUrl);
145145

146146
if (register) {
147-
register(registryUrl, registedProviderUrl);
147+
register(registryUrl, registeredProviderUrl);
148148
ProviderConsumerRegTable.getProviderWrapper(originInvoker).setReg(true);
149149
}
150150

151151
// Subscribe the override data
152152
// FIXME When the provider subscribes, it will affect the scene : a certain JVM exposes the service and call the same service. Because the subscribed is cached key with the name of the service, it causes the subscription information to cover.
153-
final URL overrideSubscribeUrl = getSubscribedOverrideUrl(registedProviderUrl);
153+
final URL overrideSubscribeUrl = getSubscribedOverrideUrl(registeredProviderUrl);
154154
final OverrideListener overrideSubscribeListener = new OverrideListener(overrideSubscribeUrl, originInvoker);
155155
overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener);
156156
registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener);
157157
//Ensure that a new exporter instance is returned every time export
158-
return new DestroyableExporter<T>(exporter, originInvoker, overrideSubscribeUrl, registedProviderUrl);
158+
return new DestroyableExporter<T>(exporter, originInvoker, overrideSubscribeUrl, registeredProviderUrl);
159159
}
160160

161161
@SuppressWarnings("unchecked")
@@ -220,10 +220,10 @@ private URL getRegistryUrl(Invoker<?> originInvoker) {
220220
* @param originInvoker
221221
* @return
222222
*/
223-
private URL getRegistedProviderUrl(final Invoker<?> originInvoker) {
223+
private URL getRegisteredProviderUrl(final Invoker<?> originInvoker) {
224224
URL providerUrl = getProviderUrl(originInvoker);
225225
//The address you see at the registry
226-
final URL registedProviderUrl = providerUrl.removeParameters(getFilteredKeys(providerUrl))
226+
return providerUrl.removeParameters(getFilteredKeys(providerUrl))
227227
.removeParameter(Constants.MONITOR_KEY)
228228
.removeParameter(Constants.BIND_IP_KEY)
229229
.removeParameter(Constants.BIND_PORT_KEY)
@@ -232,7 +232,6 @@ private URL getRegistedProviderUrl(final Invoker<?> originInvoker) {
232232
.removeParameter(ACCEPT_FOREIGN_IP)
233233
.removeParameter(VALIDATION_KEY)
234234
.removeParameter(INTERFACES);
235-
return registedProviderUrl;
236235
}
237236

238237
private URL getSubscribedOverrideUrl(URL registedProviderUrl) {

0 commit comments

Comments
 (0)