Return-Path: Delivered-To: apmail-incubator-cassandra-commits-archive@minotaur.apache.org Received: (qmail 19161 invoked from network); 30 Sep 2009 19:27:54 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 30 Sep 2009 19:27:54 -0000 Received: (qmail 54674 invoked by uid 500); 30 Sep 2009 19:27:54 -0000 Delivered-To: apmail-incubator-cassandra-commits-archive@incubator.apache.org Received: (qmail 54652 invoked by uid 500); 30 Sep 2009 19:27:53 -0000 Mailing-List: contact cassandra-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cassandra-dev@incubator.apache.org Delivered-To: mailing list cassandra-commits@incubator.apache.org Received: (qmail 54642 invoked by uid 99); 30 Sep 2009 19:27:53 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Sep 2009 19:27:53 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Sep 2009 19:27:50 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 94DAD238890A; Wed, 30 Sep 2009 19:26:58 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r820408 - in /incubator/cassandra/trunk: ./ interface/gen-java/org/apache/cassandra/service/ src/java/org/ src/java/org/apache/cassandra/db/ test/unit/org/ test/unit/org/apache/cassandra/db/ Date: Wed, 30 Sep 2009 19:26:58 -0000 To: cassandra-commits@incubator.apache.org From: jbellis@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090930192658.94DAD238890A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jbellis Date: Wed Sep 30 19:26:57 2009 New Revision: 820408 URL: http://svn.apache.org/viewvc?rev=820408&view=rev Log: merge from 0.4 branch Modified: incubator/cassandra/trunk/ (props changed) incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java (props changed) incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Column.java (props changed) incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java (props changed) incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java (props changed) incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/SuperColumn.java (props changed) incubator/cassandra/trunk/src/java/org/ (props changed) incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Column.java incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IColumn.java incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Row.java incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java incubator/cassandra/trunk/test/unit/org/ (props changed) incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java Propchange: incubator/cassandra/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,2 +1,2 @@ /incubator/cassandra/branches/cassandra-0.3:774578-796573 -/incubator/cassandra/branches/cassandra-0.4:810145-819824 +/incubator/cassandra/branches/cassandra-0.4:810145-820400 Propchange: incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,3 +1,3 @@ /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573 -/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-819824 +/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-820400 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java:749219-768588 Propchange: incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Column.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,4 +1,4 @@ /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198 -/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-819824 +/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-820400 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Column.java:749219-794428 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/column_t.java:749219-768588 Propchange: incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,3 +1,3 @@ /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573 -/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-819824 +/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-820400 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:749219-768588 Propchange: incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,3 +1,3 @@ /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573 -/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-819824 +/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-820400 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:749219-768588 Propchange: incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/SuperColumn.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,4 +1,4 @@ /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198 -/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-819824 +/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-820400 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:749219-794428 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:749219-768588 Propchange: incubator/cassandra/trunk/src/java/org/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,3 +1,3 @@ /incubator/cassandra/branches/cassandra-0.3/src/java/org:774578-796573 -/incubator/cassandra/branches/cassandra-0.4/src/java/org:810145-819824 +/incubator/cassandra/branches/cassandra-0.4/src/java/org:810145-820400 /incubator/cassandra/trunk/src/java/org:749219-769885 Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Column.java URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Column.java?rev=820408&r1=820407&r2=820408&view=diff ============================================================================== --- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Column.java (original) +++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Column.java Wed Sep 30 19:26:57 2009 @@ -20,10 +20,13 @@ import java.util.Collection; import java.nio.ByteBuffer; +import java.security.MessageDigest; +import java.io.IOException; import org.apache.commons.lang.ArrayUtils; import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.io.DataOutputBuffer; /** @@ -172,13 +175,21 @@ return null; } - public byte[] digest() + public void updateDigest(MessageDigest digest) { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(name); - stringBuilder.append(":"); - stringBuilder.append(timestamp); - return stringBuilder.toString().getBytes(); + digest.update(name); + digest.update(value); + DataOutputBuffer buffer = new DataOutputBuffer(); + try + { + buffer.writeLong(timestamp); + buffer.writeBoolean(isMarkedForDelete); + } + catch (IOException e) + { + throw new RuntimeException(e); + } + digest.update(buffer.getData(), 0, buffer.getLength()); } public int getLocalDeletionTime() Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java?rev=820408&r1=820407&r2=820408&view=diff ============================================================================== --- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java (original) +++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java Wed Sep 30 19:26:57 2009 @@ -26,12 +26,11 @@ import java.util.SortedSet; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.ConcurrentSkipListMap; +import java.security.MessageDigest; -import org.apache.commons.lang.ArrayUtils; import org.apache.log4j.Logger; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.io.ICompactSerializer2; import org.apache.cassandra.db.filter.QueryPath; import org.apache.cassandra.db.marshal.AbstractType; @@ -347,21 +346,12 @@ return sb.toString(); } - public byte[] digest() + public void updateDigest(MessageDigest digest) { - byte[] xorHash = ArrayUtils.EMPTY_BYTE_ARRAY; for (IColumn column : columns_.values()) { - if (xorHash.length == 0) - { - xorHash = column.digest(); - } - else - { - xorHash = FBUtilities.xor(xorHash, column.digest()); - } + column.updateDigest(digest); } - return xorHash; } public long getMarkedForDeleteAt() Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IColumn.java URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IColumn.java?rev=820408&r1=820407&r2=820408&view=diff ============================================================================== --- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IColumn.java (original) +++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IColumn.java Wed Sep 30 19:26:57 2009 @@ -19,6 +19,7 @@ package org.apache.cassandra.db; import java.util.Collection; +import java.security.MessageDigest; import org.apache.cassandra.db.marshal.AbstractType; @@ -42,7 +43,7 @@ public void addColumn(IColumn column); public IColumn diff(IColumn column); public int getObjectCount(); - public byte[] digest(); + public void updateDigest(MessageDigest digest); public int getLocalDeletionTime(); // for tombstone GC, so int is sufficient granularity public String getString(AbstractType comparator); } Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Row.java URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Row.java?rev=820408&r1=820407&r2=820408&view=diff ============================================================================== --- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Row.java (original) +++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Row.java Wed Sep 30 19:26:57 2009 @@ -26,6 +26,8 @@ import java.util.Map; import java.util.Set; import java.util.Arrays; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; @@ -167,20 +169,22 @@ public byte[] digest() { - Set cfamilies = columnFamilies_.keySet(); - byte[] xorHash = ArrayUtils.EMPTY_BYTE_ARRAY; - for (String cFamily : cfamilies) + MessageDigest digest; + try { - if (xorHash.length == 0) - { - xorHash = columnFamilies_.get(cFamily).digest(); - } - else - { - xorHash = FBUtilities.xor(xorHash, columnFamilies_.get(cFamily).digest()); - } + digest = MessageDigest.getInstance("MD5"); } - return xorHash; + catch (NoSuchAlgorithmException e) + { + throw new AssertionError(e); + } + + for (String cFamily : columnFamilies_.keySet()) + { + columnFamilies_.get(cFamily).updateDigest(digest); + } + + return digest.digest(); } void clear() Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java?rev=820408&r1=820407&r2=820408&view=diff ============================================================================== --- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java (original) +++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java Wed Sep 30 19:26:57 2009 @@ -23,15 +23,13 @@ import java.util.Arrays; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.ConcurrentSkipListMap; +import java.security.MessageDigest; -import org.apache.commons.lang.ArrayUtils; import org.apache.log4j.Logger; -import org.apache.cassandra.utils.FBUtilities; -import org.apache.cassandra.io.ICompactSerializer; import org.apache.cassandra.io.ICompactSerializer2; +import org.apache.cassandra.io.DataOutputBuffer; import org.apache.cassandra.db.marshal.AbstractType; -import org.apache.cassandra.db.marshal.MarshalException; public final class SuperColumn implements IColumn, IColumnContainer @@ -270,17 +268,24 @@ return null; } - public byte[] digest() + public void updateDigest(MessageDigest digest) { - byte[] xorHash = ArrayUtils.EMPTY_BYTE_ARRAY; - if(name_ == null) - return xorHash; - xorHash = name_.clone(); - for(IColumn column : columns_.values()) - { - xorHash = FBUtilities.xor(xorHash, column.digest()); - } - return xorHash; + assert name_ != null; + digest.update(name_); + DataOutputBuffer buffer = new DataOutputBuffer(); + try + { + buffer.writeLong(markedForDeleteAt); + } + catch (IOException e) + { + throw new RuntimeException(e); + } + digest.update(buffer.getData(), 0, buffer.getLength()); + for (IColumn column : columns_.values()) + { + column.updateDigest(digest); + } } public String getString(AbstractType comparator) Propchange: incubator/cassandra/trunk/test/unit/org/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 30 19:26:57 2009 @@ -1,3 +1,3 @@ /incubator/cassandra/branches/cassandra-0.3/test/unit/org:774578-796573 -/incubator/cassandra/branches/cassandra-0.4/test/unit/org:810145-819824 +/incubator/cassandra/branches/cassandra-0.4/test/unit/org:810145-820400 /incubator/cassandra/trunk/test/unit/org:749219-768583 Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java?rev=820408&r1=820407&r2=820408&view=diff ============================================================================== --- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java (original) +++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java Wed Sep 30 19:26:57 2009 @@ -130,11 +130,4 @@ //addcolumns will only add if timestamp >= old timestamp assert Arrays.equals(val, cf_result.getColumn("col2".getBytes()).value()); } - - @Test - public void testEmptyDigest() - { - ColumnFamily cf = ColumnFamily.create("Keyspace1", "Standard1"); - assert cf.digest().length == 0; - } }