Conversation
8c8dcf5 to
e83c6b7
Compare
|
@mergify backport main foxy |
🟠 Waiting for conditions to matchDetails
Hey, I reacted but my real name is @Mergifyio |
As a user, I'd like to be able to enable some error callbacks and use them. i.e. static memory, but perhaps in the future, there could be also other interesting errors I'd like to get a callback when triggered. To be able to i.e. push them over diagnostics.
Any specific use case? For it to have different structs (i.e. per entity)?
Maybe I'm wrong, but wouldn't it be possible to make the callback global and pass the id of the entity who triggered it as an argument to the user. ! callback per entity seems like it will bloat the code.
I don't know about this, I think that if I'd like to debug, then I can attach a debugger. This is mostly to escalate a run-time warning.
I think it'd be preferable for this functionality to be optional. Lastly, yet important, I think that it should be error code-based rather than string comparisons sent to the user. |
Agree. I'm going to make this generic not only for the memory errors.
No specific use case. I guess that if this is a global callback, maybe it does not need context or args.
Sure, let pass the error context as callback arguments.
Sure.
+1 |
Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
dc64011 to
5a12fc4
Compare
Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
Static memory analysisDefault configuration MTU: 512 B
TOTAL: 34468 B |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## galactic #212 +/- ##
===========================================
Coverage ? 49.39%
===========================================
Files ? 43
Lines ? 1660
Branches ? 478
===========================================
Hits ? 820
Misses ? 617
Partials ? 223 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Two macros are included in the RMW codebase: Both of them will print a message using An entity can be: typedef enum
{
RMW_UROS_ERROR_ON_UNKNOWN = 0,
RMW_UROS_ERROR_ON_NODE,
RMW_UROS_ERROR_ON_SERVICE,
RMW_UROS_ERROR_ON_CLIENT,
RMW_UROS_ERROR_ON_SUBSCRIPTION,
RMW_UROS_ERROR_ON_PUBLISHER,
RMW_UROS_ERROR_ON_GRAPH,
RMW_UROS_ERROR_ON_GUARD_CONDITION,
RMW_UROS_ERROR_ON_TOPIC
} rmw_uros_error_entity_type_t;in the case of the basic An source can be: typedef enum
{
RMW_UROS_ERROR_ENTITY_CREATION = 0,
RMW_UROS_ERROR_ENTITY_DESTRUCTION,
RMW_UROS_ERROR_CHECK,
RMW_UROS_ERROR_NOT_IMPLEMENTED,
RMW_UROS_ERROR_MIDDLEWARE_ALLOCATION,
} rmw_uros_error_source_t;in the case of the basic When using typedef struct
{
const char * node;
const char * namespace;
const char * topic_name;
const ucdrBuffer * ucdr;
const size_t size;
union {
const message_type_support_callbacks_t * message_callbacks;
const service_type_support_callbacks_t * service_callbacks;
} type_support;
const char * description;
} rmw_uros_error_context_t;in the case of the basic Additionally, the callback will receive Thoughts @bjv-capra @Acuadros95? |
|
Overall, I think it's really well aligned with what we discussed.
|
Basically, I have replaced
In general you should expect the error to be defined by |
|
In such a case, everything seems to be addressed. It'll be a matter of testing to be able to provide better feedback. But we'll wait until it's merged to start using it. |
|
Please re-review, regarding resetting the error. Why is the error being overwritten? @Acuadros95 |
Static memory analysisDefault configuration MTU: 512 B
TOTAL: 34468 B |
|
@pablogs9 The error string needs to be cleared manually, so the user can have access to it after a function fails. |
|
Ok, could you add the clearing line? |
|
Done |
Static memory analysisDefault configuration MTU: 512 B
TOTAL: 34468 B |
|
Ok, so LGTM, let's merge when you are done @Acuadros95 |
* Initial Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrus Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Refactor Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Remove include old error handler Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Client Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update rmw_microxrcedds_c/src/rmw_microros_internal/error_handling_internal.h Co-authored-by: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com> (cherry picked from commit 266248d)
|
@mergify backport foxy main |
* Initial Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrus Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Refactor Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Remove include old error handler Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Client Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update rmw_microxrcedds_c/src/rmw_microros_internal/error_handling_internal.h Co-authored-by: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com> (cherry picked from commit 266248d) # Conflicts: # rmw_microxrcedds_c/src/rmw_get_endpoint_network_flow.c # rmw_microxrcedds_c/src/rmw_qos_profile_check_compatible.c # rmw_microxrcedds_c/src/rmw_wait.c
✅ Backports have been createdDetails
|
✅ Backports have been createdDetails
Hey, I reacted but my real name is @Mergifyio |
* Initial Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrus Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Refactor Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Remove include old error handler Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Client Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update rmw_microxrcedds_c/src/rmw_microros_internal/error_handling_internal.h Co-authored-by: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com> (cherry picked from commit 266248d) Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
* Runtime error handling API (#212) * Initial Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Uncrus Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Refactor Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Remove include old error handler Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Client Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Uncrustify Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Fix Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update rmw_microxrcedds_c/src/rmw_microros_internal/error_handling_internal.h Co-authored-by: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com> (cherry picked from commit 266248d) # Conflicts: # rmw_microxrcedds_c/src/rmw_get_endpoint_network_flow.c # rmw_microxrcedds_c/src/rmw_qos_profile_check_compatible.c # rmw_microxrcedds_c/src/rmw_wait.c * Fix conflicts Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Revert "Fix conflicts" This reverts commit 1db99e0. * Fix conflicts Signed-off-by: Pablo Garrido <pablogs9@gmail.com> Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
This PR is a proposal for an API that allows the micro-ROS user to handle static memory errors such as the unavailability of static buffer for receiving new topic data.
This is implemented as a settable (through API) function pointer that is triggered when an error (not available memory) in middleware callbacks is found. A buffer pointer is provided with the topic data that is not going to be stored.
void * args?rcl_subscription).CC: @Acuadros95 @bjv-capra