[CDRIVER-1144] Implement SDAM Monitoring spec Created: 07/Mar/16  Updated: 31/Aug/18  Resolved: 02/Sep/16

Status: Closed
Project: C Driver
Component/s: libmongoc
Affects Version/s: None
Fix Version/s: 1.5.0

Type: Task Priority: Major - P3
Reporter: Rathi Gnanasekaran Assignee: A. Jesse Jiryu Davis
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by DRIVERS-296 Implement SDAM Monitoring spec Closed
is depended on by PHPC-618 Implement SDAM Monitoring spec Closed
Related
related to CDRIVER-2298 /TopologyDescription/readable_writabl... Closed
is related to CDRIVER-2811 Heartbeat succeeded/failed events hav... Closed

 Description   

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.



 Comments   
Comment by Githook User [ 11/Oct/16 ]

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

Comment by Githook User [ 02/Sep/16 ]

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

Comment by Githook User [ 02/Sep/16 ]

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

Comment by Hannes Magnusson [ 01/Sep/16 ]

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)

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Githook User [ 01/Sep/16 ]

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

Comment by Hannes Magnusson [ 31/Aug/16 ]

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

Comment by Githook User [ 30/Aug/16 ]

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

Comment by Githook User [ 29/Aug/16 ]

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

Comment by Githook User [ 24/Aug/16 ]

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.