Author: [email protected]
Date: Fri Mar 30 10:35:04 2012
New Revision: 2167
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:
trunk/amdatu-cassandra/_patches/
trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-142.patch
trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-171.patch
trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-172.patch
trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-181.patch
trunk/amdatu-cassandra/_patches/patches overview.txt
Modified:
trunk/amdatu-cassandra/cassandra-hector/pom.xml
Added: trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-142.patch
==============================================================================
--- (empty file)
+++ trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-142.patch Fri Mar 30
10:35:04 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: trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-171.patch
==============================================================================
--- (empty file)
+++ trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-171.patch Fri Mar 30
10:35:04 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: trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-172.patch
==============================================================================
--- (empty file)
+++ trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-172.patch Fri Mar 30
10:35:04 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: trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-181.patch
==============================================================================
--- (empty file)
+++ trunk/amdatu-cassandra/_patches/AMDATUCASSANDRA-181.patch Fri Mar 30
10:35:04 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: trunk/amdatu-cassandra/_patches/patches overview.txt
==============================================================================
--- (empty file)
+++ trunk/amdatu-cassandra/_patches/patches overview.txt Fri Mar 30
10:35:04 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
\ No newline at end of file
Modified: trunk/amdatu-cassandra/cassandra-hector/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-hector/pom.xml (original)
+++ trunk/amdatu-cassandra/cassandra-hector/pom.xml Fri Mar 30 10:35:04 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