Skip to content

v0.1.1

Choose a tag to compare

@FDK0901 FDK0901 released this 28 Feb 20:49
· 40 commits to main since this release

v0.1.1

Bug Fixes

  • Batch retry not dispatching items: Fixed a critical issue where "Retry Failed Items" and "Retry All" triggered from the monitor UI had no effect. The root cause was that the EventBatchRetrying event published by the API only reached Redis Pub/Sub but never arrived at the OrchestratorActor through the Hollywood actor network. The actorDispatcher now forwards orchestrator-relevant events (batch.retrying, workflow.retrying) directly to the orchestrator singleton via DomainEventMsg.

  • Batch item jobs stuck in "pending" status: Individual jobs spawned by a batch showed as "pending" in the Jobs tab even after successful completion. The CompleteRun pipeline only persisted the Run record to history — it never updated the parent Job record's status. The EventBridgeActor now performs a best-effort CAS update on the Job record after each run completes, setting its status to completed or failed accordingly.

New Feature

  • APIService — transport-agnostic service layer: The monitor API has been refactored into a two-layer architecture:

    • APIService: Contains all business logic with no HTTP dependency. Methods accept context.Context and typed parameters, returning data + error (with *ApiError carrying status codes). Covers Jobs, Schedules, Nodes, Runs, History, DLQ, Workflows, Batches, Groups, Queues, Stats, and all Bulk operations.
    • API: A thin HTTP wrapper that parses requests, delegates to APIService, and writes JSON responses.

    This enables users to compose APIService with custom HTTP handlers, gRPC services, or any other transport:

    svc := monitor.NewAPIService(store, dispatcher, logger)
    // Use with default HTTP handlers:
    api := monitor.NewAPI(svc)
    // Or build your own:
    http.HandleFunc("/my-endpoint", func(w http.ResponseWriter, r *http.Request) {
        jobs, total, err := svc.ListJobs(r.Context(), filter)
        // ...
    })
  • Exported WebSocket types: WSClient, NewWSClient(), and HandleWebSocket() are now exported, allowing integration of the real-time event WebSocket endpoint into custom server setups.

Other

  • Fixed README typo.
  • Changed default config parse path.
  • Added main binary to .gitignore.