Author: [email protected]
Date: Fri Mar 30 10:41:42 2012
New Revision: 2168

Log:
[AMDATUCASSANDRA-182] Created patch for libthrift 0.6.1 and updates hector pom 
to use this patch. Also added a _patches folder containing all patches applied 
on (external) Cassandra related libraries.

Added:
   branches/amdatu-cassandra-0.2.3/_patches/
   branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-142.patch
   branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-171.patch
   branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-172.patch
   branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-181.patch
   branches/amdatu-cassandra-0.2.3/_patches/patches overview.txt
Modified:
   branches/amdatu-cassandra-0.2.3/cassandra-hector/pom.xml

Added: branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-142.patch
==============================================================================
--- (empty file)
+++ branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-142.patch  Fri Mar 
30 10:41:42 2012
@@ -0,0 +1,38 @@
+Index: lib/java/src/org/apache/thrift/TByteArrayOutputStream.java
+===================================================================
+--- lib/java/src/org/apache/thrift/TByteArrayOutputStream.java (revision 
1212300)
++++ lib/java/src/org/apache/thrift/TByteArrayOutputStream.java (working copy)
+@@ -27,19 +27,30 @@
+  *
+  */
+ public class TByteArrayOutputStream extends ByteArrayOutputStream {
++  
++  private final int initialSize;
++  
+   public TByteArrayOutputStream(int size) {
+     super(size);
++    this.initialSize = size;
+   }
+ 
+   public TByteArrayOutputStream() {
+-    super();
++    this(32);
+   }
+ 
+   public byte[] get() {
+     return buf;
+   }
+ 
++  public void reset() {
++    super.reset();
++    if (buf.length > initialSize) {
++      buf = new byte[initialSize];
++    }
++  }
++
+   public int len() {
+     return count;
+   }
+-}
++}
+\ No newline at end of file

Added: branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-171.patch
==============================================================================
--- (empty file)
+++ branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-171.patch  Fri Mar 
30 10:41:42 2012
@@ -0,0 +1,60 @@
+diff --git 
a/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java 
b/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java
+index 8559b31..701dabd 100644
+--- a/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java
++++ b/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java
+@@ -44,15 +44,19 @@ public class RangeSliceResponseResolver implements 
IResponseResolver<Iterable<Ro
+ {
+     private static final Logger logger_ = 
LoggerFactory.getLogger(RangeSliceResponseResolver.class);
+     private final String table;
+-    private final List<InetAddress> sources;
++    private List<InetAddress> sources;
+     protected final Collection<Message> responses = new 
LinkedBlockingQueue<Message>();;
+ 
+-    public RangeSliceResponseResolver(String table, List<InetAddress> sources)
++    public RangeSliceResponseResolver(String table)
+     {
+-        this.sources = sources;
+         this.table = table;
+     }
+ 
++    public void setSources(List<InetAddress> endpoints)
++    {
++        this.sources = endpoints;
++    }
++    
+     public List<Row> getData() throws IOException
+     {
+         Message response = responses.iterator().next();
+diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java 
b/src/java/org/apache/cassandra/service/StorageProxy.java
+index 296b11a..85e728c 100644
+--- a/src/java/org/apache/cassandra/service/StorageProxy.java
++++ b/src/java/org/apache/cassandra/service/StorageProxy.java
+@@ -699,9 +699,10 @@ public class StorageProxy implements StorageProxyMBean
+                     RangeSliceCommand c2 = new 
RangeSliceCommand(command.keyspace, command.column_family, 
command.super_column, command.predicate, range, command.max_keys);
+ 
+                     // collect replies and resolve according to consistency 
level
+-                    RangeSliceResponseResolver resolver = new 
RangeSliceResponseResolver(command.keyspace, liveEndpoints);
++                    RangeSliceResponseResolver resolver = new 
RangeSliceResponseResolver(command.keyspace);
+                     ReadCallback<Iterable<Row>> handler = 
getReadCallback(resolver, command, consistency_level, liveEndpoints);
+                     handler.assureSufficientLiveNodes();
++                    resolver.setSources(handler.endpoints);
+                     for (InetAddress endpoint : handler.endpoints)
+                     {
+                         MessagingService.instance().sendRR(c2, endpoint, 
handler);
+@@ -955,7 +956,7 @@ public class StorageProxy implements StorageProxyMBean
+             
DatabaseDescriptor.getEndpointSnitch().sortByProximity(FBUtilities.getLocalAddress(),
 liveEndpoints);
+ 
+             // collect replies and resolve according to consistency level
+-            RangeSliceResponseResolver resolver = new 
RangeSliceResponseResolver(keyspace, liveEndpoints);
++            RangeSliceResponseResolver resolver = new 
RangeSliceResponseResolver(keyspace);
+             IReadCommand iCommand = new IReadCommand()
+             {
+                 public String getKeyspace()
+@@ -965,6 +966,7 @@ public class StorageProxy implements StorageProxyMBean
+             };
+             ReadCallback<Iterable<Row>> handler = getReadCallback(resolver, 
iCommand, consistency_level, liveEndpoints);
+             handler.assureSufficientLiveNodes();
++            resolver.setSources(handler.endpoints);
+ 
+             IndexScanCommand command = new IndexScanCommand(keyspace, 
column_family, index_clause, column_predicate, range);
+             MessageProducer producer = new CachingMessageProducer(command);

Added: branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-172.patch
==============================================================================
--- (empty file)
+++ branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-172.patch  Fri Mar 
30 10:41:42 2012
@@ -0,0 +1,61 @@
+diff --git a/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java 
b/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
+index 9f796f9..fe730dc 100644
+--- a/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
++++ b/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
+@@ -23,12 +23,14 @@ package org.apache.cassandra.db;
+ 
+ import java.io.DataInput;
+ import java.io.DataOutput;
++import java.io.EOFException;
+ import java.io.IOException;
+ import java.util.Collection;
+ 
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ 
++import org.apache.cassandra.config.DatabaseDescriptor;
+ import org.apache.cassandra.config.CFMetaData;
+ import org.apache.cassandra.io.ICompactSerializer2;
+ import org.apache.cassandra.io.ICompactSerializer3;
+@@ -121,10 +123,22 @@ public class ColumnFamilySerializer implements 
ICompactSerializer3<ColumnFamily>
+         int cfId = dis.readInt();
+         if (CFMetaData.getCF(cfId) == null)
+             throw new UnserializableColumnFamilyException("Couldn't find 
cfId=" + cfId, cfId);
+-        ColumnFamily cf = ColumnFamily.create(cfId);
+-        deserializeFromSSTableNoColumns(cf, dis);
+-        deserializeColumns(dis, cf, intern, fromRemote);
+-        return cf;
++        try {
++            ColumnFamily cf = ColumnFamily.create(cfId);
++            deserializeFromSSTableNoColumns(cf, dis);
++            deserializeColumns(dis, cf, intern, fromRemote);
++            return cf;
++        } catch (EOFException eof) {
++            String cfName = null;
++            try {
++                cfName = DatabaseDescriptor.getCFMetaData(cfId).cfName;
++            } catch (Exception e) {
++                cfName = "Unknown";
++            }
++
++            String msg = "Could not deserialize ColumnFamily: id='" + cfId + 
"', name='" + cfName + "'";
++            throw new UnserializableColumnFamilyException(msg, eof, cfId);
++        }
+     }
+ 
+     public void deserializeColumns(DataInput dis, ColumnFamily cf, boolean 
intern, boolean fromRemote) throws IOException
+diff --git 
a/src/java/org/apache/cassandra/db/UnserializableColumnFamilyException.java 
b/src/java/org/apache/cassandra/db/UnserializableColumnFamilyException.java
+index df46b28..425ca44 100644
+--- a/src/java/org/apache/cassandra/db/UnserializableColumnFamilyException.java
++++ b/src/java/org/apache/cassandra/db/UnserializableColumnFamilyException.java
+@@ -30,4 +30,10 @@ public class UnserializableColumnFamilyException extends 
IOException
+         super(msg);
+         this.cfId = cfId;
+     }
++    
++    public UnserializableColumnFamilyException(String msg, Throwable t, int 
cfId)
++    {
++        super(msg, t);
++        this.cfId = cfId;
++    }
+ }

Added: branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-181.patch
==============================================================================
--- (empty file)
+++ branches/amdatu-cassandra-0.2.3/_patches/AMDATUCASSANDRA-181.patch  Fri Mar 
30 10:41:42 2012
@@ -0,0 +1,13 @@
+diff --git 
a/core/src/main/java/me/prettyprint/cassandra/connection/HConnectionManager.java
 
b/core/src/main/java/me/prettyprint/cassandra/connection/HConnectionManager.java
+index e7f139b..c7b9e5c 100644
+--- 
a/core/src/main/java/me/prettyprint/cassandra/connection/HConnectionManager.java
++++ 
b/core/src/main/java/me/prettyprint/cassandra/connection/HConnectionManager.java
+@@ -279,7 +279,7 @@ public class HConnectionManager {
+           throw he;
+ 
+         log.warn("Could not fullfill request on this host {}", client);
+-        log.warn("Exception: ", he);
++        log.warn("An exception has occurred: " + he.toString() + ". Retries 
left: " + retries);
+         monitor.incCounter(Counter.SKIP_HOST_SUCCESS);
+         sleepBetweenHostSkips(op.failoverPolicy);
+       } finally {

Added: branches/amdatu-cassandra-0.2.3/_patches/patches overview.txt
==============================================================================
--- (empty file)
+++ branches/amdatu-cassandra-0.2.3/_patches/patches overview.txt       Fri Mar 
30 10:41:42 2012
@@ -0,0 +1,27 @@
+Patch overview
+
+
+Apache Cassandra 0.8.10
+-----------------------
+http://jira.amdatu.org/jira/browse/AMDATUCASSANDRA-171
+QUORUM range scan read triggers unnecessary row mutation in a 3-node cluster 
with RF 3
+-> 0.8.10-2
+
+http://jira.amdatu.org/jira/browse/AMDATUCASSANDRA-172
+Cassandra should skip corrupted commit log entries
+-> 0.8.10-3
+
+
+Hector core 0.8.0-3
+-------------------
+http://jira.amdatu.org/jira/browse/AMDATUCASSANDRA-181
+Hector logs verbose warnings and stacktraces when a node is down
+-> 0.8.0-3-2
+
+
+Apache Thrift
+---------
+http://jira.amdatu.org/jira/browse/AMDATUCASSANDRA-142
+memory leak in hector/thrift connection pool
+-> 0.6.0-2
+-> 0.6.1-2

Modified: branches/amdatu-cassandra-0.2.3/cassandra-hector/pom.xml
==============================================================================
--- branches/amdatu-cassandra-0.2.3/cassandra-hector/pom.xml    (original)
+++ branches/amdatu-cassandra-0.2.3/cassandra-hector/pom.xml    Fri Mar 30 
10:41:42 2012
@@ -47,6 +47,21 @@
       <version>${slf4j.version}</version>
       <scope>compile</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.thrift</groupId>
+      <artifactId>libthrift</artifactId>
+      <version>0.6.1-2</version>
+      <exclusions>
+        <exclusion>
+          <groupId>javax.servlet</groupId>
+          <artifactId>servlet-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.httpcomponents</groupId>
+          <artifactId>httpclient</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
   </dependencies>
 
   <build>
@@ -65,7 +80,10 @@
               me.prettyprint.cassandra.*;version="1.0.2",,
               org.apache.cassandra.thrift.*,
               org.apache.thrift.*,
+              !com.sun.jdmk.comm,
               !com.sun.xml.fastinfoset.stax,
+              !javax.jms,
+              !javax.mail.*,
               !org.apache.http.*,
               *
             </Import-Package>
@@ -73,9 +91,9 @@
               me.prettyprint.hector.*;version="1.0.2",
               me.prettyprint.cassandra.*;version="1.0.2",
               org.apache.cassandra.thrift.*;version="1.0.0",
-              org.apache.thrift.*;version="1.0.0",
+              org.apache.thrift.*;version="1.0.0"
             </Export-Package>
-            
<Embed-Dependency>!slf4j-log4j12|cassandra-thrift|hector-core;scope=compile</Embed-Dependency>
+            
<Embed-Dependency>!slf4j-log4j12|cassandra-thrift|hector-core|libthrift;scope=compile</Embed-Dependency>
             <Embed-Transitive>true</Embed-Transitive>
           </instructions>
         </configuration>
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to