Skip to content

Commit

Permalink
Merge branch '3.3' into fix/fix_native_image
Browse files Browse the repository at this point in the history
  • Loading branch information
AlbumenJ authored Feb 11, 2025
2 parents bd56cbb + 5c5e7f4 commit 80a8dd6
Show file tree
Hide file tree
Showing 16 changed files with 412 additions and 132 deletions.
2 changes: 1 addition & 1 deletion dubbo-configcenter/dubbo-configcenter-apollo/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<description>The Apollo implementation of the configcenter api</description>
<properties>
<skip_maven_deploy>false</skip_maven_deploy>
<apollo_mock_server_version>2.3.0</apollo_mock_server_version>
<apollo_mock_server_version>2.4.0</apollo_mock_server_version>
</properties>

<dependencies>
Expand Down
8 changes: 4 additions & 4 deletions dubbo-dependencies-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -118,12 +118,12 @@
<hibernate_validator_new_version>7.0.5.Final</hibernate_validator_new_version>
<jel_version>3.0.1-b12</jel_version>
<jcache_version>1.1.1</jcache_version>
<apollo_client_version>2.3.0</apollo_client_version>
<apollo_client_version>2.4.0</apollo_client_version>
<snakeyaml_version>2.3</snakeyaml_version>
<commons_lang3_version>3.17.0</commons_lang3_version>
<envoy_api_version>0.1.35</envoy_api_version>
<micrometer.version>1.14.3</micrometer.version>
<opentelemetry.version>1.46.0</opentelemetry.version>
<opentelemetry.version>1.47.0</opentelemetry.version>
<zipkin-reporter.version>3.4.3</zipkin-reporter.version>
<micrometer-tracing.version>1.4.2</micrometer-tracing.version>
<t_digest.version>3.3</t_digest.version>
Expand All @@ -146,14 +146,14 @@
<mustache_version>0.9.14</mustache_version>
<!-- Log libs -->
<slf4j_version>1.7.36</slf4j_version>
<jcl_version>1.3.4</jcl_version>
<jcl_version>1.3.5</jcl_version>
<log4j_version>1.2.17</log4j_version>
<logback_version>1.2.13</logback_version>
<!-- Fix the bug of log4j refer:https://github.com/apache/logging-log4j2/pull/608 -->
<log4j2_version>2.24.3</log4j2_version>
<commons_io_version>2.18.0</commons_io_version>
<commons-codec_version>1.18.0</commons-codec_version>
<groovy_version>4.0.24</groovy_version>
<groovy_version>4.0.25</groovy_version>

<!-- Test libs -->
<junit_jupiter_version>5.11.4</junit_jupiter_version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,24 @@
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.JsonUtils;
import org.apache.dubbo.config.TracingConfig;
import org.apache.dubbo.metrics.MetricsGlobalRegistry;
import org.apache.dubbo.metrics.utils.MetricsSupportUtil;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.tracing.handler.DubboClientTracingObservationHandler;
import org.apache.dubbo.tracing.handler.DubboServerTracingObservationHandler;
import org.apache.dubbo.tracing.metrics.ObservationMeter;
import org.apache.dubbo.tracing.tracer.PropagatorProvider;
import org.apache.dubbo.tracing.tracer.PropagatorProviderFactory;
import org.apache.dubbo.tracing.tracer.TracerProvider;
import org.apache.dubbo.tracing.tracer.TracerProviderFactory;

import io.micrometer.observation.ObservationHandler;
import io.micrometer.observation.ObservationRegistry;
import io.micrometer.tracing.Tracer;
import io.micrometer.tracing.handler.DefaultTracingObservationHandler;
import io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler;
import io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler;
import io.micrometer.tracing.propagation.Propagator;

import static org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_NOT_FOUND_TRACER_DEPENDENCY;

public class DubboObservationRegistry {
Expand All @@ -48,8 +56,8 @@ public DubboObservationRegistry(ApplicationModel applicationModel, TracingConfig

public void initObservationRegistry() {
// If get ObservationRegistry.class from external(eg Spring.), use external.
io.micrometer.observation.ObservationRegistry externalObservationRegistry =
applicationModel.getBeanFactory().getBean(io.micrometer.observation.ObservationRegistry.class);
ObservationRegistry externalObservationRegistry =
applicationModel.getBeanFactory().getBean(ObservationRegistry.class);
if (externalObservationRegistry != null) {
if (logger.isDebugEnabled()) {
logger.debug("ObservationRegistry.class from external is existed.");
Expand All @@ -71,36 +79,26 @@ public void initObservationRegistry() {
return;
}
// The real tracer will come from tracer implementation (OTel / Brave)
io.micrometer.tracing.Tracer tracer = tracerProvider.getTracer();
Tracer tracer = tracerProvider.getTracer();

// The real propagator will come from tracer implementation (OTel / Brave)
PropagatorProvider propagatorProvider = PropagatorProviderFactory.getPropagatorProvider();
io.micrometer.tracing.propagation.Propagator propagator = propagatorProvider != null
? propagatorProvider.getPropagator()
: io.micrometer.tracing.propagation.Propagator.NOOP;
Propagator propagator = propagatorProvider != null ? propagatorProvider.getPropagator() : Propagator.NOOP;

io.micrometer.observation.ObservationRegistry registry = io.micrometer.observation.ObservationRegistry.create();
ObservationRegistry registry = ObservationRegistry.create();
registry.observationConfig()
// set up a first matching handler that creates spans - it comes from Micrometer Tracing.
// set up spans for sending and receiving data over the wire and a default one.
.observationHandler(
new io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler(
new io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler<>(
tracer, propagator),
new io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler<>(
tracer, propagator),
new io.micrometer.tracing.handler.DefaultTracingObservationHandler(tracer)))
.observationHandler(
new io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler(
new DubboClientTracingObservationHandler<>(tracer),
new DubboServerTracingObservationHandler<>(tracer)));
.observationHandler(new ObservationHandler.FirstMatchingCompositeObservationHandler(
new PropagatingSenderTracingObservationHandler<>(tracer, propagator),
new PropagatingReceiverTracingObservationHandler<>(tracer, propagator),
new DefaultTracingObservationHandler(tracer)))
.observationHandler(new ObservationHandler.FirstMatchingCompositeObservationHandler(
new DubboClientTracingObservationHandler<>(tracer),
new DubboServerTracingObservationHandler<>(tracer)));

if (MetricsSupportUtil.isSupportMetrics()) {
io.micrometer.core.instrument.MeterRegistry meterRegistry =
MetricsGlobalRegistry.getCompositeRegistry(applicationModel);
registry.observationConfig()
.observationHandler(new io.micrometer.core.instrument.observation.DefaultMeterObservationHandler(
meterRegistry));
ObservationMeter.addMeterRegistry(registry, applicationModel);
}

applicationModel.getBeanFactory().registerBean(registry);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* 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.
*/
package org.apache.dubbo.tracing.metrics;

import org.apache.dubbo.metrics.MetricsGlobalRegistry;
import org.apache.dubbo.rpc.model.ApplicationModel;

import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.observation.ObservationRegistry;

public class ObservationMeter {

public static void addMeterRegistry(ObservationRegistry registry, ApplicationModel applicationModel) {
MeterRegistry meterRegistry = MetricsGlobalRegistry.getCompositeRegistry(applicationModel);
registry.observationConfig()
.observationHandler(
new io.micrometer.core.instrument.observation.DefaultMeterObservationHandler(meterRegistry));
}
}
6 changes: 6 additions & 0 deletions dubbo-remoting/dubbo-remoting-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,11 @@
<artifactId>log4j-slf4j-impl</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-test-check</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
6 changes: 6 additions & 0 deletions dubbo-remoting/dubbo-remoting-http12/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,11 @@
<artifactId>log4j-slf4j-impl</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-test-check</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
6 changes: 6 additions & 0 deletions dubbo-remoting/dubbo-remoting-http3/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,11 @@
<artifactId>log4j-slf4j-impl</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-test-check</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
6 changes: 6 additions & 0 deletions dubbo-remoting/dubbo-remoting-netty/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,11 @@
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-test-check</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
6 changes: 6 additions & 0 deletions dubbo-remoting/dubbo-remoting-netty4/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,12 @@
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-test-check</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
Expand Down
6 changes: 6 additions & 0 deletions dubbo-remoting/dubbo-remoting-websocket/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,11 @@
<artifactId>dubbo-remoting-http12</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-test-check</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
7 changes: 0 additions & 7 deletions dubbo-remoting/dubbo-remoting-zookeeper-curator5/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,6 @@
<version>${project.parent.version}</version>
</dependency>

<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-test-common</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,32 @@

import org.apache.dubbo.common.URL;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.MockedConstruction;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsNot.not;
import static org.hamcrest.core.IsNull.nullValue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockConstructionWithAnswer;

class Curator5ZookeeperClientManagerTest {
private ZookeeperClient zookeeperClient;
private ZookeeperClientManager zookeeperClientManager;
private static MockedConstruction<Curator5ZookeeperClient> mockedCurator5ZookeeperClientConstruction;
private static String zookeeperConnectionAddress1;

@BeforeAll
public static void beforeAll() {
zookeeperConnectionAddress1 = System.getProperty("zookeeper.connection.address.1");
Curator5ZookeeperClient mockCurator5ZookeeperClient = mock(Curator5ZookeeperClient.class);
mockedCurator5ZookeeperClientConstruction =
mockConstructionWithAnswer(Curator5ZookeeperClient.class, invocationOnMock -> invocationOnMock
.getMethod()
.invoke(mockCurator5ZookeeperClient, invocationOnMock.getArguments()));
}

@BeforeEach
Expand All @@ -47,4 +57,9 @@ void testZookeeperClient() {
assertThat(zookeeperClient, not(nullValue()));
zookeeperClient.close();
}

@AfterAll
public static void afterAll() {
mockedCurator5ZookeeperClientConstruction.close();
}
}
Loading

0 comments on commit 80a8dd6

Please sign in to comment.