Uploaded image for project: 'Drivers'
  1. Drivers
  2. DRIVERS-1204

Easier debugging with standardized logging

    • Type: Icon: Epic Epic
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Component/s: Logging
    • Hide
      • Implement logging infrastructure and unified test runners defined in DRIVERS-1677
      • Implement log messages and corresponding tests for each component
      Show
      Implement logging infrastructure and unified test runners defined in DRIVERS-1677 Implement log messages and corresponding tests for each component
    • To Do
    • Easier debugging with standardized logging
    • 8
    • 12
    • 16
    • Hide

      Engineer: Isabel Atkinson/Boris Dogadov
      Summary: The goal of this project is to define a default set of debug logging messages that drivers should produce, and a standardized, trivial mechanism drivers should support for enabling, disabling, and configuring debug logging.

      2023-07-21:

      • Spec work is now complete! Go, .NET and Rust implementations close to wrapping up

      2023-07-07:

      • Go implementation for SDAM logging is in review, Rust in progress

       

      2023-06-23:

      • Go picked up the second implementation for SDAM logging last week. Hoping to wrap that up by 6/30

      2023-06-08

      • Currently waiting on the second implementation for SDAM logging work

      2023-05-26

      • Server Selection Logging done in the spec, .NET, and Rust! SDAM Logging work in review.

      2023-05-12

      • Boris is actively working on this and plans on wrapping up the work within the next week

      2023-04-28

      •  On pause since Boris is OOO until 5/5

      2023-04-14

      • Remaining spec work on pause since Boris is OOO until 5/5

      2023-03-31

      • Spec work for adding log messages to the SDAM spec is now complete. Waiting on the second implementation (Rust) before finalizing the changes
      • Spec work for adding log messages to the server selection spec is currently on hold due to limited bandwidth. Boris has some time off coming up and is currently prioritizing reviewing / ramping up on things on Dima's plate. We'll revisit the timeline for finishing the spec work as a part of our upcoming QP prep meeting

      2023-03-17

      • Boris is planning on wrapping up the remaining spec work in the next 2 weeks

      2023-03-03

      • Boris is currently working on the SDAM spec and will work on the server selection spec next. He is hoping to wrap up the remaining spec work in the next two weeks

      2023-02-17

      • Boris will resume the SDAM spec work next week

      2023-02-03

      • Boris has taken the spec over from Kaitlin.
      •  SDAM logging is in progress.

      2023-01-20

      • SDAM logging is in progress.
      • Server selection PR remains paused because of a dependency on DRIVERS-2337.  
      • Boris will take over the spec from Kaitlin.

      2023-01-06

      • Server selection PR is paused because of a dependency on DRIVERS-2337.
      • SDAM logging is in progress.

      2022-12-23

      • Server selection PR is close to complete.
      • SDAM logging is in progress.

      2022-11-23

      • Server selection PR is in review.
      • SDAM logging is in progress.

      2022-11-11

      • CMAP PR merged.
      • Server selection PR is in review.
      • Last piece of work is SDAM logging.

      2022-10-28

      • First PR for Logging Spec and Command logging merged.
      • CMAP is in review. 
      • Server selection PR is up next.
      • Minor follow up conversations now that Node and Go started their implementations, no major changes so far.

      2022-10-14

      • First PR is in review. Still working on open questions remain on redaction of errors and testing.
      • PR to add CMAP messages and tests is up next.

      2022-09-29

      • First PR is in review. A few open questions remain on redaction of errors and testing.
      • PR to add CMAP messages and tests is up next.

      2022-09-16

      • First PR is up for review.
      • Tests are passing in RUST, Java, .NET.
      • PR to add CMAP messages and tests is up next.

      2022-09-02

      • Spent time looking into server selection logging, now focused on getting the first spec PR ready, targeting next week.
      • Delayed SDAM logging due to a possible conflict with streamable hello.
      • Adding cost based on estimated time to prepare spec PRs and reviews.

      2022-08-19

      • Finished POCing connection pool logging tests. Now working on server selection logging in Rust, + corresponding tests.
      • Following that, remaining tasks are SDAM logging, and then preparing spec PRs for formal review.
      • Second implementation in .NET has been started.

      2022-08-05

      • Implemented connection pool logging in Rust, now working on writing YAML tests. Met with Boris and James to discuss .NET implementation

       2022-07-25

      • Wrote more unified and prose command logging tests, and incorporated feedback on them.
      • Got CMAP log messages POC implemented in Rust; now working on tests for them.

       2022-07-08

      • Not incrementing cost due to holiday and PTO.
      • Jeff determined via Java that proposed tests will be feasible for drivers doing unstructured logging

       


       2022-06-14:

      • Drafted some command logging tests; got corresponding test runner changes implemented and tests passing in Rust. TBD if proposed tests will be feasible for drivers doing unstructured logging - will determine this via a Java POC
      • Next going to try implementing log messages for a couple more specs (SDAM, CMAP) to see if there are any considerations we've missed with command messages.

      2022-06-10: Have made a small amount of progress on drafting tests and Rust test runner changes needed to run them. Not incrementing cost as only 1-2 days were spent on this


      2022-05-27: Converted command monitoring tests to the unified format. Started on logging assertions to tests.


      2022-05-12: Initial implementation of command logging in RUST is almost complete, shifting focused to testing.


      2022-04-22: Project was on hold as Kaitlin was focused on other priority tasks.


      2022-04-19: Kaitlin is working on a first implementation of the spec and logging command messages in Rust.


      2022-04-01: Kaitlin resuming this project with a future implementation in RUST.


      Lead: Jeff Yemin
      Author: Kaitlin Mahar

      2021-01-12:

      • On Pause. We’ll revisit priority in our QP prep meeting on 1/15

      2020-12-22:

      • No new updates. Kaitlin OOO from 12/21 - 1/3.

      2020-12-15:

      • Still on pause. Kaitlin spent the last few weeks wrapping up the work for unified test runner in Swift, working on a design for Nataly’s rotation project, and getting ramped up on Node.
      • She’ll be OOO from 12/21 - 01/3 and will pick this up after coming back.
      Show
      Engineer: Isabel Atkinson/Boris Dogadov Summary: The goal of this project is to define a default set of debug logging messages that drivers should produce, and a standardized, trivial mechanism drivers should support for enabling, disabling, and configuring debug logging. 2023-07-21: Spec work is now complete! Go, .NET and Rust implementations close to wrapping up 2023-07-07: Go implementation for SDAM logging is in review, Rust in progress   2023-06-23: Go picked up the second implementation for SDAM logging last week. Hoping to wrap that up by 6/30 2023-06-08 Currently waiting on the second implementation for SDAM logging work 2023-05-26 Server Selection Logging done in the spec, .NET, and Rust! SDAM Logging work in review. 2023-05-12 Boris is actively working on this and plans on wrapping up the work within the next week 2023-04-28  On pause since Boris is OOO until 5/5 2023-04-14 Remaining spec work on pause since Boris is OOO until 5/5 2023-03-31 Spec work for adding log messages to the SDAM spec is now complete. Waiting on the second implementation (Rust) before finalizing the changes Spec work for adding log messages to the server selection spec is currently on hold due to limited bandwidth. Boris has some time off coming up and is currently prioritizing reviewing / ramping up on things on Dima's plate. We'll revisit the timeline for finishing the spec work as a part of our upcoming QP prep meeting 2023-03-17 Boris is planning on wrapping up the remaining spec work in the next 2 weeks 2023-03-03 Boris is currently working on the SDAM spec and will work on the server selection spec next. He is hoping to wrap up the remaining spec work in the next two weeks 2023-02-17 Boris will resume the SDAM spec work next week 2023-02-03 Boris has taken the spec over from Kaitlin.  SDAM logging is in progress. 2023-01-20 SDAM logging is in progress. Server selection PR remains paused because of a dependency on DRIVERS-2337 .   Boris will take over the spec from Kaitlin. 2023-01-06 Server selection PR is paused because of a dependency on DRIVERS-2337 . SDAM logging is in progress. 2022-12-23 Server selection PR is close to complete. SDAM logging is in progress. 2022-11-23 Server selection PR is in review. SDAM logging is in progress. 2022-11-11 CMAP PR merged. Server selection PR is in review. Last piece of work is SDAM logging. 2022-10-28 First PR for Logging Spec and Command logging merged. CMAP is in review.  Server selection PR is up next. Minor follow up conversations now that Node and Go started their implementations, no major changes so far. 2022-10-14 First PR is in review. Still working on open questions remain on redaction of errors and testing. PR to add CMAP messages and tests is up next. 2022-09-29 First PR is in review. A few open questions remain on redaction of errors and testing. PR to add CMAP messages and tests is up next. 2022-09-16 First PR is up for review. Tests are passing in RUST, Java, .NET. PR to add CMAP messages and tests is up next. 2022-09-02 Spent time looking into server selection logging, now focused on getting the first spec PR ready, targeting next week. Delayed SDAM logging due to a possible conflict with streamable hello. Adding cost based on estimated time to prepare spec PRs and reviews. 2022-08-19 Finished POCing connection pool logging tests. Now working on server selection logging in Rust, + corresponding tests. Following that, remaining tasks are SDAM logging, and then preparing spec PRs for formal review. Second implementation in .NET has been started. 2022-08-05 Implemented connection pool logging in Rust, now working on writing YAML tests. Met with Boris and James to discuss .NET implementation  2022-07-25 Wrote more unified and prose command logging tests, and incorporated feedback on them. Got CMAP log messages POC implemented in Rust; now working on tests for them.  2022-07-08 Not incrementing cost due to holiday and PTO. Jeff determined via Java that proposed tests will be feasible for drivers doing unstructured logging    2022-06-14: Drafted some command logging tests; got corresponding test runner changes implemented and tests passing in Rust. TBD if proposed tests will be feasible for drivers doing unstructured logging - will determine this via a Java POC Next going to try implementing log messages for a couple more specs (SDAM, CMAP) to see if there are any considerations we've missed with command messages. 2022-06-10: Have made a small amount of progress on drafting tests and Rust test runner changes needed to run them. Not incrementing cost as only 1-2 days were spent on this 2022-05-27: Converted command monitoring tests to the unified format. Started on logging assertions to tests. 2022-05-12: Initial implementation of command logging in RUST is almost complete, shifting focused to testing. 2022-04-22: Project was on hold as Kaitlin was focused on other priority tasks. 2022-04-19: Kaitlin is working on a first implementation of the spec and logging command messages in Rust. 2022-04-01: Kaitlin resuming this project with a future implementation in RUST. Lead: Jeff Yemin Author: Kaitlin Mahar 2021-01-12: On Pause. We’ll revisit priority in our QP prep meeting on 1/15 2020-12-22: No new updates. Kaitlin OOO from 12/21 - 1/3. 2020-12-15: Still on pause. Kaitlin spent the last few weeks wrapping up the work for unified test runner in Swift, working on a design for Nataly’s rotation project, and getting ramped up on Node. She’ll be OOO from 12/21 - 01/3 and will pick this up after coming back.
    • Needed
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      SWIFT-991 Won't Do
      CDRIVER-3775 In Progress
      GODRIVER-1712 Fixed 1.13.0, 1.13.1
      CXX-2448 Backlog
      CSHARP-4044 Done
      JAVA-4485 Ready for Work
      NODE-3974 In Progress
      MOTOR-888 Duplicate
      PYTHON-3113 Fixed 4.9
      PHPC-2061 Backlog
      RUBY-2900 Backlog
      RUST-1176 Fixed 2.7.0
      $i18n.getText("admin.common.words.show")
      #scriptField, #scriptField *{ border: 1px solid black; } #scriptField{ border-collapse: collapse; } #scriptField td { text-align: center; /* Center-align text in table cells */ } #scriptField td.key { text-align: left; /* Left-align text in the Key column */ } #scriptField a { text-decoration: none; /* Remove underlines from links */ border: none; /* Remove border from links */ } /* Add green background color to cells with FixVersion */ #scriptField td.hasFixVersion { background-color: #00FF00; /* Green color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion SWIFT-991 Won't Do CDRIVER-3775 In Progress GODRIVER-1712 Fixed 1.13.0, 1.13.1 CXX-2448 Backlog CSHARP-4044 Done JAVA-4485 Ready for Work NODE-3974 In Progress MOTOR-888 Duplicate PYTHON-3113 Fixed 4.9 PHPC-2061 Backlog RUBY-2900 Backlog RUST-1176 Fixed 2.7.0

      Epic Summary

      Summary

      A common complaint from our support team is that they don't know how to get debugging information out of drivers. Some drivers provide debug logging for this purpose, others do not. For drivers that do provide it, the log messages produced and the mechanisms for enabling debug logging are not consistent.

      The goal of this project is to define a default set of debug logging messages that drivers should produce, and a standardized, trivial mechanism drivers should support for enabling, disabling, and configuring debug logging. This will provide TSEs, CEs and users an easy way to get debugging information out of our drivers. Each driver should additionally provide easily discoverable documentation on how to enable logging and what features are provided.

      The key idea here is to provide consistency across drivers, making it easier to support all drivers and far easier to document how to debug specific issues.

      Cast of Characters

      Lead: Jeff Yemin
      Author: Kaitlin Mahar
      POCs: Rust - Kaitlin, C# - Boris
      Product Owner: Rachelle Palmer

      Documentation

      Scope Document
      Technical Design Document

            Assignee:
            boris.dogadov@mongodb.com Boris Dogadov
            Reporter:
            bernie@mongodb.com Bernie Hackett
            James Kovacs James Kovacs
            Esha Bhargava Esha Bhargava
            Rachelle Palmer Rachelle Palmer
            Votes:
            6 Vote for this issue
            Watchers:
            20 Start watching this issue

              Created:
              Updated: