You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2025/03/31 12:50:51 UTC
(jackrabbit-oak) 01/01: OAK-11621: Reduce usage of Guava Ticker - oak-core
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 <re...@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);
- }
-}