RFR: 6988: Initial implementation of JFR binary format writer

Marcus Hirt hirt at openjdk.java.net
Tue Dec 1 17:24:05 UTC 2020


On Fri, 19 Jun 2020 10:22:41 GMT, Jaroslav Bachorik <jbachorik at openjdk.org> wrote:

> This is an initial implementation of JFR binary format writer in Java.
> The writer can write valid JFR files according to what is expected by the JMC JFR format reader.
> The writer is not complete in terms of performance and event settings support but in spite of that it is fairly usable.
> 
> The typical flow is:
> 
> 1. Obtain a new instance of Recording
>  java
> Recording r = new Recording()
> 2. Register custom types for that recording
>  java
> r.registerType(name, structure)
> 3. Get a new Chunk instance
>  java
> Chunk c = r.newChunk()
> 4. Write event values
>  java
> c.writeEvent(eventValue)
> 5. Finish the chunk and get the binary data
>  java
> byte[] data = c.finish()
> 
> 
> For more complex usage check [ChunkComplexTest.java](https://github.com/openjdk/jmc/blob/4c2dd1407f462feae40b795d3a4c6d75544b4e82/core/org.openjdk.jmc.flightrecorder.writer/src/test/java/org/openjdk/jmc/flightrecorder/writer/ChunkComplexTest.java).

Changes requested by hirt (Lead).

core/org.openjdk.jmc.common/pom.xml line 53:

> 51: 			<version>1.7.1</version>
> 52: 		</dependency>
> 53: 		<dependency>

Since this is in a new bundle now, common doesn't need lombok. :)

core/org.openjdk.jmc.flightrecorder.writer/build.properties line 2:

> 1: #
> 2: #  Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.

Wrong year, also add Datadog.

core/org.openjdk.jmc.flightrecorder.writer/pom.xml line 3:

> 1: <?xml version="1.0" encoding="UTF-8"?>
> 2: <!--
> 3:    Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.

Wrong year, also add Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/AbstractLEB128Writer.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/BaseType.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/BuiltinType.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/Chunk.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/CompositeTypeImpl.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/ConstantPool.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/ConstantPools.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/ImmutableMapEntry.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/LEB128ByteArrayWriter.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/MetadataImpl.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Copyright notice 2020 Oracle + Datadog.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/AbstractLEB128Writer.java line 1:

> 1: package org.openjdk.jmc.flightrecorder.writer;

Ok. I'll stop adding notices for copyright now. :) All the files need them.

core/org.openjdk.jmc.flightrecorder/pom.xml line 53:

> 51: 			<version>${project.version}</version>
> 52: 		</dependency>
> 53: 		<dependency>

Do you need changes to flightrecorder now that writer is its own bundle?

-------------

PR: https://git.openjdk.java.net/jmc/pull/84


More information about the jmc-dev mailing list