jerryshao opened a new issue, #12495: URL: https://github.com/apache/gravitino/issues/12495
### Describe the feature Expose the job's finished-execution time (already tracked internally by `JobEntity`/`JobPO`/storage) through the public surface: `JobDTO`, the REST API/OpenAPI spec, the Java client (`JobHandle`), the Python client, and the event listener (`JobInfo`). ### Motivation Callers can currently observe a job's status (`QUEUED`, `SUCCEEDED`, `FAILED`, etc.) but have no way to know *when* it actually finished. The storage layer already records this; it just isn't surfaced anywhere. ### Describe the solution - `JobHandle.finishedAt()` (Java, `default` method) / `finished_at()` (Python) — non-abstract with an `UnsupportedOperationException`/`NotImplementedError` default, so existing external implementers don't break. - `JobDTO.finishedAt` (Java `Instant`, Python `datetime`), matching the existing `Audit.createTime` convention. - `finishedAt` added to the `Job` schema in `docs/open-api/jobs.yaml`. - `JobEntity.finishedAtAsInstant()` — single conversion point from the storage layer's raw epoch-millis + "not finished" sentinel to `Instant`, used by `JobOperations.toDTO` and `JobInfo.fromJobEntity`. - `GenericJobHandle` (Java + Python) delegate to the DTO. - `JobManager.pullAndUpdateJobStatus` now stamps `finishedAt` at the moment a job transitions to a terminal state (`SUCCEEDED`/`FAILED`/`CANCELLED`); `JobEntity.FINISHED_AT` is a required field, enforced at build time, so every construction site must decide the value explicitly. - Unit + integration test coverage across Java and Python. ### Additional context No storage schema changes — `job_finished_at` already existed and round-trips correctly; this only wires it through to the public API surface. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
