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

log redaction corrupts cbcollect_info N1QL output

    XMLWordPrintable

Details

    • Untriaged
    • 1
    • Unknown

    Description

      The output of completed requests contains null plans in system completed_requests (the same would apply to named and positional parameters to name a few), because the data collection concatenates strings with objects or arrays:

         1301             make('SELECT requests.*, '
         1302                  '"<ud>"||requests.statement||"</ud>" AS statement, '
         1303                  '"<ud>"||requests.preparedText||"</ud>" AS preparedText, '
         1304                  '*"<ud>"||meta().plan||"</ud>"* AS plan, '
         1305                  '"<ud>"||requests.namedArgs||"</ud>" AS namedArgs, '
         1306                  '"<ud>"||requests.positionalArgs||"</ud>" AS positionalArgs, '
         1307                  '"<ud>"||requests.users||"</ud>" AS users '
         1308                  'FROM system:completed_requests AS requests;',
         1309                  logfile="completed_requests.json", no_header=True),
         1310             make('SELECT prepareds.*, '
         1311                  '"<ud>"||prepareds.statement||"</ud>" AS statement '
         1312                  'FROM system:prepareds AS prepareds;',
         1313                  logfile="prepareds.json", no_header=True),
      

      This is not correct - in order to concanetate strings correctly, the object needs to be first marshalled into a string, for example

         1301             make('SELECT requests.*, '
         1302                  '"<ud>"||requests.statement||"</ud>" AS statement, '
         1303                  '"<ud>"||requests.preparedText||"</ud>" AS preparedText, '
         1304                  *'"<ud>"||encode_json(meta().plan)||"</ud>"* AS plan, '
         1305                  '"<ud>"||requests.namedArgs||"</ud>" AS namedArgs, '
         1306                  '"<ud>"||requests.positionalArgs||"</ud>" AS positionalArgs, '
         1307                  '"<ud>"||requests.users||"</ud>" AS users '
         1308                  'FROM system:completed_requests AS requests;',
         1309                  logfile="completed_requests.json", no_header=True),
         1310             make('SELECT prepareds.*, '
         1311                  '"<ud>"||prepareds.statement||"</ud>" AS statement '
         1312                  'FROM system:prepareds AS prepareds;',
         1313                  logfile="prepareds.json", no_header=True),
      

      Same thing applies to all other object and array fields collected.

      Attachments

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

        Activity

          People

            pierre.regazzoni Pierre Regazzoni
            marco.greco Marco Greco (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty