Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-39670

Panic seen when creating an index on a document and a subfield of the document

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Critical
    • 7.0.0
    • Cheshire-Cat
    • query, secondary-index
    • None
    • Untriaged
    • 1
    • Unknown

    Description

      When processing secondary keys whose total size is > 20M, Observing a panic in projector during CollateJSONEncode. This panic seems to originate from query code.

       

      Indexing SHA: 39bde92304baf3a7424d8d9297953946a7cd6515

      Query SHA: c67a7e6ab26cb2ed82dd0367a1c4631309af7d33

       

      Panic stack trace:

       

      2020-06-01T11:50:04.856+05:30 [Error] WRKR[2<-default<-127.0.0.1:9000 #INIT_STREAM_TOPIC_aadd22d87df694b6908c818ee1724bc8] ##c TransformRoute: runtime error: invalid memory address or nil pointer dereference, /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/logging/logging.go:312 +0x22
      github.com/couchbase/indexing/secondary/protobuf/projector.(*IndexEvaluator).processEvent.func1(0xc006a495d0)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/protobuf/projector/index.go:270 +0x57
      panic(0x47f97e0, 0x5156620)
       /Users/varun/.cbdepscache/exploded/x86_64/go-1.13.7/go/src/runtime/panic.go:679 +0x1b2
      github.com/couchbase/query/value.(*parsedValue).MarshalJSON(0xc000661a00, 0xc000661a00, 0x4a3a880, 0xc000661a00, 0x0, 0x0)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/query/value/parsed.go:128 +0x35
      github.com/couchbase/query/value.marshalArray(0xc0065a85a0, 0x2, 0x2, 0x4416e80, 0x0, 0x0, 0xc006a494b8, 0xc006a49070)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/query/value/array.go:623 +0x134
      github.com/couchbase/query/value.sliceValue.MarshalJSON(...)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/query/value/array.go:34
      github.com/couchbase/indexing/secondary/protobuf/projector.CollateJSONEncode(0x4a3b3c0, 0xc0065a85e0, 0xc00764e000, 0x0, 0x100000, 0x4a3a880, 0xc000661a00, 0x0, 0x0, 0x0, ...)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/protobuf/projector/n1ql_evaluate.go:146 +0x20c
      github.com/couchbase/indexing/secondary/protobuf/projector.N1QLTransform(0xc0048b7ec0, 0x12, 0x12, 0x4a69c00, 0xc006544fc0, 0x4a2fc00, 0xc0065a8580, 0xc0068ef1c0, 0x2, 0x2, ...)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/protobuf/projector/n1ql_evaluate.go:122 +0x5a7
      github.com/couchbase/indexing/secondary/protobuf/projector.(*IndexEvaluator).evaluate(0xc000173400, 0xc005887d40, 0xc0048b7ec0, 0x12, 0x12, 0x4a69c00, 0xc006544fc0, 0x4a2fc00, 0xc0065a8580, 0xc00764e000, ...) /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/protobuf/projector/index.go:480 +0x12e
      github.com/couchbase/indexing/secondary/protobuf/projector.(*IndexEvaluator).processEvent(0xc000173400, 0xc005887d40, 0xc00764e000, 0x0, 0x100000, 0x4a69c00, 0xc006544fc0, 0x4a2fc00, 0xc0065a8580, 0xc006c047b0, ...)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/protobuf/projector/index.go:306 +0x75a
      github.com/couchbase/indexing/secondary/protobuf/projector.(*IndexEvaluator).TransformRoute(0xc000173400, 0xbc0883229231, 0xc005887d40, 0xc006578360, 0xc00764e000, 0x0, 0x100000, 0x4a69c00, 0xc006544fc0, 0x4a2fc00, ...)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/protobuf/projector/index.go:341 +0xb8
      github.com/couchbase/indexing/secondary/projector.(*Engine).TransformRoute(...)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/projector/engine.go:98
      github.com/couchbase/indexing/secondary/projector.(*VbucketWorker).handleEvent.func3(0xc007e242a0)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/projector/worker.go:502 +0x2dd
      github.com/couchbase/indexing/secondary/projector.(*VbucketWorker).handleEvent(0xc0071161c0, 0xc005887d40, 0x0)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/projector/worker.go:538 +0xbcf
      github.com/couchbase/indexing/secondary/projector.(*VbucketWorker).run(0xc0071161c0, 0xc0065e5200, 0xc0065e51a0)
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/projector/worker.go:258 +0x61a
      created by github.com/couchbase/indexing/secondary/projector.NewVbucketWorker
       /Users/varun/couchbase/cheshire-cat/goproj/src/github.com/couchbase/indexing/secondary/projector/worker.go:119 +0x6a3
      for index i2 docid <ud>(VeryLargeIndexKey2)</ud>
      

      Steps to reproduce:

      a. Create a large document containing a subdoc and JSON array. The JSON array should be a part of subdoc and it's size should be sufficiently large (Close to 20M is recommended)

      b. Create an index on both subdoc and JSON array so that the total key size exceeds 20M

       

       

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              pierre.regazzoni Pierre Regazzoni
              varun.velamuri Varun Velamuri
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty