Package com.helix.core.executor
Class VirtualThreadRuleExecutor
java.lang.Object
com.helix.core.executor.VirtualThreadRuleExecutor
- All Implemented Interfaces:
RuleExecutor,AutoCloseable
High-throughput rule executor backed by Java 21 Project Loom virtual threads and structured concurrency.
Provides lightweight concurrency without OS carrier thread starvation and implements fail-fast coordinated
fan-out using StructuredTaskScope.ShutdownOnFailurePREVIEW.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionVirtualThreadRuleExecutor(Duration defaultTimeout) VirtualThreadRuleExecutor(Duration defaultTimeout, VirtualThreadExecutorMetrics metrics) VirtualThreadRuleExecutor(ExecutorService virtualThreadExecutor, Duration defaultTimeout, VirtualThreadExecutorMetrics metrics) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()execute(CompiledRule compiledRule, ExecutionContext context) Executes a compiled rule synchronously using the provided context.execute(CompiledRule compiledRule, ExecutionContext context, Duration timeout) Executes a compiled rule with an explicit deadline timeout.executeAll(CompiledRule compiledRule, List<ExecutionContext> contexts) Fan-out evaluation: executes a single rule across multiple contexts concurrently usingStructuredTaskScope.ShutdownOnFailurePREVIEW with default timeout.executeAll(CompiledRule compiledRule, List<ExecutionContext> contexts, Duration timeout) Fan-out evaluation: executes a single rule across multiple contexts concurrently usingStructuredTaskScope.ShutdownOnFailurePREVIEW with specified deadline timeout.executeAllRules(List<CompiledRule> rules, ExecutionContext context, Duration timeout) Parallel rule evaluation: executes multiple rules concurrently against the same context usingStructuredTaskScope.ShutdownOnFailurePREVIEW.executeAsync(CompiledRule compiledRule, ExecutionContext context) Executes a rule asynchronously on a virtual thread using default deadline.executeAsync(CompiledRule compiledRule, ExecutionContext context, Duration timeout) Executes a rule asynchronously on a virtual thread with an explicit timeout.Retrieves execution metrics for this executor instance.
-
Field Details
-
DEFAULT_DEADLINE
-
-
Constructor Details
-
VirtualThreadRuleExecutor
public VirtualThreadRuleExecutor() -
VirtualThreadRuleExecutor
-
VirtualThreadRuleExecutor
-
VirtualThreadRuleExecutor
public VirtualThreadRuleExecutor(ExecutorService virtualThreadExecutor, Duration defaultTimeout, VirtualThreadExecutorMetrics metrics)
-
-
Method Details
-
execute
public ExecutionResult execute(CompiledRule compiledRule, ExecutionContext context) throws RuleExecutionException Description copied from interface:RuleExecutorExecutes a compiled rule synchronously using the provided context.- Specified by:
executein interfaceRuleExecutor- Parameters:
compiledRule- rule instance to executecontext- execution context containing variable bindings- Returns:
- ExecutionResult containing output value or error details
- Throws:
RuleExecutionException- if execution fails unexpectedly
-
execute
public ExecutionResult execute(CompiledRule compiledRule, ExecutionContext context, Duration timeout) throws RuleExecutionException Executes a compiled rule with an explicit deadline timeout.- Parameters:
compiledRule- rule instance to evaluatecontext- context containing bindingstimeout- deadline duration (null or zero means no timeout)- Returns:
- ExecutionResult containing output or error
- Throws:
RuleExecutionException- if execution fails, times out, or is interrupted
-
executeAsync
public CompletableFuture<ExecutionResult> executeAsync(CompiledRule compiledRule, ExecutionContext context) Executes a rule asynchronously on a virtual thread using default deadline.- Parameters:
compiledRule- rule instancecontext- execution context- Returns:
- CompletableFuture holding ExecutionResult
-
executeAsync
public CompletableFuture<ExecutionResult> executeAsync(CompiledRule compiledRule, ExecutionContext context, Duration timeout) Executes a rule asynchronously on a virtual thread with an explicit timeout.- Parameters:
compiledRule- rule instancecontext- execution contexttimeout- deadline duration- Returns:
- CompletableFuture holding ExecutionResult
-
executeAll
public List<ExecutionResult> executeAll(CompiledRule compiledRule, List<ExecutionContext> contexts) throws RuleExecutionException Fan-out evaluation: executes a single rule across multiple contexts concurrently usingStructuredTaskScope.ShutdownOnFailurePREVIEW with default timeout.- Parameters:
compiledRule- rule instancecontexts- list of execution contexts- Returns:
- list of ExecutionResults preserving input order
- Throws:
RuleExecutionException- if any subtask fails or execution times out
-
executeAll
public List<ExecutionResult> executeAll(CompiledRule compiledRule, List<ExecutionContext> contexts, Duration timeout) throws RuleExecutionException Fan-out evaluation: executes a single rule across multiple contexts concurrently usingStructuredTaskScope.ShutdownOnFailurePREVIEW with specified deadline timeout.- Parameters:
compiledRule- rule instancecontexts- list of execution contextstimeout- deadline duration- Returns:
- list of ExecutionResults preserving input order
- Throws:
RuleExecutionException- if any subtask fails or execution times out
-
executeAllRules
public List<ExecutionResult> executeAllRules(List<CompiledRule> rules, ExecutionContext context, Duration timeout) throws RuleExecutionException Parallel rule evaluation: executes multiple rules concurrently against the same context usingStructuredTaskScope.ShutdownOnFailurePREVIEW.- Parameters:
rules- list of rules to evaluatecontext- context containing bindingstimeout- deadline duration- Returns:
- list of ExecutionResults preserving rule order
- Throws:
RuleExecutionException- if any subtask fails or execution times out
-
getMetrics
Description copied from interface:RuleExecutorRetrieves execution metrics for this executor instance.- Specified by:
getMetricsin interfaceRuleExecutor- Returns:
- ExecutorMetrics tracking counters and execution timing
-
getExecutorService
-
getDefaultTimeout
-
close
public void close()- Specified by:
closein interfaceAutoCloseable
-