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

Text search trips assertion when default language only supported in textIndexVersion=1 used

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 2.6.5, 2.7.6
    • Affects Version/s: 2.6.3, 2.6.4-rc1, 2.7.4
    • Component/s: Text Search
    • Labels:
    • ALL
    • Hide
      var mongod = MongoRunner.runMongod({
          binVersion: '2.4.10',
          setParameter: 'textSearchEnabled=true'
      });
      
      var coll = mongod.getDB('test').foo;
      coll.drop();
      
      // 'fra' is not a valid language in 2.6
      coll.ensureIndex({field: 'text'}, {default_language: 'fra'});
      coll.insert({field: 'helloworld'});
      
      var res = coll.runCommand('text', {search: 'helloworld'});
      assert.eq(res.results.length, 1, tojson(res));
      
      // switch to 2.6
      MongoRunner.stopMongod(mongod);
      mongod = MongoRunner.runMongod({
          binVersion: '2.6',
          restart: mongod
      });
      
      // the 'text' command that succeeded in 2.4 will trigger an assertion in 2.6
      coll = mongod.getDB('test').foo;
      coll.runCommand('text', {search: 'helloworld'});
      
      Show
      var mongod = MongoRunner.runMongod({ binVersion: '2.4.10', setParameter: 'textSearchEnabled=true' }); var coll = mongod.getDB('test').foo; coll.drop(); // 'fra' is not a valid language in 2.6 coll.ensureIndex({field: 'text'}, {default_language: 'fra'}); coll.insert({field: 'helloworld'}); var res = coll.runCommand('text', {search: 'helloworld'}); assert.eq(res.results.length, 1, tojson(res)); // switch to 2.6 MongoRunner.stopMongod(mongod); mongod = MongoRunner.runMongod({ binVersion: '2.6', restart: mongod }); // the 'text' command that succeeded in 2.4 will trigger an assertion in 2.6 coll = mongod.getDB('test').foo; coll.runCommand('text', {search: 'helloworld'});

      In 2.4, it was possible to create text indexes with default languages such as "fra", "esl", etc. If you have such an index and then upgrade to 2.6, your previous text queries will stop returning results and trigger asserts instead:

       m27000| 2014-08-07T20:09:27.115-0400 [conn1] test.foo Assertion failure StageBuilder::build(*solutions[0], &root, &ws) src/mongo/db/query/get_runner.cpp 427
       m27000| 2014-08-07T20:09:27.118-0400 [conn1] test.foo 0x1007dd689 0x100787bcb 0x100775c89 0x10044efab 0x10044c307 0x10044b961 0x1002abffa 0x1002ab49b 0x100208e19 0x100209e0b 0x10020b6d0 0x100470110 0x100308a63 0x10000e4d7 0x100796810 0x100817e91 0x7fff8d021899 0x7fff8d02172a 0x7fff8d025fc9 
       m27000|  0   mongod                              0x00000001007dd689 _ZN5mongo15printStackTraceERSo + 57
       m27000|  1   mongod                              0x0000000100787bcb _ZN5mongo10logContextEPKc + 155
       m27000|  2   mongod                              0x0000000100775c89 _ZN5mongo12verifyFailedEPKcS1_j + 441
       m27000|  3   mongod                              0x000000010044efab _ZN5mongo19getRunnerAlwaysPlanEPNS_10CollectionEPNS_14CanonicalQueryERKNS_18QueryPlannerParamsEPPNS_6RunnerE + 3131
       m27000|  4   mongod                              0x000000010044c307 _ZN5mongo9getRunnerEPNS_10CollectionEPNS_14CanonicalQueryEPPNS_6RunnerEm + 2327
       m27000|  5   mongod                              0x000000010044b961 _ZN5mongo9getRunnerEPNS_14CanonicalQueryEPPNS_6RunnerEm + 129
       m27000|  6   mongod                              0x00000001002abffa _ZN5mongo3fts10FTSCommand4_runERKSsRNS_7BSONObjEiS3_S3_SsiS5_S5_RSsRNS_14BSONObjBuilderE + 1626
       m27000|  7   mongod                              0x00000001002ab49b _ZN5mongo3fts10FTSCommand3runERKSsRNS_7BSONObjEiRSsRNS_14BSONObjBuilderEb + 1451
       m27000|  8   mongod                              0x0000000100208e19 _ZN5mongo12_execCommandEPNS_7CommandERKSsRNS_7BSONObjEiRSsRNS_14BSONObjBuilderEb + 41
       m27000|  9   mongod                              0x0000000100209e0b _ZN5mongo7Command11execCommandEPS0_RNS_6ClientEiPKcRNS_7BSONObjERNS_14BSONObjBuilderEb + 2811
       m27000|  10  mongod                              0x000000010020b6d0 _ZN5mongo12_runCommandsEPKcRNS_7BSONObjERNS_11_BufBuilderINS_16TrivialAllocatorEEERNS_14BSONObjBuilderEbi + 1280
       m27000|  11  mongod                              0x0000000100470110 _ZN5mongo11newRunQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1_ + 736
       m27000|  12  mongod                              0x0000000100308a63 _ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE + 1427
       m27000|  13  mongod                              0x000000010000e4d7 _ZN5mongo16MyMessageHandler7processERNS_7MessageEPNS_21AbstractMessagingPortEPNS_9LastErrorE + 183
       m27000|  14  mongod                              0x0000000100796810 _ZN5mongo17PortMessageServer17handleIncomingMsgEPv + 912
       m27000|  15  mongod                              0x0000000100817e91 _ZN5boost12_GLOBAL__N_112thread_proxyEPv + 177
       m27000|  16  libsystem_pthread.dylib             0x00007fff8d021899 _pthread_body + 138
       m27000|  17  libsystem_pthread.dylib             0x00007fff8d02172a _pthread_struct_init + 0
       m27000|  18  libsystem_pthread.dylib             0x00007fff8d025fc9 thread_start + 13
      

      CC: rassi@10gen.com

            Assignee:
            rassi J Rassi
            Reporter:
            kamran.khan Kamran K.
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: