You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2009/08/10 20:57:03 UTC
svn commit: r802898 - in /incubator/cassandra/trunk: conf/storage-conf.xml
src/java/org/apache/cassandra/config/DatabaseDescriptor.java
src/java/org/apache/cassandra/service/CassandraDaemon.java
Author: eevans
Date: Mon Aug 10 18:57:03 2009
New Revision: 802898
URL: http://svn.apache.org/viewvc?rev=802898&view=rev
Log:
CASSANDRA-241 optional support for framed transport
Modified:
incubator/cassandra/trunk/conf/storage-conf.xml
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraDaemon.java
Modified: incubator/cassandra/trunk/conf/storage-conf.xml
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/conf/storage-conf.xml?rev=802898&r1=802897&r2=802898&view=diff
==============================================================================
--- incubator/cassandra/trunk/conf/storage-conf.xml (original)
+++ incubator/cassandra/trunk/conf/storage-conf.xml Mon Aug 10 18:57:03 2009
@@ -187,6 +187,11 @@
<ThriftAddress>localhost</ThriftAddress>
<!-- Thrift RPC port (the port clients connect to). -->
<ThriftPort>9160</ThriftPort>
+ <!-- Whether or not to use a framed transport for Thrift. If this option
+ is set to true then you must also use a framed transport on the
+ client-side, (framed and non-framed transports are not compatible).
+ -->
+ <ThriftFramedTransport>false</ThriftFramedTransport>
<!--======================================================================-->
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=802898&r1=802897&r2=802898&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java Mon Aug 10 18:57:03 2009
@@ -52,6 +52,7 @@
private static int storagePort_ = 7000;
private static int controlPort_ = 7001;
private static int thriftPort_ = 9160;
+ private static boolean thriftFramed_ = false;
private static String listenAddress_; // leave null so we can fall through to getLocalHost
private static String thriftAddress_;
private static String clusterName_ = "Test";
@@ -263,6 +264,23 @@
if (port != null)
thriftPort_ = Integer.parseInt(port);
+ /* Framed (Thrift) transport (default to "no") */
+ String framedRaw = xmlUtils.getNodeValue("/Storage/ThriftFramedTransport");
+ if (framedRaw != null)
+ {
+ if (framedRaw.compareToIgnoreCase("true") == 0 ||
+ framedRaw.compareToIgnoreCase("false") == 0)
+ {
+ thriftFramed_ = Boolean.valueOf(framedRaw);
+ }
+ else
+ {
+ throw new ConfigurationException("Unrecognized value " +
+ "for ThriftFramedTransport. Use 'true' or 'false'.");
+ }
+ }
+
+
/* Number of days to keep the memtable around w/o flushing */
String lifetime = xmlUtils.getNodeValue("/Storage/MemtableLifetimeInDays");
if ( lifetime != null )
@@ -524,6 +542,11 @@
}
}
+ public static boolean isThriftFramed()
+ {
+ return thriftFramed_;
+ }
+
private static AbstractType getComparator(Node columnFamily, String attr)
throws ConfigurationException, TransformerException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException
{
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraDaemon.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraDaemon.java?rev=802898&r1=802897&r2=802898&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraDaemon.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraDaemon.java Mon Aug 10 18:57:03 2009
@@ -30,6 +30,7 @@
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;
import org.apache.thrift.transport.TTransportFactory;
+import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.TProcessorFactory;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.utils.FBUtilities;
@@ -107,14 +108,28 @@
// Protocol factory
TProtocolFactory tProtocolFactory = new TBinaryProtocol.Factory();
+
+ // Transport factory
+ TTransportFactory inTransportFactory, outTransportFactory;
+ if (DatabaseDescriptor.isThriftFramed())
+ {
+ inTransportFactory = new TFramedTransport.Factory();
+ outTransportFactory = new TFramedTransport.Factory();
+
+ }
+ else
+ {
+ inTransportFactory = new TTransportFactory();
+ outTransportFactory = new TTransportFactory();
+ }
// ThreadPool Server
TThreadPoolServer.Options options = new TThreadPoolServer.Options();
options.minWorkerThreads = 64;
serverEngine = new TThreadPoolServer(new TProcessorFactory(processor),
tServerSocket,
- new TTransportFactory(),
- new TTransportFactory(),
+ inTransportFactory,
+ outTransportFactory,
tProtocolFactory,
tProtocolFactory,
options);