Telemetry rate limiting is (accidentally) not adjustable at runtime

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 7.0.0-rc0
    • Affects Version/s: None
    • Component/s: 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
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      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.

            Assignee:
            Alyssa Clark
            Reporter:
            Charlie Swanson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: