Skip to content

Commit fae1dd2

Browse files
committed
Upgrade async-profiler to v4
1 parent 0ba0659 commit fae1dd2

File tree

11 files changed

+36
-4
lines changed

11 files changed

+36
-4
lines changed

spark-common/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ license {
1212

1313
dependencies {
1414
api project(':spark-api')
15-
implementation 'tools.profiler:async-profiler:3.0' // spark native version: 3cf733d
15+
implementation 'tools.profiler:async-profiler:4.0' // spark native version: 87b7b42 (v4.0)
1616
implementation 'org.ow2.asm:asm:9.7'
1717
implementation 'net.bytebuddy:byte-buddy-agent:1.14.17'
1818
implementation 'com.google.protobuf:protobuf-javalite:4.28.2'

spark-common/src/main/java/me/lucko/spark/common/sampler/AbstractSampler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,11 @@ protected void writeMetadataToProto(SamplerData.Builder proto, SparkPlatform pla
193193
metadata.setComment(comment);
194194
}
195195

196+
String libraryVersion = getLibraryVersion();
197+
if (libraryVersion != null) {
198+
metadata.setSamplerEngineVersion(libraryVersion);
199+
}
200+
196201
int totalTicks = this.windowStatisticsCollector.getTotalTicks();
197202
if (totalTicks != -1) {
198203
metadata.setNumberOfTicks(totalTicks);

spark-common/src/main/java/me/lucko/spark/common/sampler/Sampler.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ public interface Sampler {
9191
*/
9292
SamplerType getType();
9393

94+
/**
95+
* Gets the version of the sampler.
96+
*
97+
* @return the library version if known, else null
98+
*/
99+
String getLibraryVersion();
100+
94101
/**
95102
* Gets the sampler mode.
96103
*

spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,14 @@
2727
import one.profiler.AsyncProfiler;
2828
import one.profiler.Events;
2929

30-
import java.io.BufferedReader;
3130
import java.io.InputStream;
32-
import java.io.InputStreamReader;
3331
import java.io.OutputStream;
3432
import java.net.URL;
3533
import java.nio.file.Files;
3634
import java.nio.file.Path;
3735
import java.util.Locale;
3836
import java.util.Objects;
3937
import java.util.logging.Level;
40-
import java.util.stream.Collectors;
4138

4239
/**
4340
* Provides a bridge between spark and async-profiler.
@@ -138,6 +135,10 @@ public boolean checkAllocationProfilingSupported(SparkPlatform platform) {
138135
return supported;
139136
}
140137

138+
public String getVersion() {
139+
return this.profiler.getVersion();
140+
}
141+
141142
private static AsyncProfiler load(SparkPlatform platform) throws Exception {
142143
// check compatibility
143144
String os = System.getProperty("os.name").toLowerCase(Locale.ROOT).replace(" ", "");

spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncSampler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,11 @@ public SamplerType getType() {
234234
return SamplerType.ASYNC;
235235
}
236236

237+
@Override
238+
public String getLibraryVersion() {
239+
return this.profilerAccess.getVersion();
240+
}
241+
237242
@Override
238243
public SamplerMode getMode() {
239244
return this.sampleCollector.getMode();

spark-common/src/main/java/me/lucko/spark/common/sampler/java/JavaSampler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ public SamplerType getType() {
208208
return SamplerType.JAVA;
209209
}
210210

211+
@Override
212+
public String getLibraryVersion() {
213+
return null;
214+
}
215+
211216
@Override
212217
public SamplerMode getMode() {
213218
return SamplerMode.EXECUTION;

spark-common/src/main/proto/spark/spark_sampler.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ message SamplerMetadata {
3535
map<string, string> extra_platform_metadata = 14;
3636
SamplerMode sampler_mode = 15;
3737
SamplerEngine sampler_engine = 16;
38+
string sampler_engine_version = 17;
3839

3940
message ThreadDumper {
4041
Type type = 1;
Binary file not shown.
Binary file not shown.
Binary file not shown.

spark-common/src/test/java/me/lucko/spark/common/sampler/SamplerTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
4040
import static org.junit.jupiter.api.Assertions.assertNotEquals;
4141
import static org.junit.jupiter.api.Assertions.assertNotNull;
42+
import static org.junit.jupiter.api.Assertions.assertNull;
4243
import static org.junit.jupiter.api.Assertions.assertTrue;
4344
import static org.junit.jupiter.api.Assumptions.assumeTrue;
4445

@@ -64,6 +65,13 @@ public void testSampler(SamplerType samplerType, @TempDir Path directory) {
6465
.completeAfter(2, TimeUnit.SECONDS)
6566
.start(plugin.platform());
6667

68+
String libraryVersion = sampler.getLibraryVersion();
69+
if (samplerType == SamplerType.ASYNC) {
70+
assertNotNull(libraryVersion);
71+
} else {
72+
assertNull(libraryVersion);
73+
}
74+
6775
assertInstanceOf(samplerType.implClass(), sampler);
6876
assertEquals(samplerType, sampler.getType());
6977

0 commit comments

Comments
 (0)