You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2011/07/29 16:21:09 UTC

svn commit: r1152233 [1/9] - in /cassandra/trunk: conf/ src/gen-java/ src/gen-java/org/ src/gen-java/org/apache/ src/gen-java/org/apache/cassandra/ src/gen-java/org/apache/cassandra/cli/ src/gen-java/org/apache/cassandra/cql/ src/java/org/apache/cassan...

Author: brandonwilliams
Date: Fri Jul 29 14:21:06 2011
New Revision: 1152233

URL: http://svn.apache.org/viewvc?rev=1152233&view=rev
Log:
Add asynchronous and half-sync/half-async thrift servers.
Patch by Vijay Parthasarathy, reviewed by brandonwilliams for
CASSANDRA-1405

Added:
    cassandra/trunk/src/gen-java/
    cassandra/trunk/src/gen-java/org/
    cassandra/trunk/src/gen-java/org/apache/
    cassandra/trunk/src/gen-java/org/apache/cassandra/
    cassandra/trunk/src/gen-java/org/apache/cassandra/cli/
    cassandra/trunk/src/gen-java/org/apache/cassandra/cli/Cli.tokens
    cassandra/trunk/src/gen-java/org/apache/cassandra/cli/CliLexer.java   (with props)
    cassandra/trunk/src/gen-java/org/apache/cassandra/cli/CliParser.java   (with props)
    cassandra/trunk/src/gen-java/org/apache/cassandra/cql/
    cassandra/trunk/src/gen-java/org/apache/cassandra/cql/Cql.tokens
    cassandra/trunk/src/gen-java/org/apache/cassandra/cql/CqlLexer.java   (with props)
    cassandra/trunk/src/gen-java/org/apache/cassandra/cql/CqlParser.java   (with props)
    cassandra/trunk/src/java/org/apache/cassandra/service/SocketSessionManagementService.java   (with props)
    cassandra/trunk/src/java/org/apache/cassandra/thrift/CustomTHsHaServer.java   (with props)
    cassandra/trunk/src/java/org/apache/cassandra/thrift/CustomTNonBlockingServer.java   (with props)
    cassandra/trunk/src/java/org/apache/cassandra/thrift/TCustomNonblockingServerSocket.java   (with props)
Modified:
    cassandra/trunk/conf/cassandra.yaml
    cassandra/trunk/conf/log4j-server.properties
    cassandra/trunk/src/java/org/apache/cassandra/concurrent/JMXEnabledThreadPoolExecutor.java
    cassandra/trunk/src/java/org/apache/cassandra/config/Config.java
    cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
    cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
    cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java

Modified: cassandra/trunk/conf/cassandra.yaml
URL: http://svn.apache.org/viewvc/cassandra/trunk/conf/cassandra.yaml?rev=1152233&r1=1152232&r2=1152233&view=diff
==============================================================================
--- cassandra/trunk/conf/cassandra.yaml (original)
+++ cassandra/trunk/conf/cassandra.yaml Fri Jul 29 14:21:06 2011
@@ -203,16 +203,35 @@ rpc_port: 9160
 # enable or disable keepalive on rpc connections
 rpc_keepalive: true
 
-# Cassandra uses thread-per-client for client RPC.  This can
-# be expensive in memory used for thread stack for a large
-# enough number of clients.  (Hence, connection pooling is
-# very, very strongly recommended.)
-# 
+# Cassandra provides you with a variety of options for RPC Server
+# sync  -> Creates one thread per connection but with a configurable number of
+#           threads.  This can be expensive in memory used for thread stack for
+#           a large enough number of clients.  (Hence, connection pooling is
+#           very, very strongly recommended.)
+#
+# async -> Nonblocking server implementation with one thread to serve 
+#           rpc connections.  This is not recommended for high throughput use
+#           cases.
+#
+# hsha  -> half sync and half async implementation with configurable number
+#           of worker threads (For managing connections).  IO Management is
+#           done by a set of threads currently equal to the number of
+#           processors in the system. The number of threads in the threadpool
+#           is configured via rpc_min_threads and rpc_max_threads.  (Connection
+#           pooling is strongly recommended in this case too.) 
+
+rpc_server_type: sync
+
 # Uncomment rpc_min|max|thread to set request pool size.
-# You would primarily set max as a safeguard against misbehaved
-# clients; if you do hit the max, Cassandra will block until
-# one disconnects before accepting more.  The defaults are
-# min of 16 and max unlimited.
+# You would primarily set max for the sync server to safeguard against
+# misbehaved clients; if you do hit the max, Cassandra will block until one
+# disconnects before accepting more.  The defaults are min of 16 and max
+# unlimited.
+# 
+# For the Hsha server, you would set the max so that a fair amount of resources
+# are provided to the other working threads on the server.
+#
+# This configuration is not used for the async server.
 #
 # rpc_min_threads: 16
 # rpc_max_threads: 2048

Modified: cassandra/trunk/conf/log4j-server.properties
URL: http://svn.apache.org/viewvc/cassandra/trunk/conf/log4j-server.properties?rev=1152233&r1=1152232&r2=1152233&view=diff
==============================================================================
--- cassandra/trunk/conf/log4j-server.properties (original)
+++ cassandra/trunk/conf/log4j-server.properties Fri Jul 29 14:21:06 2011
@@ -39,3 +39,6 @@ log4j.appender.R.File=/var/log/cassandra
 #log4j.logger.org.apache.cassandra.db=DEBUG
 #log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG
 
+# Adding this to avoid thrift logging disconnect errors.
+log4j.logger.org.apache.thrift.server.TNonblockingServer=ERROR
+

Added: cassandra/trunk/src/gen-java/org/apache/cassandra/cli/Cli.tokens
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/gen-java/org/apache/cassandra/cli/Cli.tokens?rev=1152233&view=auto
==============================================================================
--- cassandra/trunk/src/gen-java/org/apache/cassandra/cli/Cli.tokens (added)
+++ cassandra/trunk/src/gen-java/org/apache/cassandra/cli/Cli.tokens Fri Jul 29 14:21:06 2011
@@ -0,0 +1,139 @@
+NODE_THRIFT_GET_WITH_CONDITIONS=15
+TTL=76
+NODE_SHOW_KEYSPACES=13
+CONDITION=38
+COUNT=67
+DecimalDigit=97
+Identifier=73
+NODE_UPDATE_COLUMN_FAMILY=26
+SingleStringCharacter=89
+NODE_USE_TABLE=7
+NODE_DEL_KEYSPACE=23
+CREATE=56
+NODE_CONNECT=4
+CONNECT=46
+INCR=64
+SingleEscapeCharacter=94
+FAMILY=59
+GET=62
+NODE_DESCRIBE_TABLE=5
+COMMENT=100
+SHOW=53
+ARRAY=40
+NODE_ADD_KEYSPACE=22
+EXIT=51
+NODE_THRIFT_DEL=18
+IntegerNegativeLiteral=80
+ON=78
+NODE_DROP_INDEX=31
+SEMICOLON=45
+KEYSPACES=54
+CONDITIONS=39
+FILE=84
+NODE_LIMIT=43
+LIST=68
+NODE_DESCRIBE_CLUSTER=6
+IP_ADDRESS=82
+NODE_THRIFT_SET=16
+NODE_NO_OP=10
+NODE_ID_LIST=33
+WS=99
+ASSUME=70
+NODE_THRIFT_COUNT=17
+DESCRIBE=49
+Alnum=88
+CharacterEscapeSequence=91
+NODE_SHOW_CLUSTER_NAME=11
+USE=48
+NODE_THRIFT_DECR=20
+FUNCTION_CALL=37
+EscapeSequence=90
+Letter=86
+DoubleLiteral=81
+HELP=47
+HexEscapeSequence=92
+NODE_EXIT=8
+LIMIT=85
+T__118=118
+T__119=119
+DEL=66
+T__116=116
+T__117=117
+T__114=114
+T__115=115
+NODE_LIST=27
+UPDATE=57
+NODE_UPDATE_KEYSPACE=25
+T__120=120
+AND=79
+NODE_NEW_CF_ACCESS=34
+CONSISTENCYLEVEL=71
+HexDigit=98
+QUIT=52
+NODE_TRUNCATE=28
+INDEX=61
+NODE_SHOW_VERSION=12
+T__107=107
+T__108=108
+NODE_NEW_KEYSPACE_ACCESS=35
+T__109=109
+T__103=103
+T__104=104
+TRUNCATE=69
+T__105=105
+T__106=106
+COLUMN=58
+T__111=111
+T__110=110
+T__113=113
+EscapeCharacter=96
+T__112=112
+PAIR=42
+NODE_CONSISTENCY_LEVEL=30
+WITH=75
+BY=77
+UnicodeEscapeSequence=93
+HASH=41
+SET=63
+T__102=102
+T__101=101
+Digit=87
+API_VERSION=55
+NODE_ASSUME=29
+CONVERT_TO_TYPE=36
+NODE_THRIFT_GET=14
+NODE_DEL_COLUMN_FAMILY=24
+NODE_KEY_RANGE=44
+KEYSPACE=50
+StringLiteral=74
+NODE_HELP=9
+CONFIG=83
+IntegerPositiveLiteral=72
+DROP=60
+NonEscapeCharacter=95
+DECR=65
+NODE_ADD_COLUMN_FAMILY=21
+NODE_THRIFT_INCR=19
+NODE_COLUMN_ACCESS=32
+'}'=117
+'>='=110
+'/'=101
+'LIMIT'=85
+'{'=116
+'>'=108
+'AS'=105
+'?'=104
+'<='=111
+'CLUSTER'=102
+'='=107
+'<'=109
+'('=119
+':'=118
+'['=113
+'WHERE'=106
+'CLUSTER NAME'=103
+','=114
+')'=120
+'.'=112
+'AND'=79
+']'=115