8000 [#2957] Use preload to avoid deadlocks. · coder-java-caicai/pinpoint@a4df90a · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit a4df90a

Browse files
committed
[pinpoint-apm#2957] Use preload to avoid deadlocks.
(cherry picked from commit f96ba8f)
1 parent 37959ac commit a4df90a

File tree

8 files changed

+17
-9
lines changed

8 files changed

+17
-9
lines changed

collector/src/main/java/com/navercorp/pinpoint/collector/receiver/udp/UDPReceiver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.navercorp.pinpoint.collector.util.PooledObject;
2828
import com.navercorp.pinpoint.common.util.ExecutorFactory;
2929
import com.navercorp.pinpoint.common.util.PinpointThreadFactory;
30-
import com.navercorp.pinpoint.rpc.util.CpuUtils;
30+
import com.navercorp.pinpoint.common.util.CpuUtils;
3131
import org.slf4j.Logger;
3232
import org.slf4j.LoggerFactory;
3333
import org.springframework.beans.factory.annotation.Autowired;

collector/src/test/java/com/navercorp/pinpoint/collector/receiver/udp/TestUDPReceiver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.navercorp.pinpoint.collector.util.PooledObject;
2525
import com.navercorp.pinpoint.common.util.ExecutorFactory;
2626
import com.navercorp.pinpoint.common.util.PinpointThreadFactory;
27-
import com.navercorp.pinpoint.rpc.util.CpuUtils;
27+
import com.navercorp.pinpoint.common.util.CpuUtils;
2828
import org.slf4j.Logger;
2929
import org.slf4j.LoggerFactory;
3030
import org.springframework.util.Assert;

rpc/src/main/java/com/navercorp/pinpoint/rpc/util/CpuUtils.java renamed to commons/src/main/java/com/navercorp/pinpoint/common/util/CpuUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.navercorp.pinpoint.rpc.util;
17+
package com.navercorp.pinpoint.common.util;
1818

1919
/**
2020
* @author emeroad

profiler-optional/profiler-optional-jdk6/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/cpu/ibm/Java6CpuLoadMetric.java

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

1919
import com.codahale.metrics.Gauge;
2020
import com.ibm.lang.management.OperatingSystemMXBean;
21+
import com.navercorp.pinpoint.common.util.CpuUtils;
2122
import com.navercorp.pinpoint.profiler.monitor.metric.cpu.CpuLoadMetric;
2223

2324
import java.lang.management.ManagementFactory;
@@ -28,6 +29,8 @@
2829
*/
2930
public class Java6CpuLoadMetric implements CpuLoadMetric {
3031

32+
private static final int CPU_COUNT = CpuUtils.cpuCount();
33+
3134
private static final int UNSUPPORTED = -1;
3235
private static final int UNINITIALIZED = -1;
3336

@@ -79,8 +82,7 @@ public Double getValue() {
7982

8083
final long totalCpuTimeNS = cpuTimeNS - lastCpuTimeNS;
8184
final long diffUpTimeMS = upTimeMS - lastUpTimeMS;
82-
final int numProcessors = Runtime.getRuntime().availableProcessors();
83-
final long totalUpTimeNS = (diffUpTimeMS * 1000000) * numProcessors;
85+
final long totalUpTimeNS = (diffUpTimeMS * 1000000) * CPU_COUNT;
8486

8587
final double cpuLoad = totalUpTimeNS > 0 ?
8688
Math.min(100F, totalCpuTimeNS / (float)totalUpTimeNS) : UNSUPPORTED;

profiler-optional/profiler-optional-jdk6/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/cpu/oracle/Java6CpuLoadMetric.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.navercorp.pinpoint.profiler.monitor.metric.cpu.oracle;
1818

1919
import com.codahale.metrics.Gauge;
20+
import com.navercorp.pinpoint.common.util.CpuUtils;
2021
import com.navercorp.pinpoint.profiler.monitor.metric.cpu.CpuLoadMetric;
2122
import com.sun.management.OperatingSystemMXBean;
2223

@@ -28,6 +29,8 @@
2829
*/
2930
public class Java6CpuLoadMetric implements CpuLoadMetric {
3031

32+
private static final int CPU_COUNT = CpuUtils.cpuCount();
33+
3134
private static final int UNSUPPORTED = -1;
3235
private static final int UNINITIALIZED = -1;
3336

@@ -79,8 +82,7 @@ public Double getValue() {
7982

8083
final long totalCpuTimeNS = cpuTimeNS - lastCpuTimeNS;
8184
final long diffUpTimeMS = upTimeMS - lastUpTimeMS;
82-
final int numProcessors = Runtime.getRuntime().availableProcessors();
83-
final long totalUpTimeNS = (diffUpTimeMS * 1000000) * numProcessors;
85+
final long totalUpTimeNS = (diffUpTimeMS * 1000000) * CPU_COUNT;
8486

8587
final double cpuLoad = totalUpTimeNS > 0 ?
8688
Math.min(100F, totalCpuTimeNS / (float)totalUpTimeNS) : UNSUPPORTED;

profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/DefaultAgentStatMonitor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ public DefaultAgentStatMonitor(DataSender dataSender,
8585
private void preLoadClass(String agentId, long agentStartTimestamp, AgentStatMetricCollector<TAgentStat> agentStatCollector) {
8686
logger.debug("pre-load class start");
8787
CollectJob collectJob = new CollectJob(EmptyDataSender.INSTANCE, agentId, agentStartTimestamp, agentStatCollector, 1);
88+
89+
// It is called twice to initialize some fields.
90+
collectJob.run();
8891
collectJob.run();
8992
logger.debug("pre-load class end");
9093
}

rpc/src/main/java/com/navercorp/pinpoint/rpc/server/PinpointServerAcceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.navercorp.pinpoint.rpc.stream.DisabledServerStreamChannelMessageListener;
2828
import com.navercorp.pinpoint.rpc.stream.ServerStreamChannelMessageListener;
2929
import com.navercorp.pinpoint.rpc.util.AssertUtils;
30-
import com.navercorp.pinpoint.rpc.util.CpuUtils;
30+
import com.navercorp.pinpoint.common.util.CpuUtils;
3131
import com.navercorp.pinpoint.rpc.util.LoggerFactorySetup;
3232
import com.navercorp.pinpoint.rpc.util.TimerFactory;
3333
import org.jboss.netty.bootstrap.ServerBootstrap;

web/src/main/java/com/navercorp/pinpoint/web/websocket/ActiveThreadCountHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.navercorp.pinpoint.web.websocket;
1818

19+
import com.navercorp.pinpoint.common.util.CpuUtils;
1920
import com.navercorp.pinpoint.common.util.PinpointThreadFactory;
2021
import com.navercorp.pinpoint.rpc.util.ClassUtils;
2122
import com.navercorp.pinpoint.rpc.util.MapUtils;
@@ -104,7 +105,7 @@ public ActiveThreadCountHandler(String requestMapping, AgentService agentService
104105
@Override
105106
public void start() {
106107
PinpointThreadFactory flushThreadFactory = new PinpointThreadFactory(ClassUtils.simpleClassName(this) + "-Flush-Thread", true);
107-
webSocketFlushExecutor = new SimpleOrderedThreadPool(Runtime.getRuntime().availableProcessors(), 65535, flushThreadFactory);
108+
webSocketFlushExecutor = new SimpleOrderedThreadPool(CpuUtils.cpuCount(), 65535, flushThreadFactory);
108109

109110
flushTimer = new java.util.Timer(ClassUtils.simpleClassName(this) + "-Flush-Timer", true);
110111
healthCheckTimer = new java.util.Timer(ClassUtils.simpleClassName(this) + "-HealthCheck-Timer", true);

0 commit comments

Comments
 (0)
0