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

    Constructors
    Constructor
    Description
    Creates a scheduler.
    Creates a scheduler using a caller-supplied worker executor.
  • Method Summary

    Modifier and Type
    Method
    Description
    org.j7m.middleware.workload.api.TaskLease
    acquireLease(org.j7m.middleware.workload.api.TaskId taskId, org.j7m.middleware.workload.api.LeaseOwner owner, Duration duration)
    void
    cancel(org.j7m.middleware.workload.api.TaskId taskId)
    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)
    void
    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)
    void
    Drains the scheduler by rejecting new work while allowing current tasks to observe cancellation policy through normal handles.
    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)
    org.j7m.middleware.workload.api.FanOutResult
    fanOut(org.j7m.middleware.workload.api.FanOutRequest request, org.j7m.middleware.workload.api.CandidateInvoker invoker)
    List<org.j7m.middleware.workload.api.TaskStatus>
    Returns a metrics snapshot.
    void
    releaseLease(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.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)
    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)
    org.j7m.middleware.workload.api.ScatterGatherResult
    scatterGather(org.j7m.middleware.workload.api.ScatterGatherRequest request, org.j7m.middleware.workload.api.CandidateInvoker invoker)
    org.j7m.middleware.workload.api.TaskStatus
    status(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.WorkloadHandle
    submit(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.TaskRef
    submitOneWay(org.j7m.middleware.workload.api.TaskSubmission submission, org.j7m.middleware.workload.api.WorkloadExecutor workloadExecutor)

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • InMemoryWorkloadScheduler

      public InMemoryWorkloadScheduler(InMemorySchedulerOptions options)
      Creates a scheduler.
      Parameters:
      options - scheduler options
    • InMemoryWorkloadScheduler

      public InMemoryWorkloadScheduler(InMemorySchedulerOptions options, ExecutorService workerExecutor)
      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 use InMemoryWorkloadScheduler(InMemorySchedulerOptions).

      Parameters:
      options - scheduler options
      workerExecutor - lifecycle-owned worker executor
  • Method Details

    • schedulerId

      public String schedulerId()
      Specified by:
      schedulerId in interface org.j7m.middleware.workload.api.WorkloadScheduler
    • submit

      public org.j7m.middleware.workload.api.WorkloadHandle submit(org.j7m.middleware.workload.api.TaskSubmission submission)
      Specified by:
      submit in interface org.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:
      acquireLease in interface org.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:
      renewLease in interface org.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:
      releaseLease in interface org.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:
      reportProgress in interface org.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:
      checkpoint in interface org.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:
      complete in interface org.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:
      fail in interface org.j7m.middleware.workload.api.WorkloadScheduler
    • cancel

      public void cancel(org.j7m.middleware.workload.api.TaskId taskId)
      Specified by:
      cancel in interface org.j7m.middleware.workload.api.WorkloadScheduler
    • status

      public org.j7m.middleware.workload.api.TaskStatus status(org.j7m.middleware.workload.api.TaskId taskId)
      Specified by:
      status in interface org.j7m.middleware.workload.api.WorkloadScheduler
    • listTasks

      public List<org.j7m.middleware.workload.api.TaskStatus> listTasks()
      Specified by:
      listTasks in interface org.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:
      submitAsync in interface org.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:
      submitOneWay in interface org.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:
      stream in interface org.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:
      fanOut in interface org.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:
      scatterGather in interface org.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

      public WorkloadMetricsSnapshot metrics()
      Returns a metrics snapshot.
      Returns:
      metrics snapshot
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface org.j7m.middleware.workload.api.WorkloadScheduler