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

[UDF] cannot run CURL within JS udf

    XMLWordPrintable

Details

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

    Description

      To repro:

      • Enable curl whitelist:
        curl -v -X POST -u Administrator:password http://localhost:8091/settings/querySettings/curlWhitelist -d '{"all_access": true}'
      • check select curl in cbq:
        SELECT CURL("https://jsonplaceholder.typicode.com/todos");
      • create library:
        {{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 curl_default() { var query = SELECT CURL("https://jsonplaceholder.typicode.com/todos"); var acc = []; for (const row of query) { acc.push(row); }

        return acc;}'}}

      • create function in cbq:
        CREATE OR REPLACE FUNCTION curl_default() LANGUAGE JAVASCRIPT AS "curl_default" AT "n1ql" ;
      • execute function in cbqEXECUTE FUNCTION curl_default();

      Get following error:

       cbq> EXECUTE FUNCTION curl_default();
      {
          "requestID": "ed7cfaf9-f438-46be-8fb0-0937b0db345d",
          "signature": null,
          "results": [
          ],
          "errors": [
              {
                  "code": 10109,
                  "msg": "Error executing function curl_default (n1ql:curl_default): Evaluator error Exceptions from JS code : run curl_default failed:\nException: Error: Error evaluating projection - cause: Allowed list for cluster is empty.\nLocation: functions/n1ql.js:1 \nCode: function curl_default() {            var query = N1QL('SELECT CURL(\\\"https://jsonplaceholder.typicode.com/todos\\\");', {});            var acc = [];            for (const row of query) {                acc.push(row);            }            return acc;}\nError\n    at curl_default (functions/n1ql.js:1:50)\n - cause: Evaluator error Exceptions from JS code : run curl_default failed:\nException: Error: Error evaluating projection - cause: Allowed list for cluster is empty.\nLocation: functions/n1ql.js:1 \nCode: function curl_default() {            var query = N1QL('SELECT CURL(\\\"https://jsonplaceholder.typicode.com/todos\\\");', {});            var acc = [];            for (const row of query) {                acc.push(row);            }            return acc;}\nError\n    at curl_default (functions/n1ql.js:1:50)\n"
              }
          ],
          "status": "errors",
          "metrics": {
              "elapsedTime": "21.641482ms",
              "executionTime": "21.487056ms",
              "resultCount": 0,
              "resultSize": 0,
              "serviceLoad": 6,
              "errorCount": 1
          }
      }
      

       

      Attachments

        For Gerrit Dashboard: MB-49474
        # Subject Branch Project Status CR V

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty