Better handling of slightly inconsistent box range queries

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Done
    • Priority: Minor - P4
    • 1.9.0
    • Affects Version/s: 1.7.4
    • Component/s: Geo, Index Maintenance
    • None
    • Environment:
      Linux 2.6.35-24-generic #42-Ubuntu SMP Thu Dec 2 02:41:37 UTC 2010 x86_64 GNU/Linux
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      General messiness with slightly weird $within queries for boxes.

      Within queries for boxes whose size is equal to the bounds of the indexed region fails, with the following assertation error:

      Fri Jan 21 11:15:44 [conn3] test.borders Assertion failure in > 0 db/geo/2d.cpp 199
      0x508113 0x513521 0x6e028a 0x6e2110 0x6e3695 0x6de6b3 0x6afad3 0x5c05ec 0x6b10cd 0x6b592e 0x6b8a2b 0x6b9319 0x6b9ee7 0x5b15f8 0x685410 0x7693ef 0x7f9572e03230 0x7f957351e971 0x7f9571b0092d
      /opt/mongo/bin/mongod(_ZN5mongo12sayDbContextEPKc+0xb3) [0x508113]
      /opt/mongo/bin/mongod(_ZN5mongo8assertedEPKcS1_j+0xc1) [0x513521]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType4hashEdd+0x7a) [0x6e028a]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType5_hashERKNS_7BSONObjE+0x1a0) [0x6e2110]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType7_tohashERKNS_11BSONElementE+0x75) [0x6e3695]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType9newCursorERKNS_7BSONObjES3_i+0x11e3) [0x6de6b3]
      /opt/mongo/bin/mongod(_ZNK5mongo9QueryPlan9newCursorERKNS_7DiskLocEi+0x43) [0x6afad3]
      /opt/mongo/bin/mongod(_ZN5mongo11UserQueryOp5_initEv+0x37c) [0x5c05ec]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner6initOpERNS_7QueryOpE+0x12d) [0x6b10cd]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner3runEv+0x47e) [0x6b592e]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet5runOpERNS_7QueryOpE+0x5b) [0x6b8a2b]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner9runOpOnceERNS_7QueryOpE+0x2e9) [0x6b9319]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner5runOpERNS_7QueryOpE+0x27) [0x6b9ee7]
      /opt/mongo/bin/mongod(ZN5mongo8runQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1+0xa78) [0x5b15f8]
      /opt/mongo/bin/mongod(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_8SockAddrE+0x1040) [0x685410]
      /opt/mongo/bin/mongod(_ZN5mongo10connThreadEPNS_13MessagingPortE+0x2cf) [0x7693ef]
      /usr/lib/libboost_thread.so.1.42.0(thread_proxy+0x60) [0x7f9572e03230]
      /lib/libpthread.so.0(+0x7971) [0x7f957351e971]
      /lib/libc.so.6(clone+0x6d) [0x7f9571b0092d]
      Fri Jan 21 11:15:44 [conn3] test.borders Assertion failure in > 0 db/geo/2d.cpp 199
      0x508113 0x513521 0x6e028a 0x6e2110 0x6e3695 0x6de6b3 0x6afad3 0x5c05ec 0x6b10cd 0x6b592e 0x6b8b62 0x6b9319 0x6b9ee7 0x5b15f8 0x685410 0x7693ef 0x7f9572e03230 0x7f957351e971 0x7f9571b0092d
      /opt/mongo/bin/mongod(_ZN5mongo12sayDbContextEPKc+0xb3) [0x508113]
      /opt/mongo/bin/mongod(_ZN5mongo8assertedEPKcS1_j+0xc1) [0x513521]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType4hashEdd+0x7a) [0x6e028a]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType5_hashERKNS_7BSONObjE+0x1a0) [0x6e2110]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType7_tohashERKNS_11BSONElementE+0x75) [0x6e3695]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType9newCursorERKNS_7BSONObjES3_i+0x11e3) [0x6de6b3]
      /opt/mongo/bin/mongod(_ZNK5mongo9QueryPlan9newCursorERKNS_7DiskLocEi+0x43) [0x6afad3]
      /opt/mongo/bin/mongod(_ZN5mongo11UserQueryOp5_initEv+0x37c) [0x5c05ec]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner6initOpERNS_7QueryOpE+0x12d) [0x6b10cd]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner3runEv+0x47e) [0x6b592e]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet5runOpERNS_7QueryOpE+0x192) [0x6b8b62]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner9runOpOnceERNS_7QueryOpE+0x2e9) [0x6b9319]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner5runOpERNS_7QueryOpE+0x27) [0x6b9ee7]
      /opt/mongo/bin/mongod(ZN5mongo8runQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1+0xa78) [0x5b15f8]
      /opt/mongo/bin/mongod(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_8SockAddrE+0x1040) [0x685410]
      /opt/mongo/bin/mongod(_ZN5mongo10connThreadEPNS_13MessagingPortE+0x2cf) [0x7693ef]
      /usr/lib/libboost_thread.so.1.42.0(thread_proxy+0x60) [0x7f9572e03230]
      /lib/libpthread.so.0(+0x7971) [0x7f957351e971]
      /lib/libc.so.6(clone+0x6d) [0x7f9571b0092d]
      Fri Jan 21 11:15:44 [conn3] assertion 0 assertion db/geo/2d.cpp:199 ns:test.borders query:{ loc: { $within:

      { $box: [ [ -2.0, -2.0 ], [ 2.0, 2.0 ] ] }

      } }
      error:

      { "$err" : "assertion db/geo/2d.cpp:199" }

      There are better ways to get all the points in the full range, but ideally this should be a nicer error.

      Also, if our box mins and maxes are inverted (such that we define a box backwards), we get the following non-nice error:

      Fri Jan 21 11:19:27 [conn4] test.borders Assertion failure amin <= amax db/geo/2d.cpp 310
      0x508113 0x513521 0x6e5380 0x6df539 0x6de904 0x6afad3 0x5c05ec 0x6b10cd 0x6b592e 0x6b8a2b 0x6b9319 0x6b9ee7 0x5b15f8 0x685410 0x7693ef 0x7f9572e03230 0x7f957351e971 0x7f9571b0092d
      /opt/mongo/bin/mongod(_ZN5mongo12sayDbContextEPKc+0xb3) [0x508113]
      /opt/mongo/bin/mongod(_ZN5mongo8assertedEPKcS1_j+0xc1) [0x513521]
      /opt/mongo/bin/mongod(_ZN5mongo12GeoBoxBrowse9fillStackEv+0xa60) [0x6e5380]
      /opt/mongo/bin/mongod(_ZN5mongo9GeoBrowse2okEv+0x79) [0x6df539]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType9newCursorERKNS_7BSONObjES3_i+0x1434) [0x6de904]
      /opt/mongo/bin/mongod(_ZNK5mongo9QueryPlan9newCursorERKNS_7DiskLocEi+0x43) [0x6afad3]
      /opt/mongo/bin/mongod(_ZN5mongo11UserQueryOp5_initEv+0x37c) [0x5c05ec]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner6initOpERNS_7QueryOpE+0x12d) [0x6b10cd]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner3runEv+0x47e) [0x6b592e]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet5runOpERNS_7QueryOpE+0x5b) [0x6b8a2b]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner9runOpOnceERNS_7QueryOpE+0x2e9) [0x6b9319]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner5runOpERNS_7QueryOpE+0x27) [0x6b9ee7]
      /opt/mongo/bin/mongod(ZN5mongo8runQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1+0xa78) [0x5b15f8]
      /opt/mongo/bin/mongod(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_8SockAddrE+0x1040) [0x685410]
      /opt/mongo/bin/mongod(_ZN5mongo10connThreadEPNS_13MessagingPortE+0x2cf) [0x7693ef]
      /usr/lib/libboost_thread.so.1.42.0(thread_proxy+0x60) [0x7f9572e03230]
      /lib/libpthread.so.0(+0x7971) [0x7f957351e971]
      /lib/libc.so.6(clone+0x6d) [0x7f9571b0092d]
      Fri Jan 21 11:19:27 [conn4] test.borders Assertion failure amin <= amax db/geo/2d.cpp 310
      0x508113 0x513521 0x6e5380 0x6df539 0x6de904 0x6afad3 0x5c05ec 0x6b10cd 0x6b592e 0x6b8b62 0x6b9319 0x6b9ee7 0x5b15f8 0x685410 0x7693ef 0x7f9572e03230 0x7f957351e971 0x7f9571b0092d
      /opt/mongo/bin/mongod(_ZN5mongo12sayDbContextEPKc+0xb3) [0x508113]
      /opt/mongo/bin/mongod(_ZN5mongo8assertedEPKcS1_j+0xc1) [0x513521]
      /opt/mongo/bin/mongod(_ZN5mongo12GeoBoxBrowse9fillStackEv+0xa60) [0x6e5380]
      /opt/mongo/bin/mongod(_ZN5mongo9GeoBrowse2okEv+0x79) [0x6df539]
      /opt/mongo/bin/mongod(_ZNK5mongo9Geo2dType9newCursorERKNS_7BSONObjES3_i+0x1434) [0x6de904]
      /opt/mongo/bin/mongod(_ZNK5mongo9QueryPlan9newCursorERKNS_7DiskLocEi+0x43) [0x6afad3]
      /opt/mongo/bin/mongod(_ZN5mongo11UserQueryOp5_initEv+0x37c) [0x5c05ec]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner6initOpERNS_7QueryOpE+0x12d) [0x6b10cd]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet6Runner3runEv+0x47e) [0x6b592e]
      /opt/mongo/bin/mongod(_ZN5mongo12QueryPlanSet5runOpERNS_7QueryOpE+0x192) [0x6b8b62]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner9runOpOnceERNS_7QueryOpE+0x2e9) [0x6b9319]
      /opt/mongo/bin/mongod(_ZN5mongo16MultiPlanScanner5runOpERNS_7QueryOpE+0x27) [0x6b9ee7]
      /opt/mongo/bin/mongod(ZN5mongo8runQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1+0xa78) [0x5b15f8]
      /opt/mongo/bin/mongod(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_8SockAddrE+0x1040) [0x685410]
      /opt/mongo/bin/mongod(_ZN5mongo10connThreadEPNS_13MessagingPortE+0x2cf) [0x7693ef]
      /usr/lib/libboost_thread.so.1.42.0(thread_proxy+0x60) [0x7f9572e03230]
      /lib/libpthread.so.0(+0x7971) [0x7f957351e971]
      /lib/libc.so.6(clone+0x6d) [0x7f9571b0092d]
      Fri Jan 21 11:19:27 [conn4] assertion 0 assertion db/geo/2d.cpp:310 ns:test.borders query:{ loc: { $within:

      { $box: [ [ 1.5, 1.5 ], [ -1.5, -1.5 ] ] }

      } }
      error:

      { "$err" : "assertion db/geo/2d.cpp:310" }

      Should probably have a nicer version of this.

            Assignee:
            Greg Studer (Inactive)
            Reporter:
            Greg Studer (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: