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

        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