Test tag user callback with discarded return #267
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We were recently inquired by a user whether relying only on the
ucs_status_t
passed to the user callback and discarding theucxx::RequestTag
return fromucxx::Endpoint::tagSend
anducxx::Endpoint::tagRecv
is valid. This turns out to be a valid usage, although I'm unsure whether encouraging this is a good idea, since requests such asucxx::Endpoint::amRecv
require that the user retrieve the resulting buffer from the returneducxx::RequestAm
, and if this is discarded the buffer is lost. This PR adds a test for the aforementioned use case but makes no changes to documentation to prevent encouraging this pattern until we can decide whether we should support it or not.For requests such as
ucxx::Endpoint::amRecv
, it might be worth studying whether we could pass the resulting buffer and any other attributes associated with it to the callback, in that case we may be able to provide a safe pattern to always use the callback if the user doesn't want to keep a reference to the returneducxx::Request
object.