Return-Path: X-Original-To: apmail-cassandra-user-archive@www.apache.org Delivered-To: apmail-cassandra-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E54E3734F for ; Wed, 2 Nov 2011 00:07:30 +0000 (UTC) Received: (qmail 83663 invoked by uid 500); 2 Nov 2011 00:07:28 -0000 Delivered-To: apmail-cassandra-user-archive@cassandra.apache.org Received: (qmail 83635 invoked by uid 500); 2 Nov 2011 00:07:28 -0000 Mailing-List: contact user-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@cassandra.apache.org Delivered-To: mailing list user@cassandra.apache.org Received: (qmail 83627 invoked by uid 99); 2 Nov 2011 00:07:28 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Nov 2011 00:07:28 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=FROM_12LTRDOM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of mike@mailchannels.com designates 74.125.82.172 as permitted sender) Received: from [74.125.82.172] (HELO mail-wy0-f172.google.com) (74.125.82.172) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Nov 2011 00:07:20 +0000 Received: by wyg30 with SMTP id 30so3096906wyg.31 for ; Tue, 01 Nov 2011 17:06:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.com; s=google; h=mime-version:from:date:message-id:subject:to:content-type; bh=oPwt84ERcWcgVFCI+Xc6wkco0Tt8vnUyC7CMVGMdymY=; b=i/0q92YpQkbR0dWtEuoP0uEeTJeHguPTUJj0mnq9Mzl7h4yx+5+NUitRCOB5M1zObZ Ny5+dav3bQv5nmr8fJJ4QsDavPS766TvEVZt+F5AFwaCDAST6/RJY5/0UPK/9j93i5tY t/a2FmfRYhhDzSJgPppgTdJdBpaQjDcbcaFhI= Received: by 10.216.155.210 with SMTP id j60mr3506944wek.108.1320192419461; Tue, 01 Nov 2011 17:06:59 -0700 (PDT) Received: from mail-ww0-f44.google.com (mail-ww0-f44.google.com [74.125.82.44]) by mx.google.com with ESMTPS id l20sm1097856wbo.6.2011.11.01.17.06.57 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 01 Nov 2011 17:06:58 -0700 (PDT) Received: by wwi36 with SMTP id 36so3261072wwi.25 for ; Tue, 01 Nov 2011 17:06:57 -0700 (PDT) Received: by 10.216.229.227 with SMTP id h77mr975855weq.51.1320192417284; Tue, 01 Nov 2011 17:06:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.160.132 with HTTP; Tue, 1 Nov 2011 17:06:36 -0700 (PDT) From: Mike Smith Date: Tue, 1 Nov 2011 17:06:36 -0700 Message-ID: Subject: Problem SliceByNamesReadCommand on super column family after flush operation To: user@cassandra.apache.org Content-Type: multipart/alternative; boundary=0016e65a09e41141d504b0b540bd X-Virus-Checked: Checked by ClamAV on apache.org --0016e65a09e41141d504b0b540bd Content-Type: text/plain; charset=ISO-8859-1 Hi, I'm having a problem with doing a multiget_slice on a super column family after its first flush. Updates to the column values work properly, but trying to retrieve the updated values using a multiget_slice operation fail to get the updated values. Instead they return the values from before the flush. I've seen this problem in Cassandra v1.0.0 and v1.0.1. The problem is not present in Cassandra v0.7.6. Steps to reproduce: 1. Create one or more super column entries 2. Verify the sub column values can be updated and that you can retrieve the new values 3. Use nodetool to flush the column family or restart cassandra 4. Update the sub column values 5. Verify they have been updated using cassandra-cli 6. Verify you *DO NOT* get the updated values when doing a multiget_slice; instead you get the old values from before the flush You can get the most recent value by doing a flush followed by a major compaction. However, future updates are not retrieved properly either. With debug turned on, it looks like the multiget_slice query uses the following command/consistency level: SliceByNamesReadCommand(table='test_cassandra', key=666f6f, columnParent='QueryPath(columnFamilyName='test', superColumnName='null', columnName='null')', columns=[foo,])/QUORUM. Cassandra-cli uses the following command/consistency level for a get_slice: SliceFromReadCommand(table='test_cassandra', key='666f6f', column_parent='QueryPath(columnFamilyName='test', superColumnName='null', columnName='null')', start='', finish='', reversed=false, count=1000000)/QUORUM Notice the test program gets 'bar2' for the column values and cassandra-cli gets 'bar3' for the column values: tcpdump from test program using hector-core:1.0-1 16:46:07.424562 IP iam.47158 > iam.9160: Flags [P.], seq 55:138, ack 30, win 257, options [nop,nop,TS val 27474096 ecr 27474095], length 83 E....#@.@.PK.........6#.....].8......{..... ..8...8.........multiget_slice................foo..........test................foo......... 16:46:07.424575 IP iam.9160 > iam.47158: Flags [.], ack 138, win 256, options [nop,nop,TS val 27474096 ecr 27474096], length 0 E..4..@.@.<.........#..6].8..........(..... ..8...8. 16:46:07.428771 IP iam.9160 > iam.47158: Flags [P.], seq 30:173, ack 138, win 256, options [nop,nop,TS val 27474097 ecr 27474096], length 143 @.@.<&........#..6].8................ ............foo...............foo...............foo1.......bar2 ........6h........foo2.......bar2 ........I..... tcpdump of cassandra-cli: 16:30:55.945123 IP iam.47134 > iam.9160: Flags [P.], seq 370:479, ack 5310, win 387, options [nop,nop,TS val 27246226 ecr 27241207], length 109 E.....@.@.9q..........#..n.X\ ............. ................get_range_slices..............test.........................................................d......... 16:30:55.945152 IP iam.9160 > iam.47134: Flags [.], ack 479, win 256, options [nop,nop,TS val 27246226 ecr 27246226], length 0 E..4..@.@.".........#...\ ...n.......(..... ........ 16:30:55.949245 IP iam.9160 > iam.47134: Flags [P.], seq 5310:5461, ack 479, win 256, options [nop,nop,TS val 27246227 ecr 27246226], length 151 E.....@.@."V........#...\ ...n............. ....................get_range_slices...................foo..................foo...............foo1.......bar3 ........&.........foo2.......bar3 ........: ..... --0016e65a09e41141d504b0b540bd Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

