You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2020/11/17 14:23:27 UTC
[asterixdb] branch master updated: [NO ISSUE][UTIL] Span,
ThrowingAction enhancements
This is an automated email from the ASF dual-hosted git repository.
mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 637a6a4 [NO ISSUE][UTIL] Span, ThrowingAction enhancements
637a6a4 is described below
commit 637a6a4769a2a2e4e33acbf35814bd456925cb0f
Author: Michael Blow <mb...@apache.org>
AuthorDate: Mon Nov 16 12:09:58 2020 -0500
[NO ISSUE][UTIL] Span, ThrowingAction enhancements
Change-Id: I884f0f1c517d39eafbbfbef78fe62f85803c0a8a
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/8923
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <mb...@apache.org>
---
.../main/java/org/apache/hyracks/util/Span.java | 68 ++++++++++++++++++++++
.../org/apache/hyracks/util/ThrowingAction.java | 7 +++
2 files changed, 75 insertions(+)
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/Span.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/Span.java
index bc33e6d..a9d8ec8 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/Span.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/Span.java
@@ -18,12 +18,80 @@
*/
package org.apache.hyracks.util;
+import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
public class Span {
+
+ public static final Span INFINITE = new Span() {
+ @Override
+ public void reset() {
+ //no-op
+ }
+
+ @Override
+ public long getSpanNanos() {
+ return Long.MAX_VALUE;
+ }
+
+ @Override
+ public long getSpan(TimeUnit unit) {
+ return Long.MAX_VALUE;
+ }
+
+ @Override
+ public boolean elapsed() {
+ return false;
+ }
+
+ @Override
+ public long elapsed(TimeUnit unit) {
+ return -1;
+ }
+
+ @Override
+ public void sleep() throws InterruptedException {
+ new Semaphore(0).acquire();
+ }
+
+ @Override
+ public void sleep(long sleep, TimeUnit unit) throws InterruptedException {
+ unit.sleep(sleep);
+ }
+
+ @Override
+ public long remaining(TimeUnit unit) {
+ return Long.MAX_VALUE;
+ }
+
+ @Override
+ public void wait(Object monitor) throws InterruptedException {
+ monitor.wait();
+ }
+
+ @Override
+ public void loopUntilExhausted(ThrowingAction action) throws Exception {
+ super.loopUntilExhausted(action);
+ }
+
+ @Override
+ public void loopUntilExhausted(ThrowingAction action, long delay, TimeUnit delayUnit) throws Exception {
+ super.loopUntilExhausted(action, delay, delayUnit);
+ }
+
+ @Override
+ public String toString() {
+ return "<INFINITY>";
+ }
+ };
+
private final long spanNanos;
private volatile long startNanos;
+ private Span() {
+ spanNanos = startNanos = -1;
+ }
+
private Span(long span, TimeUnit unit) {
spanNanos = unit.toNanos(span);
reset();
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ThrowingAction.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ThrowingAction.java
index d675179..136ce30 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ThrowingAction.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ThrowingAction.java
@@ -21,4 +21,11 @@ package org.apache.hyracks.util;
@FunctionalInterface
public interface ThrowingAction {
void run() throws Exception; // NOSONAR
+
+ static ComputingAction<Void> asComputingAction(ThrowingAction action) {
+ return () -> {
+ action.run();
+ return null;
+ };
+ }
}