Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-75062

Telemetry rate limiting is (accidentally) not adjustable at runtime

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 7.0.0-rc0
    • None
    • None
    • None
    • Query Optimization
    • Fully Compatible
    • ALL
    • Hide

      Start up the server with the rate limit set to 0.

      MongoDB Enterprise > db.foo.find()
      { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 }
      { "_id" : ObjectId("6414ace59f2e023fd915d78e") }
      { "_id" : ObjectId("6414ace59f2e023fd915d78f") }
      { "_id" : ObjectId("6414ace59f2e023fd915d790") }
      { "_id" : ObjectId("6414ace59f2e023fd915d791") }
      { "_id" : ObjectId("6414ace59f2e023fd915d792") }
      MongoDB Enterprise > db.foo.find({x: 1})
      { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 }
      MongoDB Enterprise > db.foo.aggregate([{$set: {z: true}}])
      { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1, "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d78e"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d78f"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d790"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d791"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d792"), "z" : true }
      MongoDB Enterprise > db.getSiblingDB("admin").aggregate([{$telemetry: {}}])
       
       
       
      // I _can_ configure the rate limit, it appears:
       
       
      MongoDB Enterprise > db.adminCommand({setParameter: 1, internalQueryConfigureTelemetrySamplingRate: 37410})
      { "was" : 0, "ok" : 1 }
      MongoDB Enterprise > db.foo.aggregate([{$set: {z: true}}])
      { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1, "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d78e"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d78f"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d790"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d791"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d792"), "z" : true }
      MongoDB Enterprise > db.foo.aggregate([{$set: {z: true}}])
      { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1, "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d78e"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d78f"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d790"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d791"), "z" : true }
      { "_id" : ObjectId("6414ace59f2e023fd915d792"), "z" : true }
      MongoDB Enterprise > db.foo.find({x: 1})
      { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 }
      MongoDB Enterprise > db.foo.find()
      { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 }
      { "_id" : ObjectId("6414ace59f2e023fd915d78e") }
      { "_id" : ObjectId("6414ace59f2e023fd915d78f") }
      { "_id" : ObjectId("6414ace59f2e023fd915d790") }
      { "_id" : ObjectId("6414ace59f2e023fd915d791") }
      { "_id" : ObjectId("6414ace59f2e023fd915d792") }
      MongoDB Enterprise > db.getSiblingDB("admin").aggregate([{$telemetry: {}}]) 

      The bug is that last line was expected to output telemetry for the previous finds and aggregate

      Show
      Start up the server with the rate limit set to 0. MongoDB Enterprise > db.foo.find() { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 } { "_id" : ObjectId("6414ace59f2e023fd915d78e") } { "_id" : ObjectId("6414ace59f2e023fd915d78f") } { "_id" : ObjectId("6414ace59f2e023fd915d790") } { "_id" : ObjectId("6414ace59f2e023fd915d791") } { "_id" : ObjectId("6414ace59f2e023fd915d792") } MongoDB Enterprise > db.foo.find({x: 1}) { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 } MongoDB Enterprise > db.foo.aggregate([{$set: {z: true}}]) { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1, "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d78e"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d78f"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d790"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d791"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d792"), "z" : true } MongoDB Enterprise > db.getSiblingDB("admin").aggregate([{$telemetry: {}}])       // I _can_ configure the rate limit, it appears:     MongoDB Enterprise > db.adminCommand({setParameter: 1, internalQueryConfigureTelemetrySamplingRate: 37410}) { "was" : 0, "ok" : 1 } MongoDB Enterprise > db.foo.aggregate([{$set: {z: true}}]) { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1, "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d78e"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d78f"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d790"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d791"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d792"), "z" : true } MongoDB Enterprise > db.foo.aggregate([{$set: {z: true}}]) { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1, "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d78e"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d78f"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d790"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d791"), "z" : true } { "_id" : ObjectId("6414ace59f2e023fd915d792"), "z" : true } MongoDB Enterprise > db.foo.find({x: 1}) { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 } MongoDB Enterprise > db.foo.find() { "_id" : ObjectId("641353d2b7e0f465c4fcfb3a"), "x" : 1, "y" : 1 } { "_id" : ObjectId("6414ace59f2e023fd915d78e") } { "_id" : ObjectId("6414ace59f2e023fd915d78f") } { "_id" : ObjectId("6414ace59f2e023fd915d790") } { "_id" : ObjectId("6414ace59f2e023fd915d791") } { "_id" : ObjectId("6414ace59f2e023fd915d792") } MongoDB Enterprise > db.getSiblingDB("admin").aggregate([{$telemetry: {}}]) The bug is that last line was expected to output telemetry for the previous finds and aggregate
    • QI 2023-04-03, QI 2023-04-17

    Description

      There is a parameter that can be adjusted at runtime, but it has no effect. It appears the rate limit is analyzed at startup and read once in order to configure a rate limiting C++ class. When you change the parameter, nothing observes this change.

      Attachments

        Activity

          People

            alyssa.clark@mongodb.com Alyssa Clark
            charlie.swanson@mongodb.com Charlie Swanson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: