Skip to content

Commit f9b2149

Browse files
committed
CDRIVER-748 fix TSAN for topology tests
1 parent 867e24c commit f9b2149

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/libmongoc/tests/test-mongoc-topology-description.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@ _test_has_readable_writable_server (bool pooled)
1919
mongoc_read_prefs_t *prefs;
2020
bool r;
2121
bson_error_t error;
22+
mongoc_topology_t *topology;
2223

2324
if (pooled) {
2425
pool = test_framework_client_pool_new ();
25-
td = &_mongoc_client_pool_get_topology (pool)->description;
26+
topology = _mongoc_client_pool_get_topology (pool);
27+
td = &topology->description;
2628
} else {
2729
client = test_framework_client_new ();
2830
td = &client->topology->description;
31+
topology = client->topology;
2932
}
3033

3134
prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
@@ -45,15 +48,21 @@ _test_has_readable_writable_server (bool pooled)
4548
client, "admin", tmp_bson ("{'ping': 1}"), NULL, NULL, &error);
4649
ASSERT_OR_PRINT (r, error);
4750

51+
bson_mutex_lock (&topology->mutex);
4852
ASSERT (mongoc_topology_description_has_writable_server (td));
4953
ASSERT (mongoc_topology_description_has_readable_server (td, NULL));
54+
bson_mutex_unlock (&topology->mutex);
5055

5156
if (test_framework_is_replset ()) {
5257
/* prefs still don't match any server */
58+
bson_mutex_lock (&topology->mutex);
5359
ASSERT (!mongoc_topology_description_has_readable_server (td, prefs));
60+
bson_mutex_unlock (&topology->mutex);
5461
} else {
5562
/* topology type single ignores read preference */
63+
bson_mutex_lock (&topology->mutex);
5664
ASSERT (mongoc_topology_description_has_readable_server (td, prefs));
65+
bson_mutex_unlock (&topology->mutex);
5766
}
5867

5968
mongoc_read_prefs_destroy (prefs);

0 commit comments

Comments
 (0)