Skip to content

Commit 5c54349

Browse files
UCP/EP: fix wire compatibility of ERR_MODE_FAILOVER
1 parent 46f0b4a commit 5c54349

File tree

3 files changed

+37
-21
lines changed

3 files changed

+37
-21
lines changed

src/ucp/core/ucp_ep.c

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ static int ucp_ep_shall_use_indirect_id(ucp_context_h context,
267267
return !(ep_init_flags & UCP_EP_INIT_FLAG_INTERNAL) &&
268268
((context->config.ext.proto_indirect_id == UCS_CONFIG_ON) ||
269269
((context->config.ext.proto_indirect_id == UCS_CONFIG_AUTO) &&
270-
(ep_init_flags & UCP_EP_INIT_ERR_MODE_PEER_FAILURE)));
270+
(ep_init_flags & UCP_EP_INIT_ERR_MODE_FAILOVER_MASK)));
271271
}
272272

273273
void ucp_ep_peer_mem_destroy(ucp_context_h context,
@@ -573,10 +573,10 @@ void ucp_ep_release_id(ucp_ep_h ep)
573573
void ucp_ep_config_key_set_err_mode(ucp_ep_config_key_t *key,
574574
unsigned ep_init_flags)
575575
{
576-
if (ep_init_flags & UCP_EP_INIT_ERR_MODE_PEER_FAILURE) {
577-
key->err_mode = UCP_ERR_HANDLING_MODE_PEER;
578-
} else if (ep_init_flags & UCP_EP_INIT_ERR_MODE_FAILOVER) {
576+
if (ep_init_flags & UCP_EP_INIT_ERR_MODE_FAILOVER) {
579577
key->err_mode = UCP_ERR_HANDLING_MODE_FAILOVER;
578+
} else if (ep_init_flags & UCP_EP_INIT_ERR_MODE_PEER_FAILURE) {
579+
key->err_mode = UCP_ERR_HANDLING_MODE_PEER;
580580
} else {
581581
key->err_mode = UCP_ERR_HANDLING_MODE_NONE;
582582
}
@@ -795,8 +795,7 @@ static ucs_status_t ucp_ep_init_create_wireup(ucp_ep_h ep,
795795
if (ucp_ep_init_flags_has_cm(ep_init_flags)) {
796796
key.cm_lane = 0;
797797
/* Send keepalive on wireup_ep (which will send on aux_ep) */
798-
if (ep_init_flags & (UCP_EP_INIT_ERR_MODE_PEER_FAILURE |
799-
UCP_EP_INIT_ERR_MODE_FAILOVER)) {
798+
if (ep_init_flags & UCP_EP_INIT_ERR_MODE_FAILOVER_MASK) {
800799
key.keepalive_lane = 0;
801800
}
802801
} else {
@@ -947,10 +946,15 @@ ucp_sa_data_v2_unpack(const ucp_wireup_sockaddr_data_base_t *sa_data,
947946
unsigned *ep_init_flags_p,
948947
const void** worker_addr_p)
949948
{
950-
*ep_init_flags_p = (sa_data->header & UCP_SA_DATA_FLAG_ERR_MODE_PEER) ?
951-
UCP_EP_INIT_ERR_MODE_PEER_FAILURE :
952-
(sa_data->header & UCP_SA_DATA_FLAG_ERR_MODE_FAILOVER) ?
953-
UCP_EP_INIT_ERR_MODE_FAILOVER : 0;
949+
if (sa_data->header & UCP_SA_DATA_FLAG_ERR_MODE_FAILOVER) {
950+
ucs_assert(sa_data->header & UCP_SA_DATA_FLAG_ERR_MODE_PEER);
951+
*ep_init_flags_p = UCP_EP_INIT_ERR_MODE_FAILOVER_MASK;
952+
} else if (sa_data->header & UCP_SA_DATA_FLAG_ERR_MODE_PEER) {
953+
*ep_init_flags_p = UCP_EP_INIT_ERR_MODE_PEER_FAILURE;
954+
} else {
955+
*ep_init_flags_p = 0;
956+
}
957+
954958
*worker_addr_p = sa_data + 1;
955959
return UCS_OK;
956960
}
@@ -1149,8 +1153,7 @@ ucp_ep_create_api_to_worker_addr(ucp_worker_h worker,
11491153
out_resolve_remote_id:
11501154
if ((context->config.ext.resolve_remote_ep_id == UCS_CONFIG_ON) ||
11511155
((context->config.ext.resolve_remote_ep_id == UCS_CONFIG_AUTO) &&
1152-
(ep_init_flags & (UCP_EP_INIT_ERR_MODE_PEER_FAILURE |
1153-
UCP_EP_INIT_ERR_MODE_FAILOVER)) &&
1156+
(ep_init_flags & UCP_EP_INIT_ERR_MODE_FAILOVER_MASK) &&
11541157
ucp_worker_keepalive_is_enabled(worker))) {
11551158
/* If resolving remote ID forced by configuration or PEER_FAILURE
11561159
* and keepalive were requested, resolve remote endpoint ID prior to
@@ -1511,10 +1514,8 @@ ucp_ep_set_failed(ucp_ep_h ucp_ep, ucp_lane_index_t lane, ucs_status_t status)
15111514
} else if (ep_ext->err_cb == NULL) {
15121515
/* Print error if user requested error handling support but did not
15131516
install a valid error handling callback */
1514-
log_level =
1515-
(ucp_ep_config_err_mode_eq(ucp_ep,
1516-
UCP_ERR_HANDLING_MODE_NONE)) ?
1517-
UCS_LOG_LEVEL_DIAG : UCS_LOG_LEVEL_ERROR;
1517+
log_level = ucp_ep_config_err_handling_enabled(ucp_ep) ?
1518+
UCS_LOG_LEVEL_ERROR : UCS_LOG_LEVEL_DIAG;
15181519

15191520
ucp_ep_get_lane_info_str(ucp_ep, lane, &lane_info_strb);
15201521
ucs_log(log_level,
@@ -3974,7 +3975,7 @@ unsigned ucp_ep_err_mode_init_flags(ucp_err_handling_mode_t err_mode)
39743975
case UCP_ERR_HANDLING_MODE_PEER:
39753976
return UCP_EP_INIT_ERR_MODE_PEER_FAILURE;
39763977
case UCP_ERR_HANDLING_MODE_FAILOVER:
3977-
return UCP_EP_INIT_ERR_MODE_FAILOVER;
3978+
return UCP_EP_INIT_ERR_MODE_FAILOVER_MASK;
39783979
default:
39793980
ucs_fatal("invalid error handling mode: %d", err_mode);
39803981
}

src/ucp/core/ucp_ep.h

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,14 @@ enum {
167167
keepalive lane */
168168
UCP_EP_INIT_ALLOW_AM_AUX_TL = UCS_BIT(10), /**< Endpoint allows selecting of auxiliary
169169
transports for AM lane */
170-
UCP_EP_INIT_ERR_MODE_FAILOVER = UCS_BIT(11) /**< Endpoint requires an
170+
UCP_EP_INIT_ERR_MODE_FAILOVER = UCS_BIT(11), /**< Endpoint requires an
171171
@ref UCP_ERR_HANDLING_MODE_FAILOVER */
172+
173+
/**
174+
* For consistency with @ref UCP_SA_DATA_MASK_ERR_MODE_FAILOVER
175+
*/
176+
UCP_EP_INIT_ERR_MODE_FAILOVER_MASK = UCP_EP_INIT_ERR_MODE_PEER_FAILURE |
177+
UCP_EP_INIT_ERR_MODE_FAILOVER
172178
};
173179

174180

@@ -621,8 +627,17 @@ enum {
621627
enum {
622628
/* Indicates support of @ref UCP_ERR_HANDLING_MODE_PEER error mode. */
623629
UCP_SA_DATA_FLAG_ERR_MODE_PEER = UCS_BIT(0),
624-
/* Indicates support of @ref UCP_ERR_HANDLING_MODE_FAILOVER error mode. */
625-
UCP_SA_DATA_FLAG_ERR_MODE_FAILOVER = UCS_BIT(1)
630+
/* Indicates support of @ref UCP_ERR_HANDLING_MODE_FAILOVER error mode.
631+
* NOTE: use @ref UCP_SA_DATA_MASK_ERR_MODE_FAILOVER for backward
632+
* compatibility to fallback peer failure mode to
633+
* @ref UCP_ERR_HANDLING_MODE_PEER */
634+
UCP_SA_DATA_FLAG_ERR_MODE_FAILOVER = UCS_BIT(1),
635+
636+
/**
637+
* Backward compatibility mask
638+
*/
639+
UCP_SA_DATA_MASK_ERR_MODE_FAILOVER = UCP_SA_DATA_FLAG_ERR_MODE_PEER |
640+
UCP_SA_DATA_FLAG_ERR_MODE_FAILOVER
626641
};
627642

628643

src/ucp/wireup/wireup_cm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ ucp_cm_ep_sa_data_pack(ucp_ep_h ep, ucp_wireup_sockaddr_data_base_t *sa_data,
266266
if (ucp_ep_config_err_mode_eq(ep, UCP_ERR_HANDLING_MODE_PEER)) {
267267
sa_data->header |= UCP_SA_DATA_FLAG_ERR_MODE_PEER;
268268
} else if (ucp_ep_config_err_mode_eq(ep, UCP_ERR_HANDLING_MODE_FAILOVER)) {
269-
sa_data->header |= UCP_SA_DATA_FLAG_ERR_MODE_FAILOVER;
269+
sa_data->header |= UCP_SA_DATA_MASK_ERR_MODE_FAILOVER;
270270
}
271271

272272
return sa_data + 1;

0 commit comments

Comments
 (0)