Skip to content

Commit 2a9981b

Browse files
bjoriderickr
authored andcommitted
PHPC-488: Manager::selectServer() should throw when failing to select a server
1 parent 5f20d16 commit 2a9981b

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/MongoDB/Manager.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,8 @@ PHP_METHOD(Manager, selectServer)
256256
php_phongo_manager_t *intern;
257257
zval *zreadPreference = NULL;
258258
const mongoc_read_prefs_t *readPreference;
259-
uint32_t server_id;
259+
bson_error_t error;
260+
mongoc_server_description_t *selected_server = NULL;
260261
(void)return_value_ptr; (void)return_value_used;
261262

262263

@@ -267,8 +268,12 @@ PHP_METHOD(Manager, selectServer)
267268
}
268269

269270
readPreference = phongo_read_preference_from_zval(zreadPreference TSRMLS_CC);
270-
server_id = mongoc_cluster_preselect(&intern->client->cluster, MONGOC_OPCODE_QUERY, readPreference, NULL);
271-
phongo_server_init(return_value, intern->client, server_id TSRMLS_CC);
271+
selected_server = mongoc_topology_select(intern->client->topology, MONGOC_SS_READ, readPreference, MONGOC_SS_DEFAULT_LOCAL_THRESHOLD_MS, &error);
272+
if (selected_server) {
273+
phongo_server_init(return_value, intern->client, selected_server->id TSRMLS_CC);
274+
} else {
275+
phongo_throw_exception(PHONGO_ERROR_RUNTIME TSRMLS_CC, "%s", error.message);
276+
}
272277
}
273278
/* }}} */
274279
/* {{{ proto void MongoDB\Driver\Manager::__wakeUp()

0 commit comments

Comments
 (0)