|
An enhancement to the APM implementation.
Here's how to get started. First, understand how I did the Command Monitoring implementation (CDRIVER-769), which is a precursor to this feature and has a very similar implementation to this one.
Now read https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring-monitoring.rst
Now do similar work for SDAM Monitoring. Add to mongoc-apm.h and .c:
- Events: mongoc_apm_server_changed_t, mongoc_apm_server_opening_t, mongoc_apm_server_closed_t, mongoc_apm_topology_changed_t, mongoc_apm_topology_opening_t, mongoc_apm_topology_closed_t, mongoc_apm_server_heartbeat_started_t, mongoc_apm_server_heartbeat_succeeded_t, mongoc_apm_server_heartbeat_failed_t.
- Make event-field accessors for these 9 event structs: mongoc_apm_server_changed_get_address and so on. About 20 functions in all.
- Typedef the 9 callback function pointer types: mongoc_apm_server_changed_cb_t, mongoc_apm_server_opening_cb_t, mongoc_apm_server_closed_cb_t, mongoc_apm_cb_topology_changed_cb_t, mongoc_apm_cb_topology_opening_cb_t, mongoc_apm_cb_topology_closed_cb_t, mongoc_apm_server_heartbeat_started_cb_t, mongoc_apm_server_heartbeat_succeeded_cb_t, mongoc_apm_server_heartbeat_failed_cb_t
- Add 9 function pointers to _mongoc_apm_callbacks_t: _mongoc_apm_callbacks_t.server_changed, etc.
- Make 9 callback registrar functions: mongoc_apm_set_server_changed_cb, etc.
- Add mongoc_apm_callbacks_t* apm_callbacks field to topology description and server description.
Start testing and implementing the events.
- Adapt test-mongoc-command-monitoring.c for the SDAM Monitoring events.
- Copy the JSON tests from the specs repo.
- Disable all test asserts except for mongoc_apm_server_changed_t, then implement that event in mongoc_server_description_handle_ismaster?
- Enable test asserts for mongoc_apm_server_opening_t, implement in mongoc_topology_description_add_server.
- Enable test asserts for mongoc_apm_server_closed_t, implement in _mongoc_topology_description_remove_server.
- Enable test asserts for mongoc_apm_topology_changed_t, implement at the end of _mongoc_topology_scanner_cb?
- Enable test asserts for mongoc_apm_topology_opening_t, implement in mongoc_topology_description_init.
- Enable test asserts for mongoc_apm_topology_closed_t, implement in mongoc_topology_description_destroy.
- Enable test asserts for mongoc_apm_server_heartbeat_started_t, implement in new function mongoc_server_description_heartbeat_started, called from mongoc_topology_scanner_node_setup?
- Enable test asserts for mongoc_apm_server_heartbeat_succeeded_t, implement in mongoc_server_description_handle_ismaster.
- Enable test asserts for mongoc_apm_server_heartbeat_failed_t, implement in mongoc_server_description_handle_ismaster.
Finally, update application-performance-monitoring.page with an SDAM Monitoring example.
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 fix heartbeat started event
We had been skipping the second and later heartbeat started events as
long as the monitoring connection stayed open.
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/b855c82daa87fd661776a48c622a907c41ba916d
|
|
Author:
{u'username': u'bjori', u'name': u'Hannes Magnusson', u'email': u'bjori@php.net'}
Message: CDRIVER-1144 ignore new example program
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/e5d688cc91a8f7858c8de15be3469c71d4cb711d
|
|
Author:
{u'username': u'bjori', u'name': u'Hannes Magnusson', u'email': u'bjori@php.net'}
Message: CDRIVER-1144 Export new APM symbols
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/d4ac73aedb56d35c476711425ba0ad0cae5963aa
|
|
ba02534c5c7db7706d70e3ce16974d8487573668 introduced this failure:
https://evergreen.mongodb.com/task/mongo_c_driver_windows_2013_debug_compile_sasl_nossl_ba02534c5c7db7706d70e3ce16974d8487573668_16_09_01_22_37_31
|
[2016/09/01 15:42:42.731] "C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\ALL_BUILD.vcxproj" (default target) (1) ->
|
[2016/09/01 15:42:42.731] "C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj" (default target) (13) ->
|
[2016/09/01 15:42:42.731] (Link target) ->
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_server_changed_get_context referenced in function server_changed [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_server_opening_get_context referenced in function server_opening [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_server_closed_get_context referenced in function server_closed [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_topology_changed_get_context referenced in function topology_changed [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_topology_opening_get_context referenced in function topology_opening [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_topology_closed_get_context referenced in function topology_closed [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_server_heartbeat_started_get_context referenced in function server_heartbeat_started [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_server_heartbeat_succeeded_get_context referenced in function server_heartbeat_succeeded [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_server_heartbeat_failed_get_context referenced in function server_heartbeat_failed [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_server_changed_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_server_opening_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_server_closed_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_topology_changed_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_topology_opening_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_topology_closed_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_server_heartbeat_started_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_server_heartbeat_succeeded_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] example-sdam-monitoring.obj : error LNK2019: unresolved external symbol mongoc_apm_set_server_heartbeat_failed_cb referenced in function main [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731] C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\Debug\example-sdam-monitoring.exe : fatal error LNK1120: 18 unresolved externals [C:\data\mci\d0bd04a6c8932a80a71c7625a5b9d2a9\mongoc\example-sdam-monitoring.vcxproj]
|
[2016/09/01 15:42:42.731]
|
[2016/09/01 15:42:42.731] 114 Warning(s)
|
[2016/09/01 15:42:42.731] 19 Error(s)
|
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 add SDAM monitoring example
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/ba02534c5c7db7706d70e3ce16974d8487573668
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 complete the heartbeat events
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/fa79b2d147839131ef356b43b322d8539ee61b46
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 add topology description getters
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/e5f5551411f9b0f98f7246aee7ccbf4a61068a5e
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 heartbeat events
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/8b6c9380ab86ebd4d519640fd94bfddc6e2150cc
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 move topology-closed event trigger
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/52fbb14e13cc90523c004b3c38746b84ec53bb7e
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 add mongoc_topology_set_apm_callbacks
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/328dd351176e2c29b772904ed65b092b0916ae7e
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 unused variables in test
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/fea9bd60a9bce553aac4028bf878736fd1a4e84e
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 monitoring tests require live server
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/8d90867ef523ae644e6105380c68760da13cdb47
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 fix SDAM Monitoring JSON tests
Same as:
https://github.com/mongodb/specifications/pull/106
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/3ce004f354b2873f54758811bd4233f9980af875
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 SDAM monitoring, part 1
Server and Topology events, but not yet heartbeat events.
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/ca0c651e2379ed30c527a4bd4f16c0fc150a55ab
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 refactor APM tests
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/9af7390a02925aa7557e67b8e87f1f0fe6c3fca5
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 topology fields for monitoring
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/98d013e4841436324441a4aecfde0d0a1da51416
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 refactor set_apm_callbacks
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/641d3607e2b97f4b472fbcf886fd2b0e48b3b906
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 context pointer for SDAM events
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/60346c60f08f17017b81ab6bf77a3a475f79d99b
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 SDAM monitoring spec tests
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/f2a1067221eb047b151f22a9fadd6a1325d278f8
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 factor SDAM spec tests
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/a782bfd97f3981e00a8813f46008dc7435cfdfd9
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 make APM docs consistent
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/da04747925a13e384ab196c6008f0014c6887496
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 distribute mongoc-topology-description.h
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/6cf908d6f8f594e8b1de3fb7d4a7b1f5c5bd367e
|
|
Running make distcheck is failing now:
CC src/mongoc/libmongoc_1_0_la-mongoc-apm.lo
|
In file included from ../../src/mongoc/mongoc-apm-private.h:25:0,
|
from ../../src/mongoc/mongoc-apm.c:17:
|
../../src/mongoc/mongoc-apm.h:27:41: fatal error: mongoc-topology-description.h: No such file or directory
|
compilation terminated.
|
Makefile:3142: recipe for target 'src/mongoc/libmongoc_1_0_la-mongoc-apm.lo' failed
|
make[2]: *** [src/mongoc/libmongoc_1_0_la-mongoc-apm.lo] Error 1
|
make[2]: Leaving directory '/home/bjori/Sources/mongoc/mongo-c-driver-1.5.0-dev/_build/sub'
|
Makefile:5588: recipe for target 'all-recursive' failed
|
make[1]: *** [all-recursive] Error 1
|
make[1]: Leaving directory '/home/bjori/Sources/mongoc/mongo-c-driver-1.5.0-dev/_build/sub'
|
Makefile:5797: recipe for target 'distcheck' failed
|
make: *** [distcheck] Error 1
|
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 declare SDAM monitoring events
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/54fe15f2813cfc66d6031650b8b0d074c24651e7
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 public topology description functions
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/023f38b0f5a54022b761a8af85f7572922846e74
|
|
Author:
{u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}
Message: CDRIVER-1144 add heartbeat to topology description
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/771ca075fb9ea6b73674939ee7f6c69225a88b97
|
Generated at Wed Feb 07 21:11:42 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.