Skip to content

Feat/query job refactor - #12

Open
penghuo wants to merge 14 commits into
mainfrom
feat/query-job-refactor
Open

penghuo wants to merge 14 commits into
mainfrom
feat/query-job-refactor

Conversation

@penghuo

@penghuo penghuo commented Sep 25, 2026

Copy link
Copy Markdown
Owner

Description

[Describe what this change achieves]

Related Issues

Resolves #[Issue number to be closed when this PR is merged]

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • New functionality has javadoc added.
  • New functionality has a user manual doc added.
  • New PPL command checklist all confirmed.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff or -s.
  • Public documentation issue/PR created.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

penghuo and others added 14 commits September 24, 2026 22:43
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Signed-off-by: Peng Huo <penghuo@gmail.com>
Replaces PPLAsyncQueryService (~840 lines) and PPLAsyncQueryJob with a
single active-object design:

- QueryJob owns the state machine, retention deadline, keep-alive expiry
  timer, task registration and cancellation, execution attachment and
  completion cleanup. Public API: create(...), get(keepAlive),
  cancel(reason), getJobId, getOwner. Snapshot / Status / Failure are
  the only external types.
- QueryJobRegistry is a thin ConcurrentMap wrapper with add / get /
  remove / close. close() calls discard() on every job and rejects
  further adds.
- PPLAsyncQueryJobId -> QueryJobId (now public).
- PPLAsyncQueryUser  -> QueryJobOwner (authorize() now public).
- Renamed tests keep prior coverage; PPLAsyncQueryServiceTest and
  PPLAsyncQueryJobTest are removed together with the service.

AdmissionControl (running/retained capacity limits) and request
validation are deferred to a follow-up PR, matching the current PR
description's boundary.

Signed-off-by: Peng Huo <penghuo@amazon.com>
…istry

QueryJobTest drives one QueryJob through its lifecycle using a fake
clock and a fake Scheduler. Covers direct success/failure, retention
timeout, retained success/failure with metric recording, DELETE
statuses, expiry via GET boundary and via expiry timer, keep-alive
renewal, shutdown discard, authorization, and late-attach after DELETE.

QueryJobRegistryTest covers add / remove / close semantics and the
defensive jobs() snapshot.

Signed-off-by: Peng Huo <penghuo@amazon.com>
@penghuo
penghuo requested a review from dai-chen as a code owner September 25, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant