Description
When the SDK constructs a mutation token it does so in this order
return couchbase::mutation_token{
|
tokenData.partitionUuid, tokenData.partitionId,
|
static_cast<uint16_t>(tokenData.sequenceNumber), tokenData.bucketName};
|
however the definition defines them in this order
explicit mutation_token(std::uint64_t partition_uuid,
|
std::uint64_t sequence_number,
|
std::uint16_t partition_id,
|
std::string bucket_name)
|
: partition_uuid_{ partition_uuid }
|
, sequence_number_{ sequence_number }
|
, partition_id_{ partition_id }
|
, bucket_name_{ std::move(bucket_name) }
|
This leads to the partition id and sequence number being swapped and any query using consistentWith timing out because the nonexistent mutation is never processed
Attachments
Gerrit Reviews
For Gerrit Dashboard: JSCBC-1107 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
181690,5 | JSCBC-1107: Fix Mutation Token construction | master | couchnode | Status: MERGED | +2 | +1 |