This is an automated email from the ASF dual-hosted git repository. reschke pushed a commit to branch OAK-11621 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit e9fec1c505e5736143729ca7c5b2da6e60c1445d Author: Julian Reschke <resc...@apache.org> AuthorDate: Mon Mar 31 13:50:26 2025 +0100 OAK-11621: Reduce usage of Guava Ticker - oak-core --- .../plugins/index/TrackingCorruptIndexHandler.java | 21 ++--- .../oak/plugins/index/FormattingUtilsTest.java | 98 ++++++++++++++-------- .../oak/plugins/index/lucene/VirtualTicker.java | 41 --------- 3 files changed, 70 insertions(+), 90 deletions(-) diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java index 91f2e43c4a..c82fa461f3 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java @@ -168,7 +168,13 @@ public class TrackingCorruptIndexHandler implements CorruptIndexHandler { private final String asyncName; private final String path; private final long lastIndexerCycleCount = indexerCycleCount; - private final Stopwatch watch = Stopwatch.createStarted(new ClockTicker(clock)); + private final Stopwatch watch = Stopwatch.createStarted(new Ticker() { + @Override + public long read() { + return TimeUnit.MILLISECONDS.toNanos(clock.millis()); + } + }); + private String exception = ""; private int failureCount; private int skippedCount; @@ -312,17 +318,4 @@ public class TrackingCorruptIndexHandler implements CorruptIndexHandler { } } } - - private static class ClockTicker extends Ticker { - private final Clock clock; - - public ClockTicker(Clock clock) { - this.clock = clock; - } - - @Override - public long read() { - return TimeUnit.MILLISECONDS.toNanos(clock.getTime()); - } - } } diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java index 74155188d8..e7d4ba0c2e 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java @@ -20,69 +20,97 @@ import org.apache.jackrabbit.guava.common.base.Stopwatch; import org.apache.jackrabbit.guava.common.base.Ticker; import org.junit.Test; +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneId; import java.util.concurrent.TimeUnit; import static org.junit.Assert.assertEquals; - public class FormattingUtilsTest { - private static class TestTicker extends Ticker { + // simple test clock implementation where the time can be set + private static class TestClock extends Clock { + private long time = 0; + @Override - public long read() { + public long millis() { return time; } - public void set(long nanos) { - time = nanos; + + public void set(long millis) { + time = millis; + } + + @Override + public ZoneId getZone() { + throw new UnsupportedOperationException(); + } + + @Override + public java.time.Clock withZone(ZoneId zone) { + throw new UnsupportedOperationException(); + } + + @Override + public Instant instant() { + return Instant.ofEpochSecond(time); } } - private final TestTicker ticker = new TestTicker(); - private final Stopwatch sw = Stopwatch.createStarted(ticker); + + private final TestClock clock = new TestClock(); + + private final Stopwatch sw = Stopwatch.createStarted(new Ticker() { + @Override + public long read() { + return TimeUnit.MILLISECONDS.toNanos(clock.millis()); + } + }); @Test public void formatToSeconds() { testFormatToSeconds("00:00:00", 0); - testFormatToSeconds("00:00:59", TimeUnit.MILLISECONDS.toNanos(59_567)); - testFormatToSeconds("00:01:00", TimeUnit.MILLISECONDS.toNanos(60_567)); - testFormatToSeconds("00:59:00", TimeUnit.MINUTES.toNanos(59)); - testFormatToSeconds("01:00:00", TimeUnit.MINUTES.toNanos(60)); - testFormatToSeconds("23:00:00", TimeUnit.HOURS.toNanos(23)); - testFormatToSeconds("24:00:00", TimeUnit.HOURS.toNanos(24)); - testFormatToSeconds("48:00:00", TimeUnit.HOURS.toNanos(48)); - testFormatToSeconds("23:59:59", TimeUnit.HOURS.toNanos(23) + - TimeUnit.MINUTES.toNanos(59) + - TimeUnit.SECONDS.toNanos(59) + - TimeUnit.MILLISECONDS.toNanos(999) + testFormatToSeconds("00:00:59", TimeUnit.MILLISECONDS.toMillis(59_567)); + testFormatToSeconds("00:01:00", TimeUnit.MILLISECONDS.toMillis(60_567)); + testFormatToSeconds("00:59:00", TimeUnit.MINUTES.toMillis(59)); + testFormatToSeconds("01:00:00", TimeUnit.MINUTES.toMillis(60)); + testFormatToSeconds("23:00:00", TimeUnit.HOURS.toMillis(23)); + testFormatToSeconds("24:00:00", TimeUnit.HOURS.toMillis(24)); + testFormatToSeconds("48:00:00", TimeUnit.HOURS.toMillis(48)); + testFormatToSeconds("23:59:59", TimeUnit.HOURS.toMillis(23) + + TimeUnit.MINUTES.toMillis(59) + + TimeUnit.SECONDS.toMillis(59) + + TimeUnit.MILLISECONDS.toMillis(999) ); - testFormatToSeconds("-00:01:00", -TimeUnit.SECONDS.toNanos(60)); + testFormatToSeconds("-00:01:00", -TimeUnit.SECONDS.toMillis(60)); } - private void testFormatToSeconds(String expected, long nanos) { - ticker.set(nanos); + private void testFormatToSeconds(String expected, long millis) { + clock.set(millis); assertEquals(expected, FormattingUtils.formatToSeconds(sw)); } @Test public void formatToMillis() { testFormatToMillis("00:00:00.000", 0); - testFormatToMillis("00:00:59.567", TimeUnit.MILLISECONDS.toNanos(59_567)); - testFormatToMillis("00:01:00.567", TimeUnit.MILLISECONDS.toNanos(60_567)); - testFormatToMillis("00:59:00.000", TimeUnit.MINUTES.toNanos(59)); - testFormatToMillis("01:00:00.000", TimeUnit.MINUTES.toNanos(60)); - testFormatToMillis("23:00:00.000", TimeUnit.HOURS.toNanos(23)); - testFormatToMillis("24:00:00.000", TimeUnit.HOURS.toNanos(24)); - testFormatToMillis("48:00:00.000", TimeUnit.HOURS.toNanos(48)); - testFormatToMillis("23:59:59.999", TimeUnit.HOURS.toNanos(23) + - TimeUnit.MINUTES.toNanos(59) + - TimeUnit.SECONDS.toNanos(59) + - TimeUnit.MILLISECONDS.toNanos(999) + testFormatToMillis("00:00:59.567", TimeUnit.MILLISECONDS.toMillis(59_567)); + testFormatToMillis("00:01:00.567", TimeUnit.MILLISECONDS.toMillis(60_567)); + testFormatToMillis("00:59:00.000", TimeUnit.MINUTES.toMillis(59)); + testFormatToMillis("01:00:00.000", TimeUnit.MINUTES.toMillis(60)); + testFormatToMillis("23:00:00.000", TimeUnit.HOURS.toMillis(23)); + testFormatToMillis("24:00:00.000", TimeUnit.HOURS.toMillis(24)); + testFormatToMillis("48:00:00.000", TimeUnit.HOURS.toMillis(48)); + testFormatToMillis("23:59:59.999", TimeUnit.HOURS.toMillis(23) + + TimeUnit.MINUTES.toMillis(59) + + TimeUnit.SECONDS.toMillis(59) + + TimeUnit.MILLISECONDS.toMillis(999) ); - testFormatToMillis("-00:01:00.000", -TimeUnit.SECONDS.toNanos(60)); + testFormatToMillis("-00:01:00.000", -TimeUnit.SECONDS.toMillis(60)); } - private void testFormatToMillis(String expected, long nanos) { - ticker.set(nanos); + private void testFormatToMillis(String expected, long millis) { + clock.set(millis); assertEquals(expected, FormattingUtils.formatToMillis(sw)); } diff --git a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/VirtualTicker.java b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/VirtualTicker.java deleted file mode 100644 index 612f62c6c4..0000000000 --- a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/VirtualTicker.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.jackrabbit.oak.plugins.index.lucene; - -import java.util.concurrent.TimeUnit; - -import org.apache.jackrabbit.guava.common.base.Ticker; - -public class VirtualTicker extends Ticker { - private long time; - - @Override - public long read() { - return time; - } - - public void setTime(long time, TimeUnit unit){ - this.time = unit.toNanos(time); - } - - public void addTime(long delta, TimeUnit unit){ - this.time += unit.toNanos(delta); - } -}