>From Michael Blow <[email protected]>:

Michael Blow has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21189?usp=email )

Change subject: Merge branch 'gerrit/morpheus' into 'gerrit/lumina'
......................................................................

Merge branch 'gerrit/morpheus' into 'gerrit/lumina'

 * [NO ISSUE][HYR][MISC] Fix Span lifefycle / API issues (MB-71012)

Change-Id: If9e05840734fae281bc1fedd5f5ee3f4ef0a6e93
---
M 
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
M 
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/Span.java
M 
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
4 files changed, 6 insertions(+), 296 deletions(-)

Approvals:
  Jenkins: Verified; Verified
  Michael Blow: Looks good to me, approved




diff --git 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
index 9f4ad5d..00d2358 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
@@ -297,9 +297,8 @@
         for (Future<Void> task : tasks) {
             task.cancel(true);
         }
-        Span completionPoll = Span.init(TASKS_COMPLETION_POLL_SECONDS, 
TimeUnit.SECONDS);
+        Span completionPoll = Span.start(TASKS_COMPLETION_POLL_SECONDS, 
TimeUnit.SECONDS);
         while (true) {
-            completionPoll.reset();
             if (completionPoll.tryAcquireUninterruptibly(completeSemaphore)) {
                 return true;
             }
@@ -314,6 +313,7 @@
                 preCancelStackTraces.put(runningThread, 
runningThread.getStackTrace());
             }
             interruptRunningThreads(runningThreads);
+            completionPoll.reset();
         }
     }

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 e59543e..dc699b6 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
@@ -176,10 +176,6 @@
         return s;
     }

