Skip to content

Commit 4e69ea4

Browse files
authored
PHPC-2032: Concise debug output for ended sessions (#1295)
1 parent 83521ad commit 4e69ea4

File tree

2 files changed

+20
-60
lines changed

2 files changed

+20
-60
lines changed

src/MongoDB/Session.c

Lines changed: 18 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -712,28 +712,28 @@ static HashTable* php_phongo_session_get_debug_info(phongo_compat_object_handler
712712

713713
array_init(&retval);
714714

715-
if (intern->client_session) {
716-
const bson_t* lsid;
715+
if (!intern->client_session) {
716+
ADD_ASSOC_BOOL_EX(&retval, "ended", true);
717+
718+
goto done;
719+
}
720+
721+
{
722+
const bson_t* lsid = mongoc_client_session_get_lsid(intern->client_session);
717723
php_phongo_bson_state state;
718724

719725
PHONGO_BSON_INIT_DEBUG_STATE(state);
720726

721-
lsid = mongoc_client_session_get_lsid(intern->client_session);
722-
723727
if (!php_phongo_bson_to_zval_ex(bson_get_data(lsid), lsid->len, &state)) {
724728
zval_ptr_dtor(&state.zchild);
725729
goto done;
726730
}
727731

728732
ADD_ASSOC_ZVAL_EX(&retval, "logicalSessionId", &state.zchild);
729-
} else {
730-
ADD_ASSOC_NULL_EX(&retval, "logicalSessionId");
731733
}
732734

733-
if (intern->client_session) {
734-
const bson_t* cluster_time;
735-
736-
cluster_time = mongoc_client_session_get_cluster_time(intern->client_session);
735+
{
736+
const bson_t* cluster_time = mongoc_client_session_get_cluster_time(intern->client_session);
737737

738738
if (cluster_time) {
739739
php_phongo_bson_state state;
@@ -749,20 +749,15 @@ static HashTable* php_phongo_session_get_debug_info(phongo_compat_object_handler
749749
} else {
750750
ADD_ASSOC_NULL_EX(&retval, "clusterTime");
751751
}
752-
} else {
753-
ADD_ASSOC_NULL_EX(&retval, "clusterTime");
754752
}
755753

756-
if (intern->client_session) {
754+
{
757755
const mongoc_session_opt_t* cs_opts = mongoc_client_session_get_opts(intern->client_session);
758756
ADD_ASSOC_BOOL_EX(&retval, "causalConsistency", mongoc_session_opts_get_causal_consistency(cs_opts));
759757
ADD_ASSOC_BOOL_EX(&retval, "snapshot", mongoc_session_opts_get_snapshot(cs_opts));
760-
} else {
761-
ADD_ASSOC_NULL_EX(&retval, "causalConsistency");
762-
ADD_ASSOC_NULL_EX(&retval, "snapshot");
763758
}
764759

765-
if (intern->client_session) {
760+
{
766761
uint32_t timestamp, increment;
767762

768763
mongoc_client_session_get_operation_time(intern->client_session, &timestamp, &increment);
@@ -775,39 +770,25 @@ static HashTable* php_phongo_session_get_debug_info(phongo_compat_object_handler
775770
} else {
776771
ADD_ASSOC_NULL_EX(&retval, "operationTime");
777772
}
778-
} else {
779-
ADD_ASSOC_NULL_EX(&retval, "operationTime");
780773
}
781774

782-
if (intern->client_session) {
775+
{
783776
uint32_t server_id = mongoc_client_session_get_server_id(intern->client_session);
784777

785778
if (server_id) {
786-
787779
zval server;
788780

789781
phongo_server_init(&server, &intern->manager, server_id);
790782
ADD_ASSOC_ZVAL_EX(&retval, "server", &server);
791783
} else {
792784
ADD_ASSOC_NULL_EX(&retval, "server");
793785
}
794-
} else {
795-
ADD_ASSOC_NULL_EX(&retval, "server");
796786
}
797787

798-
if (intern->client_session) {
799-
ADD_ASSOC_BOOL_EX(&retval, "dirty", mongoc_client_session_get_dirty(intern->client_session));
800-
} else {
801-
ADD_ASSOC_NULL_EX(&retval, "dirty");
802-
}
788+
ADD_ASSOC_BOOL_EX(&retval, "dirty", mongoc_client_session_get_dirty(intern->client_session));
789+
ADD_ASSOC_BOOL_EX(&retval, "inTransaction", mongoc_client_session_in_transaction(intern->client_session));
803790

804-
if (intern->client_session) {
805-
ADD_ASSOC_BOOL_EX(&retval, "inTransaction", mongoc_client_session_in_transaction(intern->client_session));
806-
} else {
807-
ADD_ASSOC_NULL_EX(&retval, "inTransaction");
808-
}
809-
810-
if (intern->client_session) {
791+
{
811792
const char* state = php_phongo_get_transaction_state_string(mongoc_client_session_get_transaction_state(intern->client_session));
812793

813794
if (!state) {
@@ -816,16 +797,13 @@ static HashTable* php_phongo_session_get_debug_info(phongo_compat_object_handler
816797
}
817798

818799
ADD_ASSOC_STRING(&retval, "transactionState", state);
819-
} else {
820-
ADD_ASSOC_NULL_EX(&retval, "transactionState");
821800
}
822801

823-
if (intern->client_session) {
802+
{
824803
zval txn_opts;
804+
825805
php_phongo_transaction_options_to_zval(intern->client_session, &txn_opts);
826806
ADD_ASSOC_ZVAL_EX(&retval, "transactionOptions", &txn_opts);
827-
} else {
828-
ADD_ASSOC_NULL_EX(&retval, "transactionOptions");
829807
}
830808

831809
done:

tests/session/session-debug-004.phpt

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,7 @@ var_dump($session);
2424
<?php exit(0); ?>
2525
--EXPECTF--
2626
object(MongoDB\Driver\Session)#%d (%d) {
27-
["logicalSessionId"]=>
28-
NULL
29-
["clusterTime"]=>
30-
NULL
31-
["causalConsistency"]=>
32-
NULL
33-
["snapshot"]=>
34-
NULL
35-
["operationTime"]=>
36-
NULL
37-
["server"]=>
38-
NULL
39-
["dirty"]=>
40-
NULL
41-
["inTransaction"]=>
42-
NULL
43-
["transactionState"]=>
44-
NULL
45-
["transactionOptions"]=>
46-
NULL
27+
["ended"]=>
28+
bool(true)
4729
}
4830
===DONE===

0 commit comments

Comments
 (0)