Merge branch 'apache-3.2' into apache-3.3

# Conflicts:
#	README.md
#	dubbo-container/dubbo-container-api/src/main/java/org/apache/dubbo/container/Main.java
This commit is contained in:
Albumen Kevin 2024-03-12 11:36:55 +08:00
commit da2dd6d2a1
15 changed files with 287 additions and 24 deletions

88
.github/DISCUSSION_TEMPLATE/general.yml vendored Normal file
View File

@ -0,0 +1,88 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
title: "[General][Java SDK (Component)] xxx"
body:
- type: markdown
attributes:
value: |
<img src="https://dubbo.apache.org/imgs/nav_logo2.png" alt="Dubbo logo" height="90px" align="right" />
Thank you for finding the time to share your idea! We really appreciate the community efforts to improve Dubbo.
If you need to report a security issue, please visit [our security policy](https://github.com/apache/dubbo/security/policy).
**Dubbo is open for world wide collaboration, please make sure that all the content you provide is in English.**
Remember that non-English idea is quite not friendly for everyone, and might unable to get the response!
- type: checkboxes
attributes:
label: Pre-check
options:
- label: >
I am sure that all the content I provide is in English.
required: true
- type: dropdown
attributes:
label: Apache Dubbo Component
description: |
What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
to choose the component that you want to ask questions about.
multiple: false
options:
- "Java SDK (apache/dubbo)"
- "Java Samples (apache/dubbo-samples)"
- "Java Integration Cases (apache/dubbo-integration-cases)"
- "Java SPI Extensions (apache/dubbo-spi-extensions)"
- "Java Benchmark (apache/dubbo-benchmark)"
- "Go SDK (apache/dubbo-go)"
- "Go Samples (apache/dubbo-go-samples)"
- "Rust SDK (apache/dubbo-rust)"
- "Node.js SDK (apache/dubbo-js)"
- "Python SDK (apache/dubbo-python)"
- "Kubernetes Integration (apache/dubbo-kubernetes)"
- "Pixiu Gateway (apache/dubbo-go-pixiu)"
- "Pixiu Gateway Samples (apache/dubbo-go-pixiu-samples)"
- "Admin (apache/dubbo-admin)"
- "Website (apache/dubbo-website)"
- "Awesome (apache/dubbo-awesome)"
- "Initializer (apache/dubbo-intializer)"
- "Others (apache/dubbo-xxx)"
validations:
required: true
- type: textarea
attributes:
label: Details
description: Anything you want to ask?
validations:
required: true
- type: checkboxes
attributes:
label: Code of Conduct
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
options:
- label: >
I agree to follow this project's
[Code of Conduct](https://www.apache.org/foundation/policies/conduct)
required: true
- type: markdown
attributes:
value: "Thanks for completing our form!"

View File

@ -0,0 +1,88 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
title: "[Q/A][Java SDK (Component)] xxx"
body:
- type: markdown
attributes:
value: |
<img src="https://dubbo.apache.org/imgs/nav_logo2.png" alt="Dubbo logo" height="90px" align="right" />
Thank you for finding the time to report the question! We really appreciate the community efforts to improve Dubbo.
If you need to report a security issue, please visit [our security policy](https://github.com/apache/dubbo/security/policy).
**Dubbo is open for world wide collaboration, please make sure that all the content you provide is in English.**
Remember that non-English question is quite not friendly for everyone, and might unable to get the response!
- type: checkboxes
attributes:
label: Pre-check
options:
- label: >
I am sure that all the content I provide is in English.
required: true
- type: dropdown
attributes:
label: Apache Dubbo Component
description: |
What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
to choose the component that you want to ask questions about.
multiple: false
options:
- "Java SDK (apache/dubbo)"
- "Java Samples (apache/dubbo-samples)"
- "Java Integration Cases (apache/dubbo-integration-cases)"
- "Java SPI Extensions (apache/dubbo-spi-extensions)"
- "Java Benchmark (apache/dubbo-benchmark)"
- "Go SDK (apache/dubbo-go)"
- "Go Samples (apache/dubbo-go-samples)"
- "Rust SDK (apache/dubbo-rust)"
- "Node.js SDK (apache/dubbo-js)"
- "Python SDK (apache/dubbo-python)"
- "Kubernetes Integration (apache/dubbo-kubernetes)"
- "Pixiu Gateway (apache/dubbo-go-pixiu)"
- "Pixiu Gateway Samples (apache/dubbo-go-pixiu-samples)"
- "Admin (apache/dubbo-admin)"
- "Website (apache/dubbo-website)"
- "Awesome (apache/dubbo-awesome)"
- "Initializer (apache/dubbo-intializer)"
- "Others (apache/dubbo-xxx)"
validations:
required: true
- type: textarea
attributes:
label: Details
description: Anything you want to know?
validations:
required: true
- type: checkboxes
attributes:
label: Code of Conduct
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
options:
- label: >
I agree to follow this project's
[Code of Conduct](https://www.apache.org/foundation/policies/conduct)
required: true
- type: markdown
attributes:
value: "Thanks for completing our form!"

View File

@ -18,7 +18,7 @@
name: Bug Report
description: File a bug report
title: "[Bug] "
labels: ["status/need-triage"]
labels: ["type/need-triage", "component/need-triage"]
projects: ["apache/337"]
body:
- type: markdown
@ -58,7 +58,23 @@ body:
issues.
required: true
- type: input
- type: dropdown
attributes:
label: Apache Dubbo Component
description: |
What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
to choose the component that you want to ask questions about.
multiple: false
options:
- "Java SDK (apache/dubbo)"
- "Java Samples (apache/dubbo-samples)"
- "Java Integration Cases (apache/dubbo-integration-cases)"
- "Java SPI Extensions (apache/dubbo-spi-extensions)"
- "Java Benchmark (apache/dubbo-benchmark)"
validations:
required: true
- type: textarea
attributes:
label: Dubbo Version
description: "Which Dubbo version, JDK version and operating system did you use?"

View File

@ -18,7 +18,7 @@
name: Feature Request
description: Create a Feature Request for Dubbo
title: "[Feature] "
labels: ["status/need-triage"]
labels: ["type/need-triage", "component/need-triage"]
projects: ["apache/337"]
body:
- type: markdown
@ -53,6 +53,22 @@ body:
feature requirement.
required: true
- type: dropdown
attributes:
label: Apache Dubbo Component
description: |
What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
to choose the component that you want to ask questions about.
multiple: false
options:
- "Java SDK (apache/dubbo)"
- "Java Samples (apache/dubbo-samples)"
- "Java Integration Cases (apache/dubbo-integration-cases)"
- "Java SPI Extensions (apache/dubbo-spi-extensions)"
- "Java Benchmark (apache/dubbo-benchmark)"
validations:
required: true
- type: textarea
attributes:
label: Descriptions

View File

@ -6,15 +6,12 @@
![License](https://img.shields.io/github/license/alibaba/dubbo.svg)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/apache/dubbo.svg)](http://isitmaintained.com/project/apache/dubbo "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/apache/dubbo.svg)](http://isitmaintained.com/project/apache/dubbo "Percentage of issues still open")
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Apache%20Dubbo%20is%20a%20high-performance%2C%20java%20based%2C%20open%20source%20RPC%20framework.&url=http://dubbo.apache.org/&via=ApacheDubbo&hashtags=rpc,java,dubbo,micro-service)
[![Twitter Follow](https://img.shields.io/twitter/follow/ApacheDubbo.svg?label=Follow&style=social&logoWidth=0)](https://twitter.com/intent/follow?screen_name=ApacheDubbo)
[![Gitter](https://badges.gitter.im/alibaba/dubbo.svg)](https://gitter.im/alibaba/dubbo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Apache Dubbo is an easy-to-use Web and RPC framework that provides multiple
language implementations(Java, [Go](https://github.com/apache/dubbo-go), [Rust](https://github.com/apache/dubbo-rust), [Node.js](https://github.com/apache/dubbo-js), [Web](https://github.com/apache/dubbo-js)) for communication, service discovery, traffic management,
observability, security, tools, and best practices for building enterprise-ready microservices.
Visit [the official website](https://dubbo.apache.org/) for more information.
We are now collecting Dubbo user info to help us to improve Dubbo further. Kindly support us by providing your usage information on [Wanted: who's using dubbo](https://github.com/apache/dubbo/discussions/13842), thanks :)
## Architecture
![Architecture](https://dubbo.apache.org/imgs/architecture.png)
@ -67,6 +64,64 @@ Get more details by visiting the links below to get your hands dirty with some w
## Contributing
See [CONTRIBUTING](https://github.com/apache/dubbo/blob/master/CONTRIBUTING.md) for details on submitting patches and the contribution workflow.
### How does the Dubbo Community collaborate?
The Dubbo Community primarily communicates on GitHub through issues, discussions, and pull requests.
- Issues: We use issues to track bugs and tasks. Any **work-related** item is associated with an issue.
- Discussions: We use discussions for questions, early proposals, and announcements. Any **idea-related** item is associated with a discussion.
- Pull Requests: We use pull requests to merge a set of changes from contributors into Dubbo.
We have also implemented [a project board](https://github.com/orgs/apache/projects/337) to monitor all the items.
Any essential changes should be discussed on the mailing list before they happen.
### Seeking for help
If you have questions such as:
- What is Dubbo?
- How do I use Dubbo?
- Why did an unexpected result occur?
Please start a discussion at https://github.com/apache/dubbo/discussions.
However, if you encounter the following situations:
- You're certain there's a bug that Dubbo needs to fix,
- You believe a feature could be enhanced,
- You have a detailed proposal for improving Dubbo,
Please open an issue at https://github.com/apache/dubbo/issues.
To ask effective questions, we recommend reading **[How To Ask Questions The Smart Way](https://github.com/selfteaching/How-To-Ask-Questions-The-Smart-Way/blob/master/How-To-Ask-Questions-The-Smart-Way.md)** first.
### Contribution
- Browse the "help wanted" tasks in the [Dubbo project board](https://github.com/orgs/apache/projects/337).
- Participate in discussions on the mailing list. See the subscription [guide](https://github.com/apache/dubbo/wiki/Mailing-list-subscription-guide).
- Respond to queries in the [discussions](https://github.com/apache/dubbo/issues).
- Resolve bugs reported in [issues](https://github.com/apache/dubbo/issues) and send us a pull request.
- Review existing [pull requests](https://github.com/apache/dubbo/pulls).
- Enhance the [website](https://github.com/apache/dubbo-website). We typically need:
- Blog posts
- Translations for documentation
- Use cases showcasing Dubbo integration in enterprise systems.
- Improve the [dubbo-admin](https://github.com/apache/dubbo-admin).
- Contribute to the projects listed in the [ecosystem](https://github.com/apache/?q=dubbo&type=all&language=&sort=).
- Any other forms of contribution not listed above are also welcome.
- If you're interested in contributing, please send an email to [dev@dubbo.apache.org](mailto:dev@dubbo.apache.org) to let us know!
For further details, please refer our [guide](https://github.com/apache/dubbo/blob/master/CONTRIBUTING.md) about how to contribute Dubbo.
## Reporting bugs
Please follow the [template](https://github.com/apache/dubbo/issues/new?template=dubbo-issue-report-template.md) for reporting any issues.
## Reporting a security vulnerability
Please report security vulnerabilities to [us](mailto:security@dubbo.apache.org) privately.
## Contact
* WeChat: apachedubbo
* DingTalk group: 37290003945
@ -86,9 +141,9 @@ See [CONTRIBUTING](https://github.com/apache/dubbo/blob/master/CONTRIBUTING.md)
* Fix bugs reported on [issues](https://github.com/apache/dubbo/issues), and send us a pull request.
* Review the existing [pull request](https://github.com/apache/dubbo/pulls).
* Improve the [website](https://github.com/apache/dubbo-website), typically we need
* blog post
* translation on documentation
* use cases around the integration of Dubbo in enterprise systems.
* blog post
* translation on documentation
* use cases around the integration of Dubbo in enterprise systems.
* Improve the [dubbo-admin/dubbo-monitor](https://github.com/apache/dubbo-admin).
* Contribute to the projects listed in [ecosystem](https://github.com/dubbo).
* Other forms of contribution not explicitly enumerated above.
@ -107,7 +162,6 @@ Please report security vulnerabilities to [us](mailto:security@dubbo.apache.org)
* [Dubbo Ecosystem Entry](https://github.com/apache?utf8=%E2%9C%93&q=dubbo&type=&language=) - A GitHub group `dubbo` to gather all Dubbo relevant projects not appropriate in [apache](https://github.com/apache) group yet
* [Dubbo Website](https://github.com/apache/dubbo-website) - Apache Dubbo official website
* [Dubbo Samples](https://github.com/apache/dubbo-samples) - samples for Apache Dubbo
* [Dubbo Spring Boot](https://github.com/apache/dubbo-spring-boot-project) - Spring Boot Project for Dubbo
* [Dubbo Admin](https://github.com/apache/dubbo-admin) - The reference implementation for Dubbo admin
* [Dubbo Awesome](https://github.com/apache/dubbo-awesome) - Dubbo's slides and video links in Meetup

View File

@ -19,7 +19,6 @@ package org.apache.dubbo.rpc.cluster.filter.support;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.rpc.AsyncRpcResult;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.rpc.Invocation;
@ -63,10 +62,7 @@ public class ConsumerContextFilter implements ClusterFilter, ClusterFilter.Liste
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
RpcContext.getServiceContext()
.setInvoker(invoker)
.setInvocation(invocation)
.setLocalAddress(NetUtils.getLocalHost(), 0);
RpcContext.getServiceContext().setInvoker(invoker).setInvocation(invocation);
RpcContext context = RpcContext.getClientAttachment();
context.setAttachment(REMOTE_APPLICATION_KEY, invoker.getUrl().getApplication());

View File

@ -25,11 +25,13 @@ import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.resource.Disposable;
import org.apache.dubbo.common.utils.ConcurrentHashMapUtils;
import org.apache.dubbo.common.utils.ConcurrentHashSet;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ScopeModelAccessor;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
@ -53,7 +55,7 @@ public class ScopeBeanFactory {
private final List<BeanInfo> registeredBeanInfos = new CopyOnWriteArrayList<>();
private InstantiationStrategy instantiationStrategy;
private final AtomicBoolean destroyed = new AtomicBoolean();
private List<Class<?>> registeredClasses = new ArrayList<>();
private final Set<Class<?>> registeredClasses = new ConcurrentHashSet<>();
public ScopeBeanFactory(ScopeBeanFactory parent, ExtensionAccessor extensionAccessor) {
this.parent = parent;
@ -299,7 +301,7 @@ public class ScopeBeanFactory {
}
}
public List<Class<?>> getRegisteredClasses() {
public Set<Class<?>> getRegisteredClasses() {
return registeredClasses;
}
}

View File

@ -122,7 +122,7 @@ public class AbortPolicyWithReport extends ThreadPoolExecutor.AbortPolicy {
// 0-1 - Thread pool is EXHAUSTED!
logger.warn(COMMON_THREAD_POOL_EXHAUSTED, "too much client requesting provider", "", msg);
if (Boolean.parseBoolean(url.getParameter(DUMP_ENABLE, "true"))) {
if (Boolean.parseBoolean(url.getParameter(DUMP_ENABLE, Boolean.TRUE.toString()))) {
dumpJStack();
}
@ -194,7 +194,7 @@ public class AbortPolicyWithReport extends ThreadPoolExecutor.AbortPolicy {
});
} finally {
guard.release();
// must shutdown thread pool ,if not will lead to OOM
// must shut down thread pool ,if not will lead to OOM
if (pool != null) {
pool.shutdown();
}

View File

@ -218,7 +218,7 @@ public class ModuleConfig extends AbstractConfig {
/**
* Whether start module in background.
* If start in backgound, do not await finish on Spring ContextRefreshedEvent.
* If start in background, do not await finish on Spring ContextRefreshedEvent.
*
* @see org.apache.dubbo.config.spring.context.DubboDeployApplicationListener
*/

View File

@ -27,7 +27,7 @@ import java.util.Map;
import static org.apache.dubbo.metadata.annotation.processing.util.TypeUtils.isPrimitiveType;
/**
* {@link TypeBuilder} for Java {@link PrimitiveType primitve type}
* {@link TypeBuilder} for Java {@link PrimitiveType primitive type}
*
* @since 2.7.6
*/

View File

@ -436,7 +436,7 @@ class ExchangeCodecTest extends TelnetCodecTest {
Assertions.assertEquals(response.getStatus(), obj.getStatus());
Assertions.assertEquals(response.isHeartbeat(), obj.isHeartbeat());
Assertions.assertEquals(person, obj.getResult());
// encode response verson ??
// encode response version ??
// Assertions.assertEquals(response.getProtocolVersion(), obj.getVersion());
future.cancel();

View File

@ -35,6 +35,7 @@ import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.InvokeMode;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.protocol.AbstractInvoker;
@ -99,6 +100,7 @@ public class DubboInvoker<T> extends AbstractInvoker<T> {
} else {
currentClient = exchangeClients.get(index.getAndIncrement() % exchangeClients.size());
}
RpcContext.getServiceContext().setLocalAddress(currentClient.getLocalAddress());
try {
boolean isOneway = RpcUtils.isOneway(getUrl(), invocation);

View File

@ -157,6 +157,7 @@ public class TripleInvoker<T> extends AbstractInvoker<T> {
isSync(methodDescriptor, invocation) ? new ThreadlessExecutor() : streamExecutor;
ClientCall call = new TripleClientCall(
connectionClient, callbackExecutor, getUrl().getOrDefaultFrameworkModel(), writeQueue);
RpcContext.getServiceContext().setLocalAddress(connectionClient.getLocalAddress());
AsyncRpcResult result;
try {
switch (methodDescriptor.getRpcType()) {

View File

@ -43,7 +43,7 @@ import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncl
import static org.springframework.util.ClassUtils.isPrimitiveOrWrapper;
/**
* Abstract Dubbo Meatadata
* Abstract Dubbo Metadata
*
* @since 2.7.0
*/