Skip to content

Commit 70c36ac

Browse files
committed
CDRIVER-1685 add trace output for server selection
1 parent 230bb5c commit 70c36ac

File tree

4 files changed

+42
-6
lines changed

4 files changed

+42
-6
lines changed

src/mongoc/mongoc-read-prefs-private.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ typedef struct _mongoc_apply_read_prefs_result_t {
4646

4747
#define READ_PREFS_RESULT_INIT { NULL, false, MONGOC_QUERY_NONE }
4848

49+
const char *
50+
_mongoc_read_mode_as_str (mongoc_read_mode_t mode);
51+
4952
void
5053
apply_read_preferences (const mongoc_read_prefs_t *read_prefs,
5154
const mongoc_server_stream_t *server_stream,

src/mongoc/mongoc-read-prefs.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ mongoc_read_prefs_copy (const mongoc_read_prefs_t *read_prefs)
164164
}
165165

166166

167-
static const char *
168-
_get_read_mode_string (mongoc_read_mode_t mode)
167+
const char *
168+
_mongoc_read_mode_as_str (mongoc_read_mode_t mode)
169169
{
170170
switch (mode) {
171171
case MONGOC_READ_PRIMARY:
@@ -246,7 +246,7 @@ _apply_read_preferences_mongos (const mongoc_read_prefs_t *read_prefs,
246246

247247
bson_append_document_begin (result->query_with_read_prefs,
248248
"$readPreference", 15, &child);
249-
mode_str = _get_read_mode_string (mode);
249+
mode_str = _mongoc_read_mode_as_str (mode);
250250
bson_append_utf8 (&child, "mode", 4, mode_str, -1);
251251
if (!bson_empty0 (tags)) {
252252
bson_append_array (&child, "tags", 4, tags);

src/mongoc/mongoc-server-description.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,7 @@ mongoc_server_description_filter_stale (mongoc_server_description_t **sds,
695695
heartbeat_frequency_ms * 1000;
696696

697697
if (staleness_usec > max_staleness_ms * 1000) {
698+
TRACE ("Rejected stale RSSecondary [%s]", sds[i]->host.host_and_port);
698699
sds[i] = NULL;
699700
}
700701
}
@@ -721,6 +722,7 @@ mongoc_server_description_filter_stale (mongoc_server_description_t **sds,
721722
heartbeat_frequency_ms;
722723

723724
if (staleness_ms > max_staleness_ms) {
725+
TRACE ("Rejected stale RSSecondary [%s]", sds[i]->host.host_and_port);
724726
sds[i] = NULL;
725727
}
726728
}
@@ -789,6 +791,10 @@ mongoc_server_description_filter_tags (mongoc_server_description_t **description
789791
if (found) {
790792
for (i = 0; i < description_len; i++) {
791793
if (! sd_matched[i]) {
794+
TRACE ("Rejected [%s] [%s], doesn't match tags",
795+
mongoc_server_description_type (descriptions[i]),
796+
descriptions[i]->host.host_and_port);
797+
792798
descriptions[i] = NULL;
793799
}
794800
}
@@ -800,6 +806,10 @@ mongoc_server_description_filter_tags (mongoc_server_description_t **description
800806
/* tried each */
801807
for (i = 0; i < description_len; i++) {
802808
if (! sd_matched[i]) {
809+
TRACE ("Rejected [%s] [%s], reached end of tags array without match",
810+
mongoc_server_description_type (descriptions[i]),
811+
descriptions[i]->host.host_and_port);
812+
803813
descriptions[i] = NULL;
804814
}
805815
}

src/mongoc/mongoc-topology-description.c

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "mongoc-topology-description-apm-private.h"
2121
#include "mongoc-trace-private.h"
2222
#include "mongoc-util-private.h"
23+
#include "mongoc-read-prefs-private.h"
2324

2425

2526
static void
@@ -365,7 +366,13 @@ _mongoc_replica_set_read_suitable_cb (void *item,
365366

366367
/* add to our candidates */
367368
data->candidates[data->candidates_len++] = server;
369+
} else {
370+
TRACE ("Rejected [%s] [%s] for mode [%s]",
371+
mongoc_server_description_type (server),
372+
server->host.host_and_port,
373+
_mongoc_read_mode_as_str (data->read_mode));
368374
}
375+
369376
return true;
370377
}
371378

@@ -529,6 +536,10 @@ mongoc_topology_description_suitable_servers (mongoc_array_t *set
529536
server = (mongoc_server_description_t *)mongoc_set_get_item (topology->servers, 0);
530537
if (_mongoc_topology_description_server_is_candidate (server->type, read_mode, topology->type)) {
531538
_mongoc_array_append_val (set, server);
539+
} else {
540+
TRACE ("Rejected [%s] [%s] for read mode [%s] with topology type Single",
541+
mongoc_server_description_type (server),
542+
server->host.host_and_port, _mongoc_read_mode_as_str (read_mode));
532543
}
533544
goto DONE;
534545
}
@@ -574,6 +585,10 @@ mongoc_topology_description_suitable_servers (mongoc_array_t *set
574585
for (i = 0; i < data.candidates_len; i++) {
575586
if (candidates[i] &&
576587
candidates[i]->type != MONGOC_SERVER_RS_SECONDARY) {
588+
TRACE ("Rejected [%s] [%s] for mode [%s] with RS topology",
589+
mongoc_server_description_type (candidates[i]),
590+
candidates[i]->host.host_and_port,
591+
_mongoc_read_mode_as_str (read_mode));
577592
candidates[i] = NULL;
578593
}
579594
}
@@ -670,7 +685,8 @@ mongoc_topology_description_select (mongoc_topology_description_t *topology,
670685

671686
if (!topology->compatible) {
672687
/* TODO: check this in mongoc_topology_compatible (), CDRIVER-689 */
673-
RETURN(NULL);
688+
TRACE ("%s", "Incompatible topology");
689+
RETURN (NULL);
674690
}
675691

676692
if (topology->type == MONGOC_TOPOLOGY_SINGLE) {
@@ -679,7 +695,8 @@ mongoc_topology_description_select (mongoc_topology_description_t *topology,
679695
if (sd->has_is_master) {
680696
RETURN(sd);
681697
} else {
682-
RETURN(NULL);
698+
TRACE ("Topology type single, [%s] is down", sd->host.host_and_port);
699+
RETURN (NULL);
683700
}
684701
}
685702

@@ -695,7 +712,13 @@ mongoc_topology_description_select (mongoc_topology_description_t *topology,
695712

696713
_mongoc_array_destroy (&suitable_servers);
697714

698-
RETURN(sd);
715+
if (sd) {
716+
TRACE ("Topology type [%s], selected [%s] [%s]",
717+
mongoc_topology_description_type (topology),
718+
mongoc_server_description_type (sd), sd->host.host_and_port);
719+
}
720+
721+
RETURN (sd);
699722
}
700723

701724
/*

0 commit comments

Comments
 (0)