-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Description
The PMIx standard allows any implementation to return PMIX_ERR_NOT_SUPPORTED for any request. Users of the API must be prepared to handle this case.
The central questions are:
- When is
PMIX_ERR_NOT_SUPPORTEDsupposed to be returned? In a blocking operation, it should be at the call site. In a non-blocking operation, that might not be possible without blocking until the request is processed by the RM. Should it be returned in the callback then? - Should we have a
PMIx_Query_supportfunction where a user can ask:- Is this function supported?
- If function is supported, is this attribute or combination of attributes supported by this function?
- If function and attribute set is supported, are there any limitations on requests (e.g., memory limits on job allocation requests) that can be made?
- Do we need a broader range of "not supported" error codes to distinguish between these cases (e.g.,
NOT_SUPPORTED,NOT_SUPPORTED_ATTRIBUTE,NOT_SUPPORTED_ATTRIBUTE_SET, ``NOT_SUPPORTED_REQUEST`) - Is a
PMIx_Query_supportfunction even useful for an application, or is the error code at the call site (or callback) enough? - Do we need a
perror-like interface for the PMIx implementation to return a string explaining the reason why it returned "not supported"?
Below are some error codes that could be used/extended.
#define PMIX_ERR_SERVER_FAILED_REQUEST -10
#define PMIX_ERR_BAD_PARAM -27
#define PMIX_ERR_NOT_SUPPORTED -47
#define PMIX_ERR_NOT_IMPLEMENTED -48
Note that any info key can be marked a PMIX_INFO_REQUIRED(m) which means that the PMIx implementation must return an error if does not support that attribute, instead of possibly ignoring it.