I'm having a problem with doing a multiget_slice= on a super column family after its first flush. Updates to the column valu= es work properly, but trying to retrieve the updated values using a multige= t_slice operation fail to get the updated values. Instead they return the v= alues from before the flush. I've seen this problem in Cassandra v1.0.0= and v1.0.1. The problem is not present in Cassandra v0.7.6.

Steps to reproduce:
  1. Create one o= r more super column entries
  2. Verify the sub column values can be upd= ated and that you can retrieve the new values
  3. Use nodetool to flush= the column family or restart cassandra
  4. Update the sub column values
  5. Verify they have been updated usin= g cassandra-cli
  6. Verify you DO NOT get the updated values whe= n doing a multiget_slice; instead you get the old values from before the fl= ush
You can get the most recent value by doing a flush followed by a = major compaction. However, future updates are not retrieved properly either= .=A0

With debug turned on, it looks like the multi= get_slice query uses the following command/consistency level:
SliceByNamesReadCommand(table=3D'test_cassandra', key=3D666f6f= , columnParent=3D'QueryPath(columnFamilyName=3D'test', superCol= umnName=3D'null', columnName=3D'null')', columns=3D[foo= ,])/QUORUM.

Cassandra-cli uses the following command/consiste= ncy level for a get_slice:
SliceFromReadCommand(table=3D'test= _cassandra', key=3D'666f6f', column_parent=3D'QueryPath(col= umnFamilyName=3D'test', superColumnName=3D'null', columnNam= e=3D'null')', start=3D'', finish=3D'', reversed= =3Dfalse, count=3D1000000)/QUORUM

Notice the test program gets 'bar2' for the col= umn values and cassandra-cli gets 'bar3' for the column values:

tcpdump from test program using hector-core:1.0-1

16:46:07.424562 IP iam.47158 > iam.9160: Flags = [P.], seq 55:138, ack 30, win 257, options [nop,nop,TS val 27474096 ecr 274= 74095], length 83
E....#@.@.PK.........6#.....].8......{.....
..8...8.........multiget_slice................foo..........test.......= .........foo.........
16:46:07.424575 IP iam.9160 > iam.47158:= Flags [.], ack 138, win 256, options [nop,nop,TS val 27474096 ecr 27474096= ], length 0
E..4..@.@.<.........#..6].8..........(.....
..8...8.
16:46:07.428771 IP iam.9160 > iam.47158: Flags [P.], seq 30:173, a= ck 138, win 256, options [nop,nop,TS val 27474097 ecr 27474096], length 143=
@.@.<&........#..6].8................
............foo= ...............foo...............foo1.......bar2
........6h......= ..foo2.......bar2
........I.....


tcpdump of cassandra-cli:

16:3= 0:55.945123 IP iam.47134 > iam.9160: Flags [P.], seq 370:479, ack 5310, = win 387, options [nop,nop,TS val 27246226 ecr 27241207], length 109
E.....@.@.9q..........#..n.X\
.............
......= ..........get_range_slices..............test...............................= ..........................d.........
16:30:55.945152 IP iam.9160 = > iam.47134: Flags [.], ack 479, win 256, options [nop,nop,TS val 272462= 26 ecr 27246226], length 0
E..4..@.@.".........#...\
...n.......(.....
.= .......
16:30:55.949245 IP iam.9160 > iam.47134: Flags [P.], s= eq 5310:5461, ack 479, win 256, options [nop,nop,TS val 27246227 ecr 272462= 26], length 151
E.....@.@."V........#...\
...n.............
.= ...................get_range_slices...................foo..................= foo...............foo1.......bar3
........&.........foo2.....= ..bar3
........: .....


--0016e65a09e41141d504b0b540bd--