Class InMemoryWorkloadScheduler
java.lang.Object
org.j7m.middleware.scheduler.InMemoryWorkloadScheduler
- All Implemented Interfaces:
AutoCloseable, org.j7m.middleware.workload.api.WorkloadScheduler
public final class InMemoryWorkloadScheduler
extends Object
implements org.j7m.middleware.workload.api.WorkloadScheduler
Bounded in-memory scheduler used as the Phase 4 baseline implementation.
The scheduler is thread-safe and owns its virtual-thread executor. It is intentionally non-durable: tasks, leases, checkpoints, and results disappear when the scheduler is closed or the JVM exits. The implementation enforces authorization, resource policy, queue limits, concurrency limits, lease ownership, and fencing tokens before handler execution.
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a scheduler.InMemoryWorkloadScheduler(InMemorySchedulerOptions options, ExecutorService workerExecutor) Creates a scheduler using a caller-supplied worker executor. -
Method Summary
Modifier and TypeMethodDescriptionorg.j7m.middleware.workload.api.TaskLeaseacquireLease(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, Duration duration) voidcancel(org.j7m.middleware.workload.api.TaskId taskId) org.j7m.middleware.workload.api.TaskCheckpointcheckpoint(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, Map<String, String> metadata) voidclose()voidcomplete(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, Object result) voiddrain()Drains the scheduler by rejecting new work while allowing current tasks to observe cancellation policy through normal handles.voidfail(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, org.j7m.middleware.workload.api.TaskFailure failure) org.j7m.middleware.workload.api.FanOutResultfanOut(org.j7m.middleware.workload.api.FanOutRequest request, org.j7m.middleware.workload.api.CandidateInvoker invoker) List<org.j7m.middleware.workload.api.TaskStatus> metrics()Returns a metrics snapshot.voidreleaseLease(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token) org.j7m.middleware.workload.api.TaskLeaserenewLease(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, Duration duration) voidreportProgress(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, org.j7m.middleware.workload.api.TaskProgress progress) org.j7m.middleware.workload.api.ScatterGatherResultscatterGather(org.j7m.middleware.workload.api.ScatterGatherRequest request, org.j7m.middleware.workload.api.CandidateInvoker invoker) org.j7m.middleware.workload.api.TaskStatusstatus(org.j7m.middleware.workload.api.TaskId taskId) <T> org.j7m.middleware.workload.api.StreamHandle<T> stream(org.j7m.middleware.workload.api.TaskSubmission submission, org.j7m.middleware.workload.api.StreamProducer<T> producer) org.j7m.middleware.workload.api.WorkloadHandlesubmit(org.j7m.middleware.workload.api.TaskSubmission submission) org.j7m.middleware.workload.api.AsyncResult<Object> submitAsync(org.j7m.middleware.workload.api.TaskSubmission submission, org.j7m.middleware.workload.api.WorkloadExecutor workloadExecutor) org.j7m.middleware.workload.api.TaskRefsubmitOneWay(org.j7m.middleware.workload.api.TaskSubmission submission, org.j7m.middleware.workload.api.WorkloadExecutor workloadExecutor)
-
Constructor Details
-
InMemoryWorkloadScheduler
Creates a scheduler.- Parameters:
options- scheduler options
-
InMemoryWorkloadScheduler
Creates a scheduler using a caller-supplied worker executor.The scheduler owns the supplied executor and closes it from
close(). This constructor exists for deterministic lifecycle and rejection testing; production callers should normally useInMemoryWorkloadScheduler(InMemorySchedulerOptions).- Parameters:
options- scheduler optionsworkerExecutor- lifecycle-owned worker executor
-
-
Method Details
-
schedulerId
- Specified by:
schedulerIdin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
submit
public org.j7m.middleware.workload.api.WorkloadHandle submit(org.j7m.middleware.workload.api.TaskSubmission submission) - Specified by:
submitin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
acquireLease
public org.j7m.middleware.workload.api.TaskLease acquireLease(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, Duration duration) - Specified by:
acquireLeasein interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
renewLease
public org.j7m.middleware.workload.api.TaskLease renewLease(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, Duration duration) - Specified by:
renewLeasein interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
releaseLease
public void releaseLease(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token) - Specified by:
releaseLeasein interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
reportProgress
public void reportProgress(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, org.j7m.middleware.workload.api.TaskProgress progress) - Specified by:
reportProgressin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
checkpoint
public org.j7m.middleware.workload.api.TaskCheckpoint checkpoint(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, Map<String, String> metadata) - Specified by:
checkpointin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
complete
public void complete(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, Object result) - Specified by:
completein interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
fail
public void fail(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, org.j7m.middleware.workload.api.FencingToken token, org.j7m.middleware.workload.api.TaskFailure failure) - Specified by:
failin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
cancel
public void cancel(org.j7m.middleware.workload.api.TaskId taskId) - Specified by:
cancelin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
status
public org.j7m.middleware.workload.api.TaskStatus status(org.j7m.middleware.workload.api.TaskId taskId) - Specified by:
statusin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
listTasks
- Specified by:
listTasksin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
submitAsync
public org.j7m.middleware.workload.api.AsyncResult<Object> submitAsync(org.j7m.middleware.workload.api.TaskSubmission submission, org.j7m.middleware.workload.api.WorkloadExecutor workloadExecutor) - Specified by:
submitAsyncin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
submitOneWay
public org.j7m.middleware.workload.api.TaskRef submitOneWay(org.j7m.middleware.workload.api.TaskSubmission submission, org.j7m.middleware.workload.api.WorkloadExecutor workloadExecutor) - Specified by:
submitOneWayin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
stream
public <T> org.j7m.middleware.workload.api.StreamHandle<T> stream(org.j7m.middleware.workload.api.TaskSubmission submission, org.j7m.middleware.workload.api.StreamProducer<T> producer) - Specified by:
streamin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
fanOut
public org.j7m.middleware.workload.api.FanOutResult fanOut(org.j7m.middleware.workload.api.FanOutRequest request, org.j7m.middleware.workload.api.CandidateInvoker invoker) - Specified by:
fanOutin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
scatterGather
public org.j7m.middleware.workload.api.ScatterGatherResult scatterGather(org.j7m.middleware.workload.api.ScatterGatherRequest request, org.j7m.middleware.workload.api.CandidateInvoker invoker) - Specified by:
scatterGatherin interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-
drain
public void drain()Drains the scheduler by rejecting new work while allowing current tasks to observe cancellation policy through normal handles. -
metrics
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceorg.j7m.middleware.workload.api.WorkloadScheduler
-