Uploaded image for project: 'Couchbase C client library libcouchbase'
  1. Couchbase C client library libcouchbase
  2. CCBC-1174

Doc content when using views with include_docs=true can be corrupted

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • 2.10.10
    • 2.10.5
    • library
    • None
    • 1

    Description

      When using include_docs with views in the C SDK when documents are compressed, some of the document values come back corrupted.

      For example (a couple of runs):

      {"callsign":"MILE-AIR","country":"United States","iata":"Q5","icao":"MLA","id":10,"name":"40-Mile Air","type":"airline"}
      {"callsign":"TXW","country":"United States","iata":"TQ","icao":"TXW","id":10123,"name":"Texas Wings","type":"airline"}
      {"callsign":"atifly","country":"United States","iata":"A1","icao":"A1F","id":10226,"name":"Atifly","type":"airline"}
      �C
      {"callsign":"LOCAIR","country":"United States","iata":"ZQ","icao":"LOC","id":10748,"name":"Locair","type":"airline"}
      {"callsign":"SASQUATCH","country":"United States","iata":"K5","icao":"SQH","id":10765,"name":"SeaPort Airlines","type":"airline"}
      {"callsign":"ACE AIR","country":"United States","iata":"KO","icao":"AER","id":109,"name":"Alaska Central Express","type":"airline"}
       
      {"callsign":"REUNION","country":"France","iata":"UU","icao":"REU","id":1191,"name":"Air Austral","type":"airline"}
      {"callsign":"AIRLINAIR","country":"France","iata":"A5","icao":"RLA","id":1203,"name":"Airlinair","type":"airline"}
      {"callsign":"CITRUS","country":"United States","iata":"FL","icao":"TRS","id":1316,"name":"AirTran Airways","type":"airline"}
      {"callsign":null,"country":"United States","iata":"-+","icao":"--+","id":13391,"name":"U.S. Air","type":"airline"}
      {"callsign":"SPEEDBIRD","country":"United Kingdom","iata":"BA","icao":"BAW","id":1355,"name":"British Airways","type":"airline"}
       "A
      {"callsign":"AIRFRANS","country":"France","iata":"AF","icao":"AFR","id":137,"name":"Air France","type":"airline"}
      

      {"callsign":"MILE-AIR","country":"United States","iata":"Q5","icao":"MLA","id":10,"name":"40-Mile Air","type":"airline"}
      {"callsign":"TXW","country":"United States","iata":"TQ","icao":"TXW","id":10123,"name":"Texas Wings","type":"airline"}
      {"callsign":"atifly","country":"United States","iata":"A1","icao":"A1F","id":10226,"name":"Atifly","type":"airline"}
      {"callsign":null,"country":"United Kingdom","iata":null,"icao":"JRB","id":10642,"name":"Jc royal.britannica","type":"airline"}
      {"callsign":"LOCAIR","country":"United States","iata":"ZQ","icao":"LOC","id":10748,"name":"Locair","type":"airline"}
      {"callsign":"SASQUATCH","country":"United States","iata":"K5","icao":"SQH","id":10765,"name":"SeaPort Airlines","type":"airline"}
      {"callsign":"ACE AIR","country":"United States","iata":"KO","icao":"AER","id":109,"name":"Alaska Central Express","type":"airline"}
      @\�
      {"callsign":"REUNION","country":"France","iata":"UU","icao":"REU","id":1191,"name":"Air Austral","type":"airline"}
      {"callsign":"AIRLINAIR","country":"France","iata":"A5","icao":"RLA","id":1203,"name":"Airlinair","type":"airline"}
      {"callsign":"CITRUS","country":"United States","iata":"FL","icao":"TRS","id":1316,"name":"AirTran Airways","type":"airline"}
      {"callsign":null,"country":"United States","iata":"-+","icao":"--+","id":13391,"name":"U.S. Air","type":"airline"}
      {"callsign":"SPEEDBIRD","country":"United Kingdom","iata":"BA","icao":"BAW","id":1355,"name":"British Airways","type":"airline"}
      8��'
      {"callsign":"AIRFRANS","country":"France","iata":"AF","icao":"AFR","id":137,"name":"Air France","type":"airline"}
      

      Turning off compression (via the connection string), returns the correct doc contents:

      {"callsign":"MILE-AIR","country":"United States","iata":"Q5","icao":"MLA","id":10,"name":"40-Mile Air","type":"airline"}
      {"callsign":"TXW","country":"United States","iata":"TQ","icao":"TXW","id":10123,"name":"Texas Wings","type":"airline"}
      {"callsign":"atifly","country":"United States","iata":"A1","icao":"A1F","id":10226,"name":"Atifly","type":"airline"}
      {"callsign":null,"country":"United Kingdom","iata":null,"icao":"JRB","id":10642,"name":"Jc royal.britannica","type":"airline"}
      {"callsign":"LOCAIR","country":"United States","iata":"ZQ","icao":"LOC","id":10748,"name":"Locair","type":"airline"}
      {"callsign":"SASQUATCH","country":"United States","iata":"K5","icao":"SQH","id":10765,"name":"SeaPort Airlines","type":"airline"}
      {"callsign":"ACE AIR","country":"United States","iata":"KO","icao":"AER","id":109,"name":"Alaska Central Express","type":"airline"}
      {"callsign":"FLYSTAR","country":"United Kingdom","iata":"5W","icao":"AEU","id":112,"name":"Astraeus","type":"airline"}
      {"callsign":"REUNION","country":"France","iata":"UU","icao":"REU","id":1191,"name":"Air Austral","type":"airline"}
      {"callsign":"AIRLINAIR","country":"France","iata":"A5","icao":"RLA","id":1203,"name":"Airlinair","type":"airline"}
      {"callsign":"CITRUS","country":"United States","iata":"FL","icao":"TRS","id":1316,"name":"AirTran Airways","type":"airline"}
      {"callsign":null,"country":"United States","iata":"-+","icao":"--+","id":13391,"name":"U.S. Air","type":"airline"}
      {"callsign":"SPEEDBIRD","country":"United Kingdom","iata":"BA","icao":"BAW","id":1355,"name":"British Airways","type":"airline"}
      {"callsign":null,"country":"United States","iata":"WQ","icao":"PQW","id":13633,"name":"PanAm World Airways","type":"airline"}
      {"callsign":"AIRFRANS","country":"France","iata":"AF","icao":"AFR","id":137,"name":"Air France","type":"airline"}
      

      This is obviously a problem in itself, but has the knock-on effect where the Python SDK crashes due to invalid JSON parsing when handling the result of the view.

      Steps to Reproduce

      1. Create a multi-node cluster (my test had 3).
      2. Load the travel-sample bucket.
      3. Create a view (can just use the default definition).
      4. Restart all nodes (so that all docs are compressed in memory).
      5. Run the attached program - views.cc (you may need to adjust this to point to your cluster with right design doc, user etc).

      Attachments

        1. views.cc
          2 kB
          Matt Carabine

        Issue Links

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

          Activity

            People

              avsej Sergey Avseyev
              matt.carabine Matt Carabine (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty