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;
+        };
+    }
 }