From 129f7875e7f79e1229698163cb7d64d30e9abf54 Mon Sep 17 00:00:00 2001 From: Yuto Kawamura Date: Fri, 10 Dec 2021 21:36:04 +0900 Subject: [PATCH] Fix broken microbenchmark of processor module (#140) * Fix broken microbenchmark of processor module * Ensure microbench isn't broken in CI --- .github/workflows/ci.yml | 2 +- build.gradle | 6 +++++ processor/build.gradle | 4 --- .../OutOfOrderCommitControlBenchmark.java | 14 +++++++--- processor/src/test/resources/logback.xml | 26 +++++++++++++++++++ 5 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 processor/src/test/resources/logback.xml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9779dd6..cb6d1445 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,4 +22,4 @@ jobs: - name: Execute test uses: eskatos/gradle-command-action@v1 with: - arguments: build integrationTest + arguments: build jmhJar integrationTest diff --git a/build.gradle b/build.gradle index a1115a31..9edfe2cc 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { + id "me.champeau.jmh" version "0.6.6" apply false id 'com.github.johnrengelman.shadow' version '7.1.0' apply false id 'io.franzbecker.gradle-lombok' version '5.0.0' apply false } @@ -13,6 +14,11 @@ subprojects { apply plugin: 'java-test-fixtures' apply plugin: 'maven-publish' apply plugin: 'signing' + // !!!Do not reverse order of these two plugins (jmh and shadow) loading!!! + // jmh plugin changes its behavior by whether the shadow plugin is loaded or not, and with shadow plugin + // it does not work well by failing to generate an jmh JAR to be executed. + // https://github.com/melix/jmh-gradle-plugin/blob/c17c89c8fed6d655678aac16ecd5b683ea7fc8b5/src/main/groovy/me/champeau/jmh/JMHPlugin.groovy#L77 + apply plugin: 'me.champeau.jmh' apply plugin: 'com.github.johnrengelman.shadow' apply plugin: 'io.franzbecker.gradle-lombok' diff --git a/processor/build.gradle b/processor/build.gradle index e063cf20..9bb167d3 100644 --- a/processor/build.gradle +++ b/processor/build.gradle @@ -1,7 +1,3 @@ -plugins { - id "me.champeau.jmh" version "0.6.6" -} - dependencies { api project(":common") api project(":client") diff --git a/processor/src/jmh/java/com/linecorp/decaton/processor/runtime/OutOfOrderCommitControlBenchmark.java b/processor/src/jmh/java/com/linecorp/decaton/processor/runtime/OutOfOrderCommitControlBenchmark.java index 838cdf73..3a8b50f8 100644 --- a/processor/src/jmh/java/com/linecorp/decaton/processor/runtime/OutOfOrderCommitControlBenchmark.java +++ b/processor/src/jmh/java/com/linecorp/decaton/processor/runtime/OutOfOrderCommitControlBenchmark.java @@ -35,6 +35,10 @@ import org.openjdk.jmh.annotations.Warmup; import com.linecorp.decaton.processor.DeferredCompletion; +import com.linecorp.decaton.processor.metrics.Metrics; +import com.linecorp.decaton.processor.metrics.internal.AvailableTags; +import com.linecorp.decaton.processor.runtime.internal.OffsetState; +import com.linecorp.decaton.processor.runtime.internal.OffsetStateReaper; import com.linecorp.decaton.processor.runtime.internal.OutOfOrderCommitControl; /** @@ -169,7 +173,11 @@ public void outOfOrderCommitControlV2(BmStateV2 state) throws InterruptedExcepti public static class BmStateV3 extends BmState { @Override OutOfOrderCommitControl createCommitControl() { - return new OutOfOrderCommitControl(topicPartition, CAPACITY); + OffsetStateReaper reaper = new OffsetStateReaper( + Property.ofStatic(ProcessorProperties.CONFIG_DEFERRED_COMPLETE_TIMEOUT_MS), + Metrics.withTags("subscription", "subsc", "topic", "topic", "partition", "1") + .new CommitControlMetrics()); + return new OutOfOrderCommitControl(topicPartition, CAPACITY, reaper); } } @@ -185,9 +193,9 @@ public void outOfOrderCommitControlV3(BmStateV3 state) throws InterruptedExcepti break; } noProgress = false; - DeferredCompletion completion = control.reportFetchedOffset(offset); + OffsetState offsetState = control.reportFetchedOffset(offset); - state.workers.execute(completion::complete); + state.workers.execute(offsetState.completion()::complete); } if (noProgress) { Thread.yield(); diff --git a/processor/src/test/resources/logback.xml b/processor/src/test/resources/logback.xml new file mode 100644 index 00000000..5e1dfafc --- /dev/null +++ b/processor/src/test/resources/logback.xml @@ -0,0 +1,26 @@ + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + +