Skip to content

Solve issue #2382#2386

Open
francescoingv wants to merge 2 commits into
geopython:masterfrom
francescoingv:2382-delete-propagation
Open

Solve issue #2382#2386
francescoingv wants to merge 2 commits into
geopython:masterfrom
francescoingv:2382-delete-propagation

Conversation

@francescoingv

Copy link
Copy Markdown
Contributor

Overview

Enable the Processor to delete resources created when a job DELETE is submitted #2382

Related Issue / discussion

Solve issue #2382

Additional information

BaseProcessor: added hook remove_resources() to enable derived classes to handle removal of resources
PostgreSQLManager and TinyDBManager: modified delete_job() to call processor.remove_resources(job_id) when result files are removed.
DummyManager and MongoDBManager: do not modified as not handling result files

Dependency policy (RFC2)

  • I have ensured that this PR meets RFC2 requirements

Updates to public demo

Contributions and licensing

(as per https://github.com/geopython/pygeoapi/blob/master/CONTRIBUTING.md#contributions-and-licensing)

  • I'd like to contribute [feature X|bugfix Y|docs|something else] to pygeoapi. I confirm that my contributions to pygeoapi will be compatible with the pygeoapi license guidelines at the time of contribution
  • I have already previously agreed to the pygeoapi Contributions and Licensing Guidelines

BaseProcessor: added hook remove_resources() to enable derived classes to handle removal of resources

PostgreSQLManager and TinyDBManager: modified delete_job() to call processor.remove_resources(job_id) when result files are removed.

DummyManager and MongoDBManager: do not modified as not handling result files
@tomkralidis tomkralidis added this to the 0.24.0 milestone Jul 4, 2026
@tomkralidis tomkralidis added the OGC API - Processes OGC API - Processes label Jul 4, 2026
@tomkralidis
tomkralidis self-requested a review July 4, 2026 13:02
@francescoingv

Copy link
Copy Markdown
Contributor Author

@tomkralidis you may find the Processor class in file in #2388 useful for review and testing.

Please note the configuration required:

<processor_ID>:
    type: process
    processor:
        name: 'pygeoapi.process.extended_output_only.ExtendedEchoProcessor'
        base_reference_url: 'http://<URL_for_results_by_reference>/'
        base_reference_dir: <path_to_write_results_accessed_by_reference>/

With the ExtendedEchoProcessor test class, the following execute request may be submitted:

$ curl localhost:5000/processes/echo_output/execution -H 'Content-Type: application/json' -d '{"inputs":{},"outputs":{"numberOutput":{"transmissionMode":"reference"}, "booleanOutput":{}}}'
...

which will create the file to be used for reference:
<path_to_write_results_accessed_by_reference>/<job_id>_numberOutput.json

After the command
$ curl -i -X DELETE localhost:5000/jobs/<job_id>

Without this PR:

$ find <path_to_wite_results_accessed_by_reference> -name <job_id>*
<path_to_write_results_accessed_by_reference>/<job_id>_numberOutput.json
$

With this PR:

$ find <path_to_wite_results_accessed_by_reference> -name <job_id>*
$

@tomkralidis tomkralidis modified the milestones: 0.24.0, 0.25.0 Jul 13, 2026
francescoingv added a commit to francescoingv/expose-pygeoapi-plugins that referenced this pull request Jul 13, 2026
Currently the core Manager (PostgreSQLManager) on receiving a delete_job(<job_id>) does not advise the Processor which executed the job.
If the Processor created resources (e.g. files) as part of the elaboration, then the Processor is the only entity aware of it, and is necessary to advise the Processor to (possibly, depending on the service policy) remove the resource.

The issue (geopython/pygeoapi#2382) was created,
and associated PR (geopython/pygeoapi#2386) to solve it.

Until the PR will be  inserted in the core framework,
a temporary custom manager extending PostgreSQLManager will be used.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OGC API - Processes OGC API - Processes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants