Skip to content

Commit

Permalink
PreUnified now works with DateStamps only (#347)
Browse files Browse the repository at this point in the history
* bug: intermediate commit to allow work on another bug

* bug: add more robust handling of IllegalArgumentException in GCToolKit::analyize

* tidy: remove debug to stdout to logging framework

* refactor: Ensure DateTimeStamp cannot be malformed and it behaves if the timestamp is missing

* refactor: update pom for new GC log test data bundle

* tidy: address comments from PR

* Update parser/src/main/java/com/microsoft/gctoolkit/parser/GCLogParser.java

* feature: first push to combine CMS parser with GenerationalHeapParser

* depreciate: depreciated the CMS preunified event source

* refactor: get all tests to pass

* refactor: continue to get tests to pass

* refactor: continue to get tests to pass

* refactor: collapse CMS phases parser into generational parser

* refactor: GenerationalHeapParser was duplicating CMF failures under certain conditions

* refactor: ensure GC log is closed when discovering the format

* refactor: add test for reported bug

* refactor: add ability to parse very simple logs preunified logs

* refactor: remove no longer needed print statement

* refactor: tidy from review

* refactor: support date stamps only for preunified logs

* refactor: bump version of gctoolkit testdata to support new tests

* refactor: small code cleanups

* Update parser/src/main/java/com/microsoft/gctoolkit/parser/AbstractLogTrace.java

Co-authored-by: Martijn Verburg <[email protected]>

* tidy: cleanup from review and added more tests

---------

Co-authored-by: Martijn Verburg <[email protected]>
  • Loading branch information
kcpeppe and karianna committed Apr 19, 2024
1 parent 0dc33b9 commit 64dd6dd
Show file tree
Hide file tree
Showing 24 changed files with 637 additions and 559 deletions.
2 changes: 1 addition & 1 deletion gclogs/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<packaging>pom</packaging>

<properties>
<gctoolkit-testdata-version>1.0.8</gctoolkit-testdata-version>
<gctoolkit-testdata-version>1.0.9</gctoolkit-testdata-version>
</properties>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,12 @@ public double getTimeStamp() {
if (!matcher.find()) {
return MISSING_TIMESTAMP_SENTINEL;
}
return getDoubleGroup(2);
return convertToDouble(matcher.group(1));
}

public String getDateStamp() {
Matcher matcher = DATE_TIME_STAMP_RULE.matcher(trace.group(0));
if (matcher.find()) {
return matcher.group(1);
if (trace.find()) {
return trace.group(4);
} else {
return null;
}
Expand All @@ -96,16 +95,21 @@ public DateTimeStamp getDateTimeStamp() {
* @return the nth date timestamp pairing
*/
public DateTimeStamp getDateTimeStamp(int nth) {
Matcher matcher = DATE_TIME_STAMP_RULE.matcher(trace.group(0));
for (int i = 0; i < nth - 1; i++)
if (!matcher.find())
break;
if (matcher.find()) {
if (matcher.group(2) == null) {
return new DateTimeStamp(matcher.group(1));
}
return new DateTimeStamp(matcher.group(1), convertToDouble(matcher.group(2)));
}
Matcher matcher;
if ( nth > 1) {
matcher = DATE_TIME_STAMP_RULE.matcher(trace.group(0));
for (int i = 0; i < nth; i++)
if (!matcher.find())
break;
} else
matcher = trace;

String timeStamp = ( matcher.group(3) == null) ? matcher.group(4) : matcher.group(3);
String dateStamp = ( matcher.group(2) == null) ? matcher.group(5) : matcher.group(2);
if (timeStamp != null) {
return new DateTimeStamp(dateStamp, convertToDouble(timeStamp));
} else if ( dateStamp != null)
return new DateTimeStamp(dateStamp);
return new DateTimeStamp(MISSING_TIMESTAMP_SENTINEL);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public interface CMSPatterns extends SharedPatterns {
/********** CMS Phase records **********/
//3.307: [GC [1 CMS-initial-mark: 0K(18874368K)] 302009K(20761856K), 0.0994470 secs] [Times: user=0.20 sys=0.00, real=0.10 secs]
//12.986: [GC[1 CMS-initial-mark: 33532K(62656K)] 49652K(81280K), 0.0014191 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
//40.971: [GC (CMS Initial Mark) [1 CMS-initial-mark: 2692K(5376K)] 38078K(354944K), 0.0147940 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]
GCParseRule INITIAL_MARK = new GCParseRule("INITIAL_MARK", GC_PREFIX + "\\[1 CMS-initial-mark: " + OCCUPANCY_CONFIGURED + "\\] " + OCCUPANCY_CONFIGURED_PAUSE + "\\]");
GCParseRule CONCURRENT_PHASE_START = new GCParseRule("CONCURRENT_PHASE_START", "^" + CMS_PHASE_START);

Expand Down Expand Up @@ -258,6 +259,7 @@ public interface CMSPatterns extends SharedPatterns {

// 2015-02-04T17:36:07.103-0500: 199626.435: [GC 199626.435: [ParNew: 812672K->812672K(914240K), 0.0000400 secs]199626.435: [CMS (concurrent mode failure): 1071394K->1081343K(1081344K), 6.8504740 secs] 1884066K->1092775K(1995584K), [CMS Perm : 99417K->99411K(524288K)], 6.8510440 secs] [Times: user=6.63 sys=0.02, real=6.85 secs]
// 199626.435: [GC 199626.435: [ParNew: 812672K->812672K(914240K), 0.0000400 secs]199626.435: [CMS (concurrent mode failure): 1071394K->1081343K(1081344K), 6.8504740 secs] 1884066K->1092775K(1995584K), [CMS Perm : 99417K->99411K(524288K)], 6.8510440 secs] [Times: user=6.63 sys=0.02, real=6.85 secs]
// 199626.435: [GC 199626.435: [ParNew: 812672K->812672K(914240K), 0.0000400 secs]199626.435: [CMS (concurrent mode failure): 1071394K->1081343K(1081344K), 6.8504740 secs] 1884066K->1092775K(1995584K), [Metaspace: 99417K->99411K(524288K)], 6.8510440 secs] [Times: user=6.63 sys=0.02, real=6.85 secs]
GCParseRule PARNEW_CONCURRENT_MODE_FAILURE_PERM = new GCParseRule("PARNEW_CONCURRENT_MODE_FAILURE_PERM", GC_PREFIX + PARNEW_BLOCK + TIMESTAMP + "\\[CMS \\(concurrent mode failure\\): " + BEFORE_AFTER_CONFIGURED_PAUSE + "\\] " + BEFORE_AFTER_CONFIGURED + ", " + PERM_RECORD + ", " + PAUSE_TIME + "\\]");
GCParseRule PARNEW_CONCURRENT_MODE_FAILURE_META = new GCParseRule("PARNEW_CONCURRENT_MODE_FAILURE_META", GC_PREFIX + PARNEW_PROMOTION_FAILED_BLOCK + TIMESTAMP + "\\[CMS: " + BEFORE_AFTER_CONFIGURED_PAUSE + "\\] " + BEFORE_AFTER_CONFIGURED + ", " + META_RECORD + ", " + PAUSE_TIME + "\\]");
//4.327: [FUll GC 4.328: [ParNew: 196768K->180907K(471872K), 0.1321291 secs]4.460: [CMS (concurrent mode failure): 473195K->376198K(1048576K), 5.1817732 secs] 668966K->376198K(1520448K), [CMS Perm : 13108K->27169K(13172K)], 5.3146647 secs]
Expand Down Expand Up @@ -309,7 +311,7 @@ public interface CMSPatterns extends SharedPatterns {
GCParseRule RESCAN_CARDS_DETAILS = new GCParseRule("RESCAN_CARDS_DETAILS", "^, " + PAUSE_TIME + "\\]" + WEAK_REF_BLOCK + " " + REMARK_BLOCK);

//, 0.2020511 secs]34.132: [weak refs processing, 0.0000108 secs]34.132: [class unloading, 0.0026382 secs]34.135: [scrub symbol & string tables, 0.0026847 secs] [1 CMS-remark: 0K(4194304K)] 889188K(5872064K), 0.2081265 secs]
GCParseRule RESCAN_SPLIT_UNLOADING_STRING = new GCParseRule("RESCAN_SPLIT_UNLOADING_STRING", "^, " + TIMESTAMP + "\\]" + WEAK_REF_BLOCK + CLASS_UNLOADING_BLOCK + STRING_AND_SYMBOL_SCRUB_BLOCK + " " + REMARK_BLOCK);
GCParseRule RESCAN_SPLIT_UNLOADING_STRING = new GCParseRule("RESCAN_SPLIT_UNLOADING_STRING", "^, " + PAUSE_TIME + "\\]" + WEAK_REF_BLOCK + CLASS_UNLOADING_BLOCK + STRING_AND_SYMBOL_SCRUB_BLOCK + " " + REMARK_BLOCK);

//, 1.2157670 secs]42102.265: [weak refs processing, 0.1038920 secs]Work queue overflow (benign) (pmc_rm=1542597, kac=0)
GCParseRule RESCAN_OVERFLOW_DETAILS = new GCParseRule("RESCAN_OVERFLOW_DETAILS", "^, " + PAUSE_TIME + "\\]" + WEAK_REF_BLOCK + "Work queue overflow");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.util.Set;
import java.util.logging.Logger;

@Deprecated
public class CMSTenuredPoolParser extends PreUnifiedGCLogParser implements SimplePatterns, ICMSPatterns {

private static final Logger LOG = Logger.getLogger(CMSTenuredPoolParser.class.getName());
Expand Down Expand Up @@ -73,8 +74,8 @@ else if ((trace = EndOfFile.parse(line)) != null) {
*/
private void initialMark(GCLogTrace trace) {
InitialMark initialMark = new InitialMark(trace.getDateTimeStamp(), GCCause.UNKNOWN_GCCAUSE, trace.getDoubleGroup(trace.groupCount()));
MemoryPoolSummary tenured = trace.getOccupancyWithMemoryPoolSizeSummary(4);
MemoryPoolSummary heap = trace.getOccupancyWithMemoryPoolSizeSummary(8);
MemoryPoolSummary tenured = trace.getOccupancyWithMemoryPoolSizeSummary(7);
MemoryPoolSummary heap = trace.getOccupancyWithMemoryPoolSizeSummary(11);
initialMark.add(heap.minus(tenured), tenured, heap);
publish(initialMark);
}
Expand All @@ -98,9 +99,9 @@ private void endConcurrentPrecleanWithReferenceProcessing(GCLogTrace trace) {
}

private void endOfConcurrentPhase(GCLogTrace trace, DateTimeStamp timeStamp) {
String phase = trace.getGroup(3);
double cpuTime = trace.getDoubleGroup(4);
double wallTime = trace.getDoubleGroup(5);
String phase = trace.getGroup(6);
double cpuTime = trace.getDoubleGroup(7);
double wallTime = trace.getDoubleGroup(8);
double duration = timeStamp.getTimeStamp() - startOfPhase.getTimeStamp();
if ("mark".equals(phase))
publish(new ConcurrentMark(startOfPhase, duration, cpuTime, wallTime));
Expand All @@ -118,8 +119,8 @@ else if ("reset".equals(phase))

private void abortPrecleanDueToTime(GCLogTrace trace) {
try {
double cpuTime = trace.getDoubleGroup(4);
double wallClock = trace.getDoubleGroup(5);
double cpuTime = trace.getDoubleGroup(7);
double wallClock = trace.getDoubleGroup(8);
publish(new AbortablePreClean(startOfPhase, trace.getDateTimeStamp().getTimeStamp() - startOfPhase.getTimeStamp(), cpuTime, wallClock, true));
} catch (Exception e) {
LOG.warning("concurrent phase end choked on " + trace);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,15 +222,16 @@ public interface G1GCPatterns extends G1GCTokens {
//Concurrent phase

//549.246: [GC concurrent-root-region-scan-start]
//657.426: [GC concurrent-root-region-scan-end, 0.0052220 secs]
//549.246: [GC concurrent-mark-start]
GCParseRule G1_CONCURRENT_START = new GCParseRule("G1_CONCURRENT_START", "^" + GC_PREFIX + "concurrent-(.+)-start\\]");
GCParseRule G1_CONCURRENT_START_WITHOUT_PREFIX = new GCParseRule("G1_CONCURRENT_START_WITHOUT_PREFIX", "^" + "concurrent-(.+)-start\\]");
GCParseRule G1_CONCURRENT_START = new GCParseRule("G1_CONCURRENT_START", "^" + GC_PREFIX + "concurrent-(.+)-start\\]$");
GCParseRule G1_CONCURRENT_START_WITHOUT_PREFIX = new GCParseRule("G1_CONCURRENT_START_WITHOUT_PREFIX", "^" + "concurrent-(.+)-start\\]$");

//549.246: [GC concurrent-root-region-scan-end, 0.0000700 secs]
//549.251: [GC concurrent-mark-end, 0.0055240 secs]
GCParseRule G1_CONCURRENT_END = new GCParseRule("G1_CONCURRENT_END", "^" + GC_PREFIX + "concurrent-(.+)-end, " + PAUSE_TIME);
GCParseRule G1_CORRUPTED_CONCURRENT_END = new GCParseRule("G1_CORRUPTED_CONCURRENT_END", "^\\[GC concurrent-(.+)-end, " + PAUSE_TIME);
GCParseRule G1_CORRUPTED_CONCURRENT_ROOT_REGION_SCAN_END = new GCParseRule("G1_CORRUPTED_CONCURRENT_ROOT_REGION_SCAN_END", DATE_TIMESTAMP + DATE_STAMP + "\\[GC concurrent-(.+)-end, " + PAUSE_TIME);
GCParseRule G1_CORRUPTED_CONCURRENT_ROOT_REGION_SCAN_END = new GCParseRule("G1_CORRUPTED_CONCURRENT_ROOT_REGION_SCAN_END", "^" + DATE_TIMESTAMP + GC_PREFIX + "concurrent-(.+)-end, " + PAUSE_TIME);
GCParseRule G1_FLOATING_CONCURRENT_PHASE_START = new GCParseRule("G1_FLOATING_CONCURRENT_PHASE_START", "^\\[GC concurrent(.+)\\]$");
GCParseRule G1_FULL_INTERRUPTS_CONCURRENT_CYCLE = new GCParseRule("G1_FULL_INTERRUPTS_CONCURRENT_CYCLE", FULL_GC_PREFIX + GC_PREFIX + " concurrent-(.+)-end, " + PAUSE_TIME);
//Strange Full GC corruption
Expand Down Expand Up @@ -263,8 +264,6 @@ public interface G1GCPatterns extends G1GCTokens {
GCParseRule CORRUPTED_CONCURRENT_START_V4 = new GCParseRule("CORRUPTED_CONCURRENT_START_V4", DATE_TIMESTAMP + DATE_STAMP + "\\[Full GC " + GC_CAUSE + GC_PREFIX + "concurrent-(.+)-start\\]");
//2018-02-08T20:21:26.246+0000: 2018-02-08T20:21:26.246+0000879136.850: [Full GC (Metadata GC Threshold) : 879136.850: [GC concurrent-root-region-scan-start]
GCParseRule CORRUPTED_CONCURRENT_START_V5 = new GCParseRule("CORRUPTED_CONCURRENT_START_V5", DATE_STAMP + DATE + FULL_GC_PREFIX + ": " + GC_PREFIX + "concurrent-(.+)-start\\]");
//2018-02-08T20:27:32.297+0000: 879502.901: 2018-02-08T20:27:32.297+0000: 879502.901: [GC concurrent-root-region-scan-end, 0.0000375 secs]
GCParseRule CORRUPTED_CONCURRENT_START_V6 = new GCParseRule("CORRUPTED_CONCURRENT_START_V6", DATE_TIMESTAMP + GC_PREFIX + "concurrent-(.+)-end, " + PAUSE_TIME);
//2018-02-08T20:31:33.633+0000: 2018-02-08T20:31:33.633+0000: 879744.238879744.238: [Full GC (Metadata GC Threshold) : [GC concurrent-root-region-scan-start]
GCParseRule CORRUPTED_CONCURRENT_START_V7 = new GCParseRule("CORRUPTED_CONCURRENT_START_V7", DATE_STAMP + DATE_STAMP + INTEGER + DECIMAL_POINT + "\\d{3}" + TIMESTAMP + "\\[Full GC " + GC_CAUSE + ": \\[GC concurrent-(.+)-start\\]");
//2018-02-08T20:31:54.234+0000: 2018-02-08T20:31:54.234+0000879764.839: 879764.839: [Full GC (Metadata GC Threshold) : [GC concurrent-root-region-scan-start]
Expand Down Expand Up @@ -312,7 +311,7 @@ public interface G1GCPatterns extends G1GCTokens {
//tag secs may or may not be there so lets not be greedy.
GCParseRule YOUNG_WITH_CONCURRENT_END = new GCParseRule("YOUNG_WITH_CONCURRENT_END", G1GC_PREFIX + "\\((young|mixed)\\)" + GC_PREFIX + "concurrent-(.+)-end, " + "(-?" + REAL_NUMBER + ")");
//100081.540: [Full GC100081.540: [GC concurrent-root-region-scan-start]
GCParseRule FULLGC_WITH_CONCURRENT_PHASE = new GCParseRule("FULLGC_WITH_CONCURRENT_PHASE", FULL_GC_PREFIX + GC_PREFIX + "concurrent-(.+)-start\\]");
GCParseRule FULLGC_WITH_CONCURRENT_PHASE = new GCParseRule("FULLGC_WITH_CONCURRENT_PHASE", "^" + FULL_GC_PREFIX + GC_PREFIX + "concurrent-(.+)-start\\]");

//28983.087: [GC pause (young)28984.641: [SoftReference, 0 refs, 0.0000060 secs]28984.641: [WeakReference, 651 refs, 0.0001330 secs]28984.641: [FinalReference, 4358 refs, 0.0198770 secs]28984.661: [PhantomReference, 20 refs, 0.0000100 secs]28984.661: [JNI Weak Reference, 0.0002120 secs]2014-10-21T16:31:20.256-0500: 28984.853: [GC concurrent-mark-end, 0.8720730 sec] (to-space overflow), 1.88262800 secs]
GCParseRule YOUNG_REFERENCE_WITH_CONCURRENT_END = new GCParseRule("YOUNG_REFERENCE_WITH_CONCURRENT_END", G1GC_PREFIX + "\\((young||mixed)\\)( \\(initial-mark\\))?" + REFERENCE_RECORDS + GC_PREFIX + " concurrent-(.+)-end, " + PAUSE_TIME + "\\]");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public interface G1GCTokens extends SharedPatterns {


String G1GC_PREFIX = DATE_TIMESTAMP + "\\[GC pause " + GC_CAUSE;
String G1GC_PREFIX = "^" + DATE_TIMESTAMP + "\\[GC pause " + GC_CAUSE;

String G1_SURVIVOR_FROM_TO = REAL_VALUE + "([B,K,M,G])->" + REAL_VALUE + "([B,K,M,G])";
String G1_OCCUPANCY_CONFIGURED = REAL_VALUE + "([B,K,M,G])\\(" + REAL_VALUE + "([B,K,M,G])\\)";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ else if (now.before(getClock())) {
* not been recorded. In this case, JVMTermination time should advanced
* to after the previous event has ended.
*
* @param channel
* @param event
* @param channel to publish to
* @param event to be published
*/
public void publish(ChannelName channel, JVMEvent event) {
lastDuration = event.getDuration();
Expand All @@ -108,13 +108,11 @@ boolean hasPrintGCDetails() {

// todo: mixes aggregator with parsing. premature optimization...
MemoryPoolSummary getTotalOccupancyBeforeAfterWithTotalHeapPoolSizeSummary(GCLogTrace trace, int offset) {
MemoryPoolSummary summary = trace.getOccupancyBeforeAfterWithMemoryPoolSizeSummary(offset);
return summary;
return trace.getOccupancyBeforeAfterWithMemoryPoolSizeSummary(offset);
}

MemoryPoolSummary getTotalOccupancyWithTotalHeapSizeSummary(GCLogTrace trace, int offset) {
MemoryPoolSummary summary = trace.getOccupancyWithMemoryPoolSizeSummary(offset);
return summary;
return trace.getOccupancyWithMemoryPoolSizeSummary(offset);
}

GCLogTrace extractReferenceBlock(String line, GCParseRule rule) {
Expand All @@ -126,24 +124,24 @@ ReferenceGCSummary extractPrintReferenceGC(String line) {
ReferenceGCSummary summary = new ReferenceGCSummary();
GCLogTrace trace;
if ((trace = extractReferenceBlock(line, SOFT_REFERENCE)) != null)
summary.addSoftReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(3), trace.getDuration());

summary.addSoftReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(6), trace.getDuration());
if ((trace = extractReferenceBlock(line, WEAK_REFERENCE)) != null)
summary.addWeakReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(3), trace.getDuration());
summary.addWeakReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(6), trace.getDuration());

if ((trace = extractReferenceBlock(line, FINAL_REFERENCE)) != null)
summary.addFinalReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(3), trace.getDuration());
summary.addFinalReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(6), trace.getDuration());

if ((trace = extractReferenceBlock(line, PHANTOM_REFERENCE)) != null) {
if (trace.groupNotNull(4))
summary.addPhantomReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(3), trace.getIntegerGroup(4), trace.getDuration());
if (trace.groupNotNull(7)) {
summary.addPhantomReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(6), trace.getIntegerGroup(7), trace.getDuration());
}
else
summary.addPhantomReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(3), trace.getDuration());
summary.addPhantomReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(6), trace.getDuration());
}

if ((trace = extractReferenceBlock(line, JNI_REFERENCE)) != null) {
if (trace.groupNotNull(3))
summary.addJNIWeakReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(3), trace.getDuration());
if (trace.groupNotNull(6))
summary.addJNIWeakReferences(trace.getDateTimeStamp(), trace.getIntegerGroup(6), trace.getDuration());
else
summary.addJNIWeakReferences(trace.getDateTimeStamp(), trace.getDuration());
}
Expand All @@ -164,21 +162,21 @@ MemoryPoolSummary extractPermOrMetaspaceRecord(String line) {
GCLogTrace trace;
MemoryPoolSummary metaDataPool = null;
if ((trace = PERM_SPACE_RECORD.parse(line)) != null) {
String type = trace.getGroup(1).trim();
if ("CMS Perm".equals(type))
metaDataPool = extractPermGenRecord(trace);
else if ("PS Perm".equals(type))
metaDataPool = extractPermGenRecord(trace);
else if ("PSPermGen".equals(type))
metaDataPool = extractPermGenRecord(trace);
else if ("Perm".equals(type))
metaDataPool = extractPermGenRecord(trace);
else if ("Metaspace".equals(type)) {
if (trace.getGroup(2) != null) {
metaDataPool = new MetaspaceRecord(trace.toKBytes(2), trace.toKBytes(4), trace.toKBytes(6));
} else {
metaDataPool = new MetaspaceRecord(trace.toKBytes(4), trace.toKBytes(4), trace.toKBytes(6));
}
String recordType = trace.getGroup(1).trim();
switch (recordType) {
case "CMS Perm":
case "PS Perm":
case "PSPermGen":
case "Perm":
metaDataPool = extractPermGenRecord(trace);
break;
case "Metaspace":
if (trace.getGroup(2) != null) {
metaDataPool = new MetaspaceRecord(trace.toKBytes(2), trace.toKBytes(4), trace.toKBytes(6));
} else {
metaDataPool = new MetaspaceRecord(trace.toKBytes(4), trace.toKBytes(4), trace.toKBytes(6));
}
break;
}
} else if ((trace = META_SPACE_RECORD.parse(line)) != null) {
int index = (trace.getGroup(1) == null) ? 1 : 3;
Expand Down
Loading

0 comments on commit 64dd6dd

Please sign in to comment.