-<<<<<<< HEAD   (99caa2 Null merge branch 'gerrit/morpheus' into 
'gerrit/lumina')
-    public static Span init(long span, TimeUnit unit) {
-        return new Span(span, unit);
-=======
     /**
      * Creates a span that is immediately elapsed, analogous to a do/while 
loop: the elapsed condition is true on the
      * first check, triggering immediate action, after which {@link #reset()} 
begins the countdown for subsequent
@@ -202,7 +198,6 @@
         Span s = new Span(span, unit);
         s.startNanos = System.nanoTime() - s.spanNanos;
         return s;
->>>>>>> BRANCH (0d9477 Merge branch 'gerrit/trinity' into 'gerrit/morpheus')
     }

     public boolean elapsed() {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
index 74729cf..33e6cfb 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
@@ -19,294 +19,6 @@
 package org.apache.hyracks.util.annotations;

 import static org.apache.hyracks.util.annotations.AiProvenance.AiProvenances;
-<<<<<<< HEAD   (99caa2 Null merge branch 'gerrit/morpheus' into 
'gerrit/lumina')
-import static org.apache.hyracks.util.annotations.AiProvenance.Agent.GPT_5_3;
-import static 
org.apache.hyracks.util.annotations.AiProvenance.Agent.GPT_5_MINI;
-import static 
org.apache.hyracks.util.annotations.AiProvenance.ContributionKind.GENERATED;
-import static org.apache.hyracks.util.annotations.AiProvenance.Tool.CHATGPT_UI;
-import static 
org.apache.hyracks.util.annotations.AiProvenance.Tool.GITHUB_COPILOT;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Repeatable;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotation used to record AI provenance metadata for a program element.
- *
- * <p>This annotation may be applied to types, methods, constructors and fields
- * to indicate that the element was generated or assisted by an AI model. It
- * records which {@link Agent} (model), which {@link Tool} (invocation
- * surface) and the kind of contribution via {@link ContributionKind}.</p>
- *
- * <p>The annotation is repeatable using the {@link AiProvenances} container
- * which allows multiple provenance records to be attached to the same
- * program element (for example: initial draft generated by one model and
- * later refinement by another).</p>
- *
- * <p>Example:</p>
- * <pre>
- * import static org.apache.hyracks.util.annotations.AiProvenance.Agent.*;
- * import static org.apache.hyracks.util.annotations.AiProvenance.Tool.*;
- * import static 
org.apache.hyracks.util.annotations.AiProvenance.ContributionKind.*;
- *
- * {@literal @}AiProvenance(agent = GPT_5_MINI, tool = OPENAI_API, 
contributionKind = GENERATED,
- *                 notes = "Initial PoC helper generated by GPT-5 Mini")
- * public class ExampleGeneratedClass { ... }
- * </pre>
- *
- */
-@AiProvenance(agent = GPT_5_3, tool = CHATGPT_UI, contributionKind = 
GENERATED, notes = "Initial implementation generated via GPT-5.3 (browser)")
-@AiProvenance(agent = GPT_5_MINI, tool = GITHUB_COPILOT, contributionKind = 
GENERATED, notes = "Refinements / Javadocs generated via GPT-5 Mini (GitHub 
Copilot)")
-@Retention(RetentionPolicy.SOURCE)
-@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, 
ElementType.FIELD })
-@Repeatable(AiProvenances.class)
-public @interface AiProvenance {
-    Agent agent();
-
-    Tool tool();
-
-    ContributionKind contributionKind() default GENERATED;
-
-    String notes() default "";
-
-    enum ContributionKind {
-        /**
-         * The element was fully generated by an AI model.
-         */
-        GENERATED,
-
-        /**
-         * The element was assisted or suggested by an AI model and requires
-         * human review or modification.
-         */
-        ASSISTED,
-
-        /**
-         * The element was refactored or rewritten by an AI model (not newly
-         * generated from scratch).
-         */
-        REFACTORED,
-
-        /**
-         * The element is a test that was generated by an AI model.
-         */
-        TEST_GENERATED,
-
-        /**
-         * The element is documentation that was generated by an AI model.
-         */
-        DOC_GENERATED
-    }
-
-    enum Agent {
-        // OpenAI
-        GPT_5_4("openai", "gpt-5.4", "GPT-5.4"),
-        GPT_5_3("openai", "gpt-5.3", "GPT-5.3"),
-        GPT_5_2("openai", "gpt-5.2", "GPT-5.2"),
-        GPT_5_MINI("openai", "gpt-5-mini", "GPT-5 Mini"),
-        GPT_5_1_CODEX("openai", "gpt-5.1-codex", "GPT-5.1 Codex"),
-        GPT_5_3_CODEX("openai", "gpt-5.3-codex", "GPT-5.3 Codex"),
-
-        // =========================
-        // OpenAI — GPT-4.x Family
-        // =========================
-        GPT_4_1("openai", "gpt-4.1", "GPT-4.1"),
-        GPT_4_1_MINI("openai", "gpt-4.1-mini", "GPT-4.1 Mini"),
-        GPT_4_1_NANO("openai", "gpt-4.1-nano", "GPT-4.1 Nano"),
-
-        GPT_4O("openai", "gpt-4o", "GPT-4o"),
-        GPT_4O_MINI("openai", "gpt-4o-mini", "GPT-4o Mini"),
-
-        // =========================
-        // OpenAI — Reasoning (o-series)
-        // =========================
-        O1("openai", "o1", "o1"),
-        O1_MINI("openai", "o1-mini", "o1 Mini"),
-
-        O3("openai", "o3", "o3"),
-        O3_MINI("openai", "o3-mini", "o3 Mini"),
-
-        O4("openai", "o4", "o4"),
-        O4_MINI("openai", "o4-mini", "o4 Mini"),
-
-        // =========================
-        // Anthropic — Claude Opus
-        // =========================
-        CLAUDE_OPUS_4("anthropic", "claude-4-opus", "Claude Opus 4"),
-        CLAUDE_OPUS_4_6("anthropic", "claude-4-opus-4.6", "Claude Opus 4.6"),
-
-        CLAUDE_OPUS_3("anthropic", "claude-3-opus", "Claude Opus 3"),
-
-        // =========================
-        // Anthropic — Claude Sonnet
-        // =========================
-        CLAUDE_SONNET_4("anthropic", "claude-4-sonnet", "Claude Sonnet 4"),
-        CLAUDE_SONNET_4_5("anthropic", "claude-4-sonnet-4.5", "Claude Sonnet 
4.5"),
-        CLAUDE_SONNET_4_6("anthropic", "claude-4-sonnet-4.6", "Claude Sonnet 
4.6"),
-
-        CLAUDE_SONNET_3("anthropic", "claude-3-sonnet", "Claude Sonnet 3"),
-        CLAUDE_SONNET_3_5("anthropic", "claude-3-5-sonnet", "Claude Sonnet 
3.5"),
-
-        // =========================
-        // Anthropic — Claude Haiku
-        // =========================
-        CLAUDE_HAIKU_4("anthropic", "claude-4-haiku", "Claude Haiku 4"),
-        CLAUDE_HAIKU_3("anthropic", "claude-3-haiku", "Claude Haiku 3"),
-
-        // Google
-        GEMINI_1_5_PRO("google", "gemini-1.5-pro", "Gemini 1.5 Pro"),
-        GEMINI_1_5_FLASH("google", "gemini-1.5-flash", "Gemini 1.5 Flash"),
-
-        // Meta
-        LLAMA_3_70B("meta", "llama-3-70b", "LLaMA 3 70B"),
-        LLAMA_3_8B("meta", "llama-3-8b", "LLaMA 3 8B"),
-
-        // Mistral
-        MISTRAL_LARGE("mistral", "mistral-large", "Mistral Large"),
-        MISTRAL_SMALL("mistral", "mistral-small", "Mistral Small"),
-        MIXTRAL_8X7B("mistral", "mixtral-8x7b", "Mixtral 8x7B"),
-
-        // Cohere
-        COMMAND_R_PLUS("cohere", "command-r-plus", "Command R+"),
-        COMMAND_R("cohere", "command-r", "Command R"),
-
-        // OSS / local
-        DEEPSEEK_CHAT("deepseek", "deepseek-chat", "DeepSeek Chat"),
-        DEEPSEEK_CODER("deepseek", "deepseek-coder", "DeepSeek Coder"),
-        QWEN_2("alibaba", "qwen-2", "Qwen 2"),
-        PHI_3("microsoft", "phi-3", "Phi-3"),
-
-        // Fallback
-        OTHER("other", "other", "Other");
-
-        private final String provider;
-        private final String modelId;
-        private final String displayName;
-
-        Agent(String provider, String modelId, String displayName) {
-            this.provider = provider;
-            this.modelId = modelId;
-            this.displayName = displayName;
-        }
-
-        /**
-         * Returns the provider identifier (e.g. "openai", "anthropic").
-         */
-        public String provider() {
-            return provider;
-        }
-
-        /**
-         * Returns a canonical model identifier useful for telemetry and
-         * analytics (for example "gpt-5.4" or "claude-4-opus-4.6").
-         */
-        public String modelId() {
-            return modelId;
-        }
-
-        /**
-         * Human-friendly display name for the model.
-         */
-        public String displayName() {
-            return displayName;
-        }
-    }
-
-    /**
-     * Container annotation for repeatable {@link AiProvenance} entries.
-     *
-     * <p>Kept with RUNTIME retention to allow tools that read compiled class
-     * files to discover provenance entries. The primary {@link AiProvenance}
-     * annotation is SOURCE-retained; the container is provided to satisfy the
-     * repeatable contract when tools choose to materialize the annotations at
-     * runtime.</p>
-     */
-    @Retention(RetentionPolicy.RUNTIME)
-    @Target({ ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, 
ElementType.FIELD })
-    @interface AiProvenances {
-        /**
-         * The contained provenance entries.
-         */
-        AiProvenance[] value();
-    }
-
-    enum Tool {
-
-        // Web / Chat UIs
-        CHATGPT_UI("openai", "chatgpt-ui", "ChatGPT"),
-        CLAUDE_UI("anthropic", "claude-ui", "Claude UI"),
-        GEMINI_UI("google", "gemini-ui", "Gemini UI"),
-        PERPLEXITY("perplexity", "perplexity", "Perplexity"),
-
-        // IDE integrations
-        GITHUB_COPILOT("github", "copilot", "GitHub Copilot"),
-        GEMINI_CODE_ASSIST("google", "gemini-code-assist", "Gemini Code 
Assist"),
-        CURSOR("cursor", "cursor", "Cursor"),
-        WINDSURF("windsurf", "windsurf", "Windsurf"),
-        INTELLIJ_AI_ASSISTANT("jetbrains", "ai-assistant", "JetBrains AI 
Assistant"),
-        VSCODE_AI_EXTENSION("microsoft", "vscode-ai", "VS Code AI Extension"),
-
-        // APIs / SDK usage
-        OPENAI_API("openai", "api", "OpenAI API"),
-        ANTHROPIC_API("anthropic", "api", "Anthropic API"),
-        GOOGLE_AI_API("google", "api", "Google AI API"),
-        GENERIC_API("generic", "api", "Generic API"),
-
-        // Agent / orchestration platforms
-        FACTORY("factory", "factory-ai", "Factory.ai"),
-        LANGCHAIN("langchain", "langchain", "LangChain"),
-        LLAMAINDEX("llamaindex", "llamaindex", "LlamaIndex"),
-        CUSTOM_AGENT("custom", "custom-agent", "Custom Agent Runtime"),
-
-        // CLI tools
-        OPENAI_CLI("openai", "cli", "OpenAI CLI"),
-        ANTHROPIC_CLI("anthropic", "cli", "Anthropic CLI"),
-        FACTORY_CLI("factory", "factory-cli", "Factory.ai CLI"),
-
-        // Fallback
-        OTHER("other", "other", "Other");
-
-        private final String provider;
-        private final String id;
-        private final String displayName;
-
-        Tool(String provider, String id, String displayName) {
-            this.provider = provider;
-            this.id = id;
-            this.displayName = displayName;
-        }
-
-        /**
-         * Returns the provider identifier (e.g. "openai", "anthropic").
-         */
-        public String provider() {
-            return provider;
-        }
-
-        /**
-         * Returns an identifier for the specific tool or integration
-         * (for example "api", "chatgpt-ui" or "copilot").
-         */
-        public String id() {
-            return id;
-        }
-
-        /**
-         * Human-friendly display name for the tool.
-         */
-        public String displayName() {
-            return displayName;
-        }
-
-        /**
-         * Returns a compact qualified name composed of provider and id which
-         * is useful for logging and tagging (for example 
"factory/factory-cli").
-         */
-        public String qualifiedName() {
-            return provider + "/" + id;
-=======
 import static 
org.apache.hyracks.util.annotations.AiProvenance.Agent.CLAUDE_SONNET_4_6;
 import static org.apache.hyracks.util.annotations.AiProvenance.Agent.GPT_5_3;
 import static 
org.apache.hyracks.util.annotations.AiProvenance.Agent.GPT_5_MINI;
@@ -679,7 +391,6 @@
          */
         public String qualifiedName() {
             return id() + "/" + id;
->>>>>>> BRANCH (0d9477 Merge branch 'gerrit/trinity' into 'gerrit/morpheus')
         }
     }
 }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21189?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: asterixdb
Gerrit-Branch: lumina
Gerrit-Change-Id: If9e05840734fae281bc1fedd5f5ee3f4ef0a6e93
Gerrit-Change-Number: 21189
Gerrit-PatchSet: 1
Gerrit-Owner: Michael Blow <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Michael Blow <[email protected]>

Reply via email to