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

[UDF] Panic executing prepared statement from N1QL JS UDF

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 7.1.0
    • 7.1.0
    • query
    • 7.1.0-1644
    • Untriaged
    • 1
    • Unknown

    Description

      Test repro:

      1. create default bucket (import lines.json.gz)
      2. create udf to call prepared statement: curl -s -k -X POST http://172.23.104.90:8093/evaluator/v1/libraries/n1ql -u Administrator:password -H 'content-type: application/json' -d 'function execute_prepare_default() { var query = EXECUTE engineer_count; var acc = []; for (const row of query) { acc.push(row); } return acc;}'
        # CREATE OR REPLACE FUNCTION execute_prepare_default() LANGUAGE JAVASCRIPT AS "execute_prepare_default" AT "n1ql"
        # PREPARE engineer_count as SELECT COUNT as count_engineer FROM default WHERE job_title = "Engineer"
        # EXECUTE FUNCTION execute_prepare_default()

        Got error:

         


        CONTENT IS: {'requestID': '4cf6e8d7-2de0-4dd2-bc81-25e749e25367', 'signature': None, 'results': [], 'errors': [{'code': 10109, 'msg': "Error executing function execute_prepare_default (n1ql:execute_prepare_default): Evaluator error Exceptions from JS code : run execute_prepare_default failed:\nException: Error: Panic: runtime error: invalid memory address or nil pointer dereference\nLocation: functions/n1ql.js:1 \nCode: function execute_prepare_default() { var query = N1QL('EXECUTE engineer_count;', {}); var acc = []; for (const row of query) { acc.push(row); }

        return acc;}\nError\n at execute_prepare_default (functions/n1ql.js:1:61)\n - cause: Evaluator error Exceptions from JS code : run execute_prepare_default failed:\nException: Error: Panic: runtime error: invalid memory address or nil pointer dereference\nLocation: functions/n1ql.js:1 \nCode: function execute_prepare_default() { var query = N1QL('EXECUTE engineer_count;', {}); var acc = []; for (const row of query)

        { acc.push(row); }

        return acc;}\nError\n at execute_prepare_default (functions/n1ql.js:1:61)\n"}], 'status': 'errors', 'metrics': {'elapsedTime': '220.065911ms', 'executionTime': '219.95352ms', 'resultCount': 0, 'resultSize': 0, 'serviceLoad': 1, 'errorCount': 1}}

        From query.log (see attached)
        {code:java}
        2021-11-05T16:23:12.672-07:00 [SEVERE] panic: runtime error: invalid memory address or nil pointer dereference
        2021-11-05T16:23:12.672-07:00 [SEVERE] request text: <ud>PREPARE engineer_count as SELECT COUNT(*) as count_engineer FROM default WHERE job_title = "Engineer"</ud>
        2021-11-05T16:23:12.672-07:00 [SEVERE] query context: <ud></ud>
        2021-11-05T16:23:12.672-07:00 [SEVERE] stack: goroutine 38277 [running]:
        github.com/couchbase/query/execution.(*Context).Recover(0xc0006d8280, 0xc00050f200)
                /home/couchbase/jenkins/workspace/couchbase-server-unix/goproj/src/github.com/couchbase/query/execution/context.go:1028 +0xc6
        panic(0x22b72e0, 0x375f960)
                /home/couchbase/.cbdepscache/exploded/x86_64/go-1.16.6/go/src/runtime/panic.go:971 +0x499
        github.com/couchbase/query/execution.(*base).close(0xc00050f200, 0xc0006d8280)
                /home/couchbase/jenkins/workspace/couchbase-server-unix/goproj/src/github.com/couchbase/query/execution/base.go:270 +0x233
        panic(0x22b72e0, 0x375f960)
                /home/couchbase/.cbdepscache/exploded/x86_64/go-1.16.6/go/src/runtime/panic.go:971 +0x499
        github.com/couchbase/query/execution.(*base).notify(0xc00050f200)
                /home/couchbase/jenkins/workspace/couchbase-server-unix/goproj/src/github.com/couchbase/query/execution/base.go:988 +0x178
        panic(0x22b72e0, 0x375f960)
                /home/couchbase/.cbdepscache/exploded/x86_64/go-1.16.6/go/src/runtime/panic.go:971 +0x499
        github.com/couchbase/query/execution.(*Context).Result(...)
                /home/couchbase/jenkins/workspace/couchbase-server-unix/goproj/src/github.com/couchbase/query/execution/context.go:588
        github.com/couchbase/query/execution.(*Stream).processItem(0xc001c8cd80, 0x2889098, 0xc001bd3560, 0xc0006d8280, 0xc000aa3a10)
                /home/couchbase/jenkins/workspace/couchbase-server-unix/goproj/src/github.com/couchbase/query/execution/stream.go:71 +0x2d
        github.com/couchbase/query/execution.serializedSend(0xc00050f200, 0x284e848, 0xc001c8cd80, 0x2889098, 0xc001bd3560, 0x0)
                /home/couchbase/jenkins/workspace/couchbase-server-unix/goproj/src/github.com/couchbase/query/execution/base.go:936 +0x13e
        ... 

      Attachments

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

        Activity

          People

            pierre.regazzoni Pierre Regazzoni
            pierre.regazzoni Pierre Regazzoni
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty