19.2.267. PMIx_server_delete_process_set
PMIx_server_delete_process_set — Delete a PMIx process set name.
19.2.267.1. SYNOPSIS
#include <pmix_server.h>
pmix_status_t PMIx_server_delete_process_set(char *pset_name);
19.2.267.1.1. Python Syntax
from pmix import *
foo = PMIxServer()
# ... after a successful foo.init() ...
rc = foo.delete_process_set('myset')
19.2.267.2. INPUT PARAMETERS
pset_name: NULL-terminated string name of the process set being deleted.
19.2.267.3. DESCRIPTION
Provide a function by which the host environment can delete a process set name previously created with PMIx_server_define_process_set(3). Deleting the name has no impact on the member processes themselves — it simply removes the label and its associated membership record from the local PMIx server.
When called, the PMIx server library removes the corresponding entry from
its internal list of process sets, then alerts all local clients to the
deletion by generating a PMIX_PROCESS_SET_DELETE event carrying the
PMIX_PSET_NAME attribute (the name of the deleted set). The removal
comes first so that a handler cannot observe a set that has been
announced as gone but is still being reported by
PMIX_QUERY_PSET_NAMES. If no set with the given name is currently
recorded, the notification is still issued and the call completes
successfully.
PMIx_server_delete_process_set is a blocking call. Internally it
thread-shifts the request onto the PMIx progress thread, removes the
recorded set, emits the local notification, and returns once that
processing is complete.
19.2.267.4. RETURN VALUE
Returns one of the following:
PMIX_SUCCESS— the deletion was processed. As with PMIx_server_define_process_set(3), the local notification is a courtesy and a failure to build or deliver it does not fail the deletion.PMIX_ERR_BAD_PARAM—pset_namewasNULL.PMIX_ERR_INIT— the PMIx server library has not been initialized.PMIX_ERR_NOT_AVAILABLE— the library’s progress engine has been stopped, so the request cannot be serviced.
PMIx error constants are defined in pmix_common.h.
19.2.267.5. NOTES
This API is restricted to the server role and must be called only after a successful PMIx_server_init(3).
The host environment is responsible for ensuring consistent knowledge of process set membership across all involved PMIx servers. The PMIx library only removes the definition on the local server; it does not propagate the deletion to peer servers.
19.2.267.6. PROGRESS THREAD RESTRICTION
A blocking PMIx call must not be made from within the PMIx progress thread. Any code the library itself invokes runs on that thread: an event handler registered through PMIx_Register_event_handler(3), a callback passed to a non-blocking PMIx API, and — in a server or tool — the completion of a host-module up-call. A blocking call waits for work that the progress thread has to perform, so making one from that thread waits for itself and never returns. The PMIx Standard disallows it, and there is no way for an implementation to service such a request.
Where this call has a blocking form — including the blocking
behavior a non-blocking entry point adopts when it is passed a NULL
cbfunc — that form detects the situation and returns
PMIX_ERR_WOULD_BLOCK immediately, accompanied by a diagnostic naming
the call. Nothing is done and no callback is invoked.
PMIX_ERR_WOULD_BLOCK here is not a transient condition to retry: it
reports a call that cannot be serviced from where it was made. Reissue
it as the non-blocking form with a callback, or from a thread of your
own.