Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[type:feature] Custome classloader hot load plugins to gateway. #5403

Open
wants to merge 134 commits into
base: master
Choose a base branch
from

Conversation

lahmXu
Copy link
Member

@lahmXu lahmXu commented Jan 17, 2024

The function points are as follows:

  1. Package the sofa and motan plugins independently, placed in the plugins directory through a separate classloader to load the jar package.
  2. Enable motan, sofa plugins e2e test.
  3. Solve the problem of hession conflict when sofa and motan plugins are enabled together.

Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
return doExecute(exchange, chain, selector, rule);
} catch (Throwable e) {
LogUtils.info(LOG, "Plugin class isolation execute failed. plugin: {}, exception: {}", named(), e);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

error

*/
default void putExtendDataHandler(List<?> dataSubscribers) {
final Type[] genericInterfaces = this.getClass().getGenericInterfaces();
if (genericInterfaces.length == 0 || CollectionUtils.isEmpty(dataSubscribers)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ArraysUtils.isEmpty

<!-- <dependency>-->
<!-- <groupId>com.alipay.sofa</groupId>-->
<!-- <artifactId>sofa-rpc-all</artifactId>-->
<!-- <scope>provided</scope>-->
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

provided

c = findClass(name);
}
} catch (ClassNotFoundException e) {
// ignore
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add log

} catch (ClassNotFoundException e) {
// ignore
}
if (c == null) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Objects.nonNull


private static final Logger LOG = LoggerFactory.getLogger(CommonMetaDataSubscriber.class);

private final Map<String, MetaDataHandler> handlerMap;
private final Map<String, MetaDataHandler> handlerMap = new HashMap<>();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

concurrent?

@moremind moremind added this to the 2.7.0 milestone Feb 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants