Skip to content

Commit a967e8e

Browse files
committed
CDRIVER-745 test cluster node destroy, then disconnect
Verifies mongoc_cluster_node_t's "tags" document is properly reinitialized in _mongoc_cluster_node_destroy.
1 parent 6f18211 commit a967e8e

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

src/mongoc/mongoc-cluster-private.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ bool _mongoc_cluster_command_early (mongoc_cluster_t
143143
const bson_t *command,
144144
bson_t *reply,
145145
bson_error_t *error);
146+
void _mongoc_cluster_node_destroy (mongoc_cluster_node_t *node);
146147
void _mongoc_cluster_disconnect_node (mongoc_cluster_t *cluster,
147148
mongoc_cluster_node_t *node);
148149
bool _mongoc_cluster_reconnect (mongoc_cluster_t *cluster,

src/mongoc/mongoc-cluster.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ _mongoc_cluster_node_track_ping (mongoc_cluster_node_t *node,
315315
*--------------------------------------------------------------------------
316316
*/
317317

318-
static void
318+
void
319319
_mongoc_cluster_node_destroy (mongoc_cluster_node_t *node)
320320
{
321321
ENTRY;

tests/test-mongoc-cluster.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,31 @@ test_mongoc_cluster_basic (void)
231231
}
232232

233233

234+
static void
235+
test_mongoc_cluster_destroy_disconnect (void)
236+
{
237+
mongoc_client_t *client;
238+
bson_error_t error;
239+
mongoc_cluster_t *cluster;
240+
mongoc_cluster_node_t *node;
241+
242+
client = test_framework_client_new (NULL);
243+
assert (_mongoc_client_warm_up (client, &error));
244+
cluster = &client->cluster;
245+
ASSERT_CMPINT (cluster->nodes_len, >=, 1);
246+
node = &cluster->nodes[0];
247+
_mongoc_cluster_node_destroy (node);
248+
249+
/* no segfaults */
250+
_mongoc_cluster_disconnect_node (cluster, node);
251+
mongoc_client_destroy (client);
252+
}
253+
254+
234255
void
235256
test_cluster_install (TestSuite *suite)
236257
{
237258
TestSuite_Add (suite, "/Cluster/basic", test_mongoc_cluster_basic);
259+
TestSuite_Add (suite, "/Cluster/node_destroy_disconnect",
260+
test_mongoc_cluster_destroy_disconnect);
238261
}

0 commit comments

Comments
 (0)