Skip to content

Management/Communication of Not Supported operations. #6

@jjhursey

Description

@jjhursey

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_SUPPORTED supposed 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_support function 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_support function 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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions