diff --git a/CHANGES.txt b/CHANGES.txt
index d1135bbc2b..46543fce7d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
4.0
+ * Thrift removal (CASSANDRA-11115)
* Remove pre-3.0 compatibility code for 4.0 (CASSANDRA-12716)
* Add column definition kind to dropped columns in schema (CASSANDRA-12705)
* Add (automate) Nodetool Documentation (CASSANDRA-12672)
diff --git a/NEWS.txt b/NEWS.txt
index 0075acc037..81b45c7229 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -21,14 +21,20 @@ New features
Upgrading
---------
- - Cassandra 4.0 removed support for any pre-3.0 format. This means you cannot upgrade from a 2.x version to 4.0
- directly, you have to upgrade to a 3.0.x/3.x version first (and run upgradesstable). In particular, this mean
- Cassandra 4.0 cannot load or read pre-3.0 sstables in any way: you will need to upgrade those sstable in 3.0.x/3.x
- first.
- - Cassandra will no longer allow invalid keyspace replication options, such as invalid datacenter names for
- NetworkTopologyStrategy. Operators MUST add new nodes to a datacenter before they can set set ALTER or
- CREATE keyspace replication policies using that datacenter. Existing keyspaces will continue to operate,
- but CREATE and ALTER will validate that all datacenters specified exist in the cluster.
+ - Cassandra 4.0 removed support for the deprecated Thrift interface. Amongst
+ Tother things, this imply the removal of all yaml option related to thrift
+ ('start_rpc', rpc_port, ...).
+ - Cassandra 4.0 removed support for any pre-3.0 format. This means you
+ cannot upgrade from a 2.x version to 4.0 directly, you have to upgrade to
+ a 3.0.x/3.x version first (and run upgradesstable). In particular, this
+ mean Cassandra 4.0 cannot load or read pre-3.0 sstables in any way: you
+ will need to upgrade those sstable in 3.0.x/3.x first.
+ - Cassandra will no longer allow invalid keyspace replication options, such
+ as invalid datacenter names for NetworkTopologyStrategy. Operators MUST
+ add new nodes to a datacenter before they can set set ALTER or CREATE
+ keyspace replication policies using that datacenter. Existing keyspaces
+ will continue to operate, but CREATE and ALTER will validate that all
+ datacenters specified exist in the cluster.
3.11
====
diff --git a/NOTICE.txt b/NOTICE.txt
index dcdf03dc41..c949b4ec05 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -46,13 +46,6 @@ Written by Adrien Grand.
Contains bindings to the C LZ4 implementation (http://code.google.com/p/lz4/)
Copyright (C) 2011-2012, Yann Collet.
-Alternative Disruptor backed thrift server from https://github.com/xedin/disruptor_thrift_server
-Written by Pavel Yaskevich.
-
-LMAX Disruptor
-(http://lmax-exchange.github.io/disruptor/)
-Copyright 2011 LMAX Ltd.
-
Airline
(https://github.com/airlift/airline)
Copyright 2011, Dain Sundstrom dain@iq80.com
diff --git a/bin/cassandra.bat b/bin/cassandra.bat
index 0d207cd818..a653142d39 100644
--- a/bin/cassandra.bat
+++ b/bin/cassandra.bat
@@ -112,7 +112,7 @@ if EXIST "%CASSANDRA_HOME%\lib\jsr223\scala\scala-compiler.jar" (
)
REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";"%CASSANDRA_HOME%\build\classes\thrift"
+set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main"
set CASSANDRA_PARAMS=-Dcassandra -Dcassandra-foreground=yes
set CASSANDRA_PARAMS=%CASSANDRA_PARAMS% -Dcassandra.logdir="%CASSANDRA_HOME%\logs"
set CASSANDRA_PARAMS=%CASSANDRA_PARAMS% -Dcassandra.storagedir="%CASSANDRA_HOME%\data"
diff --git a/bin/cassandra.in.bat b/bin/cassandra.in.bat
index 5682f9d0d4..0e760a0173 100644
--- a/bin/cassandra.in.bat
+++ b/bin/cassandra.in.bat
@@ -44,7 +44,7 @@ goto :eof
:okClasspath
REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";%CASSANDRA_CONF%;"%CASSANDRA_HOME%\build\classes\thrift"
+set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";%CASSANDRA_CONF%
REM Add the default storage location. Can be overridden in conf\cassandra.yaml
set CASSANDRA_PARAMS=%CASSANDRA_PARAMS% "-Dcassandra.storagedir=%CASSANDRA_HOME%\data"
diff --git a/bin/cassandra.in.sh b/bin/cassandra.in.sh
index 92f79c7d46..228cef71c0 100644
--- a/bin/cassandra.in.sh
+++ b/bin/cassandra.in.sh
@@ -27,7 +27,6 @@ fi
# compiled classes. NOTE: This isn't needed by the startup script,
# it's just used here in constructing the classpath.
cassandra_bin="$CASSANDRA_HOME/build/classes/main"
-cassandra_bin="$cassandra_bin:$CASSANDRA_HOME/build/classes/thrift"
#cassandra_bin="$CASSANDRA_HOME/build/cassandra.jar"
# the default location for commitlogs, sstables, and saved caches
diff --git a/bin/cassandra.ps1 b/bin/cassandra.ps1
index 5d10994eb8..d968793d48 100644
--- a/bin/cassandra.ps1
+++ b/bin/cassandra.ps1
@@ -298,9 +298,8 @@ Function VerifyPortsAreAvailable
# storage_port
# ssl_storage_port
# native_transport_port
- # rpc_port, which we'll match to rpc_address
# and from env: JMX_PORT which we cache in our environment during SetCassandraEnvironment for this check
- $yamlRegex = "storage_port:|ssl_storage_port:|native_transport_port:|rpc_port"
+ $yamlRegex = "storage_port:|ssl_storage_port:|native_transport_port:"
$yaml = Get-Content "$env:CASSANDRA_CONF\cassandra.yaml"
$portRegex = ":$env:JMX_PORT |"
diff --git a/bin/cqlsh.py b/bin/cqlsh.py
index 2387342f5d..bd62072069 100644
--- a/bin/cqlsh.py
+++ b/bin/cqlsh.py
@@ -104,7 +104,7 @@ elif webbrowser._tryorder[0] == 'xdg-open' and os.environ.get('XDG_DATA_DIRS', '
webbrowser._tryorder.remove('xdg-open')
webbrowser._tryorder.append('xdg-open')
-# use bundled libs for python-cql and thrift, if available. if there
+# use bundled lib for python-cql if available. if there
# is a ../lib dir, use bundled libs there preferentially.
ZIPLIB_DIRS = [os.path.join(CASSANDRA_PATH, 'lib')]
myplatform = platform.system()
@@ -1691,8 +1691,8 @@ class Shell(cmd.Cmd):
SHOW VERSION
Shows the version and build of the connected Cassandra instance, as
- well as the versions of the CQL spec and the Thrift protocol that
- the connected Cassandra instance understands.
+ well as the version of the CQL spec that the connected Cassandra
+ instance understands.
SHOW HOST
diff --git a/build.xml b/build.xml
index 884394c967..d1ffb7a4d0 100644
--- a/build.xml
+++ b/build.xml
@@ -44,12 +44,9 @@
-
-
-
@@ -154,7 +151,6 @@
-
@@ -186,7 +182,6 @@
-
@@ -387,14 +382,7 @@
-
-
-
-
-
-
-
@@ -423,7 +411,6 @@
-
@@ -585,15 +572,11 @@
-
-
-
-
@@ -620,25 +603,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Generating Thrift Java code from ${basedir}/interface/cassandra.thrift...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Generating Thrift Python code from ${basedir}/interface/cassandra.thrift...
-
-
-
-
-
-
-
-
-
-
-
-
@@ -801,13 +717,6 @@
name="build-project">
-
-
-
-
-
@@ -876,8 +784,6 @@
-
@@ -892,35 +798,14 @@
depends="build, build-test, stress-build, write-poms"
description="Assemble Cassandra JAR files">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -929,8 +814,6 @@
-
@@ -952,16 +835,6 @@
-->
-
-
-
-
-
-
-
-
-
@@ -984,11 +857,6 @@
The sources-jar target makes cassandra-sources.jar output required for publishing to Maven central repository.
-->
-
-
-
-
-
@@ -1011,7 +879,6 @@
-
@@ -1034,11 +901,6 @@
-
-
-
-
-
@@ -1594,14 +1456,9 @@
-
-
-
-
-
@@ -1779,7 +1636,6 @@
-
@@ -1787,7 +1643,6 @@
-
]]>
@@ -1900,16 +1755,6 @@
packaging="tar.gz"
classifier="src"/>
-
-
-
-
-
@@ -1944,16 +1789,6 @@
packaging="tar.gz"
classifier="src"/>
-
-
-
-
-
diff --git a/conf/cassandra-env.ps1 b/conf/cassandra-env.ps1
index 9e2f50dcfe..d6b4f341ab 100644
--- a/conf/cassandra-env.ps1
+++ b/conf/cassandra-env.ps1
@@ -47,7 +47,7 @@ Function BuildClassPath
}
# Add build/classes/main so it works in development
- $cp = $cp + ";" + """$env:CASSANDRA_HOME\build\classes\main"";""$env:CASSANDRA_HOME\build\classes\thrift"""
+ $cp = $cp + ";" + """$env:CASSANDRA_HOME\build\classes\main"""
$env:CLASSPATH=$cp
}
diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml
index 4436a029f9..489170697b 100644
--- a/conf/cassandra.yaml
+++ b/conf/cassandra.yaml
@@ -232,10 +232,10 @@ disk_failure_policy: stop
# Policy for commit disk failures:
#
# die
-# shut down gossip and Thrift and kill the JVM, so the node can be replaced.
+# shut down the node and kill the JVM, so the node can be replaced.
#
# stop
-# shut down gossip and Thrift, leaving the node effectively dead, but
+# shut down the node, leaving the node effectively dead, but
# can still be inspected via JMX.
#
# stop_commit
@@ -265,15 +265,6 @@ commit_failure_policy: stop
# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
prepared_statements_cache_size_mb:
-# Maximum size of the Thrift prepared statement cache
-#
-# If you do not use Thrift at all, it is safe to leave this value at "auto".
-#
-# See description of 'prepared_statements_cache_size_mb' above for more information.
-#
-# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
-thrift_prepared_statements_cache_size_mb:
-
# Maximum size of the key cache in memory.
#
# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
@@ -624,8 +615,7 @@ listen_address: localhost
# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
# Whether to start the native transport server.
-# Please note that the address on which the native transport is bound is the
-# same as the rpc_address. The port however is different and specified below.
+# The address on which the native transport is bound is defined by rpc_address.
start_native_transport: true
# port for the CQL native transport to listen for clients on
# For security reasons, you should not expose this port to the internet. Firewall it if needed.
@@ -638,10 +628,8 @@ native_transport_port: 9042
# from native_transport_port will use encryption for native_transport_port_ssl while
# keeping native_transport_port unencrypted.
# native_transport_port_ssl: 9142
-# The maximum threads for handling requests when the native transport is used.
-# This is similar to rpc_max_threads though the default differs slightly (and
-# there is no native_transport_min_threads, idle threads will always be stopped
-# after 30 seconds).
+# The maximum threads for handling requests (note that idle threads are stopped
+# after 30 seconds so there is not corresponding minimum setting).
# native_transport_max_threads: 128
#
# The maximum size of allowed frame. Frame (requests) larger than this will
@@ -657,11 +645,7 @@ native_transport_port: 9042
# The default is -1, which means unlimited.
# native_transport_max_concurrent_connections_per_ip: -1
-# Whether to start the thrift rpc server.
-start_rpc: false
-
-# The address or interface to bind the Thrift RPC service and native transport
-# server to.
+# The address or interface to bind the native transport server to.
#
# Set rpc_address OR rpc_interface, not both.
#
@@ -684,9 +668,6 @@ rpc_address: localhost
# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
# rpc_interface_prefer_ipv6: false
-# port for Thrift to listen for clients on
-rpc_port: 9160
-
# RPC address to broadcast to drivers and other Cassandra nodes. This cannot
# be set to 0.0.0.0. If left blank, this will be set to the value of
# rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
@@ -696,45 +677,6 @@ rpc_port: 9160
# enable or disable keepalive on rpc/native connections
rpc_keepalive: true
-# Cassandra provides two out-of-the-box options for the RPC Server:
-#
-# sync
-# One thread per thrift connection. For a very large number of clients, memory
-# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
-# per thread, and that will correspond to your use of virtual memory (but physical memory
-# may be limited depending on use of stack space).
-#
-# hsha
-# Stands for "half synchronous, half asynchronous." All thrift clients are handled
-# asynchronously using a small number of threads that does not vary with the amount
-# of thrift clients (and thus scales well to many clients). The rpc requests are still
-# synchronous (one thread per active request). If hsha is selected then it is essential
-# that rpc_max_threads is changed from the default value of unlimited.
-#
-# The default is sync because on Windows hsha is about 30% slower. On Linux,
-# sync/hsha performance is about the same, with hsha of course using less memory.
-#
-# Alternatively, can provide your own RPC server by providing the fully-qualified class name
-# of an o.a.c.t.TServerFactory that can create an instance of it.
-rpc_server_type: sync
-
-# Uncomment rpc_min|max_thread to set request pool size limits.
-#
-# Regardless of your choice of RPC server (see above), the number of maximum requests in the
-# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
-# RPC server, it also dictates the number of clients that can be connected at all).
-#
-# The default is unlimited and thus provides no protection against clients overwhelming the server. You are
-# encouraged to set a maximum that makes sense for you in production, but do keep in mind that
-# rpc_max_threads represents the maximum number of client requests this server may execute concurrently.
-#
-# rpc_min_threads: 16
-# rpc_max_threads: 2048
-
-# uncomment to set socket buffer sizes on rpc connections
-# rpc_send_buff_size_in_bytes:
-# rpc_recv_buff_size_in_bytes:
-
# Uncomment to set socket buffer size for internode communication
# Note that when setting this, the buffer size is limited by net.core.wmem_max
# and when not setting it it is defined by net.ipv4.tcp_wmem
@@ -751,9 +693,6 @@ rpc_server_type: sync
# and when not setting it it is defined by net.ipv4.tcp_wmem
# internode_recv_buff_size_in_bytes:
-# Frame size for thrift (maximum message length).
-thrift_framed_transport_size_in_mb: 15
-
# Set to true to have Cassandra create a hard link to each sstable
# flushed or streamed locally in a backups/ subdirectory of the
# keyspace data. Removing these links is the operator's
@@ -962,52 +901,6 @@ dynamic_snitch_reset_interval_in_ms: 600000
# until the pinned host was 20% worse than the fastest.
dynamic_snitch_badness_threshold: 0.1
-# request_scheduler -- Set this to a class that implements
-# RequestScheduler, which will schedule incoming client requests
-# according to the specific policy. This is useful for multi-tenancy
-# with a single Cassandra cluster.
-# NOTE: This is specifically for requests from the client and does
-# not affect inter node communication.
-# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
-# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
-# client requests to a node with a separate queue for each
-# request_scheduler_id. The scheduler is further customized by
-# request_scheduler_options as described below.
-request_scheduler: org.apache.cassandra.scheduler.NoScheduler
-
-# Scheduler Options vary based on the type of scheduler
-#
-# NoScheduler
-# Has no options
-#
-# RoundRobin
-# throttle_limit
-# The throttle_limit is the number of in-flight
-# requests per client. Requests beyond
-# that limit are queued up until
-# running requests can complete.
-# The value of 80 here is twice the number of
-# concurrent_reads + concurrent_writes.
-# default_weight
-# default_weight is optional and allows for
-# overriding the default which is 1.
-# weights
-# Weights are optional and will default to 1 or the
-# overridden default_weight. The weight translates into how
-# many requests are handled during each turn of the
-# RoundRobin, based on the scheduler id.
-#
-# request_scheduler_options:
-# throttle_limit: 80
-# default_weight: 5
-# weights:
-# Keyspace1: 1
-# Keyspace2: 5
-
-# request_scheduler_id -- An identifier based on which to perform
-# the request scheduling. Currently the only valid option is keyspace.
-# request_scheduler_id: keyspace
-
# Enable or disable inter-node encryption
# JVM defaults for supported SSL socket protocols and cipher suites can
# be replaced using custom encryption options. This is not recommended
diff --git a/conf/jvm.options b/conf/jvm.options
index 0e329d66fa..678ac3c046 100644
--- a/conf/jvm.options
+++ b/conf/jvm.options
@@ -53,18 +53,12 @@
# before joining the ring.
#-Dcassandra.ring_delay_ms=ms
-# Set the port for the Thrift RPC service, which is used for client connections. (Default: 9160)
-#-Dcassandra.rpc_port=port
-
# Set the SSL port for encrypted communication. (Default: 7001)
#-Dcassandra.ssl_storage_port=port
# Enable or disable the native transport server. See start_native_transport in cassandra.yaml.
# cassandra.start_native_transport=true|false
-# Enable or disable the Thrift RPC server. (Default: true)
-#-Dcassandra.start_rpc=true/false
-
# Set the port for inter-node communication. (Default: 7000)
#-Dcassandra.storage_port=port
diff --git a/conf/logback.xml b/conf/logback.xml
index 7bd1c6dea3..a22f131757 100644
--- a/conf/logback.xml
+++ b/conf/logback.xml
@@ -98,5 +98,4 @@ appender reference in the root level section below.
-
diff --git a/debian/nodetool-completion b/debian/nodetool-completion
index 7dc35de925..d6e4bbe0d3 100644
--- a/debian/nodetool-completion
+++ b/debian/nodetool-completion
@@ -62,13 +62,11 @@ have nodetool && have cqlsh &&
disablebinary
disablegossip
disablehandoff
- disablethrift
drain
enablebackup
enablebinary
enablegossip
enablehandoff
- enablethrift
getcompactionthroughput
getlogginglevels
getstreamthroughput
@@ -89,7 +87,6 @@ have nodetool && have cqlsh &&
setlogginglevel
status
statusbinary
- statusthrift
stopdaemon
tpstats
version
diff --git a/debian/patches/001cassandra_yaml_dirs.dpatch b/debian/patches/001cassandra_yaml_dirs.dpatch
index 3d545e5290..72580a31f1 100644
--- a/debian/patches/001cassandra_yaml_dirs.dpatch
+++ b/debian/patches/001cassandra_yaml_dirs.dpatch
@@ -24,7 +24,7 @@ diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch'
+commitlog_directory: /var/lib/cassandra/commitlog
# policy for data disk failures:
- # stop_paranoid: shut down gossip and Thrift even for single-sstable errors.
+ # stop_paranoid: shut down gossip even for single-sstable errors.
@@ -203,7 +203,7 @@
# saved caches
diff --git a/debian/rules b/debian/rules
index 35f5a51e40..0147e9b1d2 100755
--- a/debian/rules
+++ b/debian/rules
@@ -45,8 +45,6 @@ install: build
# Copy in the jar and symlink to something stable
dh_install build/apache-cassandra-$(VERSION).jar \
usr/share/cassandra
- dh_install build/apache-cassandra-thrift-$(VERSION).jar \
- usr/share/cassandra
# Copy stress jars
dh_install build/tools/lib/stress.jar \
diff --git a/doc/SASI.md b/doc/SASI.md
index a4762c96e5..7c530b1008 100644
--- a/doc/SASI.md
+++ b/doc/SASI.md
@@ -19,8 +19,7 @@ implementation.
## Using SASI
The examples below walk through creating a table and indexes on its
-columns, and performing queries on some inserted data. The patchset in
-this repository includes support for the Thrift and CQL3 interfaces.
+columns, and performing queries on some inserted data.
The examples below assume the `demo` keyspace has been created and is
in use.
diff --git a/doc/convert_yaml_to_rst.py b/doc/convert_yaml_to_rst.py
index c17bbbb208..4bdcf5bde2 100644
--- a/doc/convert_yaml_to_rst.py
+++ b/doc/convert_yaml_to_rst.py
@@ -41,7 +41,6 @@ commented_re = re.compile(r"^# ?(.*)")
# that these can be commented out (making it useless to use a yaml parser).
COMPLEX_OPTIONS = (
'seed_provider',
- 'request_scheduler_options',
'data_file_directories',
'commitlog_compression',
'hints_compression',
diff --git a/doc/source/cql/ddl.rst b/doc/source/cql/ddl.rst
index 029c1cbd26..8db4c84348 100644
--- a/doc/source/cql/ddl.rst
+++ b/doc/source/cql/ddl.rst
@@ -396,15 +396,14 @@ Compact tables
.. warning:: Since Cassandra 3.0, compact tables have the exact same layout internally than non compact ones (for the
same schema obviously), and declaring a table compact **only** creates artificial limitations on the table definition
- and usage that are necessary to ensure backward compatibility with the deprecated Thrift API. And as ``COMPACT
+ and usage. It only exists for historical reason and is preserved for backward compatibility And as ``COMPACT
STORAGE`` cannot, as of Cassandra |version|, be removed, it is strongly discouraged to create new table with the
``COMPACT STORAGE`` option.
-A *compact* table is one defined with the ``COMPACT STORAGE`` option. This option is mainly targeted towards backward
-compatibility for definitions created before CQL version 3 (see `www.datastax.com/dev/blog/thrift-to-cql3
-`__ for more details) and shouldn't be used for new tables. Declaring a
-table with this option creates limitations for the table which are largely arbitrary but necessary for backward
-compatibility with the (deprecated) Thrift API. Amongst those limitation:
+A *compact* table is one defined with the ``COMPACT STORAGE`` option. This option is only maintained for backward
+compatibility for definitions created before CQL version 3 and shouldn't be used for new tables. Declaring a
+table with this option creates limitations for the table which are largely arbitrary (and exists for historical
+reasons). Amongst those limitation:
- a compact table cannot use collections nor static columns.
- if a compact table has at least one clustering column, then it must have *exactly* one column outside of the primary
diff --git a/doc/source/cql/index.rst b/doc/source/cql/index.rst
index 6fa8135433..b4c21cf6c5 100644
--- a/doc/source/cql/index.rst
+++ b/doc/source/cql/index.rst
@@ -24,8 +24,7 @@ the languages. However, the `changes <#changes>`_ section provides the diff betw
CQL offers a model close to SQL in the sense that data is put in *tables* containing *rows* of *columns*. For
that reason, when used in this document, these terms (tables, rows and columns) have the same definition than they have
-in SQL. But please note that as such, they do **not** refer to the concept of rows and columns found in the deprecated
-thrift API (and earlier version 1 and 2 of CQL).
+in SQL.
.. toctree::
:maxdepth: 2
diff --git a/doc/source/faq/index.rst b/doc/source/faq/index.rst
index d985e37168..24575a47ee 100644
--- a/doc/source/faq/index.rst
+++ b/doc/source/faq/index.rst
@@ -58,7 +58,7 @@ What ports does Cassandra use?
------------------------------
By default, Cassandra uses 7000 for cluster communication (7001 if SSL is enabled), 9042 for native protocol clients,
-and 7199 for JMX (and 9160 for the deprecated Thrift interface). The internode communication and native protocol ports
+and 7199 for JMX. The internode communication and native protocol ports
are configurable in the :ref:`cassandra-yaml`. The JMX port is configurable in ``cassandra-env.sh`` (through JVM
options). All ports are TCP.
diff --git a/doc/source/operating/metrics.rst b/doc/source/operating/metrics.rst
index ef431285e6..373d4d2f9a 100644
--- a/doc/source/operating/metrics.rst
+++ b/doc/source/operating/metrics.rst
@@ -584,7 +584,6 @@ Reported name format:
Name Type Description
=========================== ============== ===========
connectedNativeClients Counter Number of clients connected to this nodes native protocol server
-connectedThriftClients Counter Number of clients connected to this nodes thrift protocol server
=========================== ============== ===========
diff --git a/examples/hadoop_cql3_word_count/README.txt b/examples/hadoop_cql3_word_count/README.txt
deleted file mode 100644
index b6ee33f27b..0000000000
--- a/examples/hadoop_cql3_word_count/README.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Introduction
-============
-
-WordCount hadoop example: Inserts a bunch of words across multiple rows,
-and counts them, with RandomPartitioner. The word_count_counters example sums
-the value of counter columns for a key.
-
-The scripts in bin/ assume you are running with cwd of examples/word_count.
-
-
-Running
-=======
-
-First build and start a Cassandra server with the default configuration*. Ensure that the Thrift
-interface is enabled, either by setting start_rpc:true in cassandra.yaml or by running
-`nodetool enablethrift` after startup.
-Once Cassandra has started and the Thrift interface is available, run
-
-contrib/word_count$ ant
-contrib/word_count$ bin/word_count_setup
-contrib/word_count$ bin/word_count
-contrib/word_count$ bin/word_count_counters
-
-In order to view the results in Cassandra, one can use bin/cqlsh and
-perform the following operations:
-$ bin/cqlsh localhost
-> use cql3_wordcount;
-> select * from output_words;
-
-The output of the word count can now be configured. In the bin/word_count
-file, you can specify the OUTPUT_REDUCER. The two options are 'filesystem'
-and 'cassandra'. The filesystem option outputs to the /tmp/word_count*
-directories. The cassandra option outputs to the 'output_words' column family
-in the 'cql3_wordcount' keyspace. 'cassandra' is the default.
-
-Read the code in src/ for more details.
-
-The word_count_counters example sums the counter columns for a row. The output
-is written to a text file in /tmp/word_count_counters.
-
-*It is recommended to turn off vnodes when running Cassandra with hadoop.
-This is done by setting "num_tokens: 1" in cassandra.yaml. If you want to
-point wordcount at a real cluster, modify the seed and listenaddress
-settings accordingly.
-
-
-Troubleshooting
-===============
-
-word_count uses conf/logback.xml to log to wc.out.
-
diff --git a/examples/hadoop_cql3_word_count/bin/word_count b/examples/hadoop_cql3_word_count/bin/word_count
deleted file mode 100755
index 76cca7da53..0000000000
--- a/examples/hadoop_cql3_word_count/bin/word_count
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-cwd=`dirname $0`
-
-# Cassandra class files.
-if [ ! -d $cwd/../../../build/classes/main ]; then
- echo "Unable to locate cassandra class files" >&2
- exit 1
-fi
-
-# word_count Jar.
-if [ ! -e $cwd/../build/word_count.jar ]; then
- echo "Unable to locate word_count jar" >&2
- exit 1
-fi
-
-CLASSPATH=$CLASSPATH:$cwd/../conf
-CLASSPATH=$CLASSPATH:$cwd/../build/word_count.jar
-CLASSPATH=$CLASSPATH:$cwd/../../../build/classes/main
-CLASSPATH=$CLASSPATH:$cwd/../../../build/classes/thrift
-for jar in $cwd/../build/lib/jars/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-for jar in $cwd/../../../lib/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-for jar in $cwd/../../../build/lib/jars/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ "x$JAVA" = "x" ]; then
- echo "Java executable not found (hint: set JAVA_HOME)" >&2
- exit 1
-fi
-
-OUTPUT_REDUCER=cassandra
-INPUT_MAPPER=native
-
-#echo $CLASSPATH
-"$JAVA" -Xmx1G -ea -cp "$CLASSPATH" WordCount output_reducer=$OUTPUT_REDUCER input_mapper=$INPUT_MAPPER
diff --git a/examples/hadoop_cql3_word_count/bin/word_count_counters b/examples/hadoop_cql3_word_count/bin/word_count_counters
deleted file mode 100755
index cc1243fcac..0000000000
--- a/examples/hadoop_cql3_word_count/bin/word_count_counters
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-cwd=`dirname $0`
-
-# Cassandra class files.
-if [ ! -d $cwd/../../../build/classes/main ]; then
- echo "Unable to locate cassandra class files" >&2
- exit 1
-fi
-
-# word_count Jar.
-if [ ! -e $cwd/../build/word_count.jar ]; then
- echo "Unable to locate word_count jar" >&2
- exit 1
-fi
-
-CLASSPATH=$CLASSPATH:$cwd/../conf
-CLASSPATH=$CLASSPATH:$cwd/../build/word_count.jar
-CLASSPATH=$CLASSPATH:$cwd/../../../build/classes/main
-CLASSPATH=$CLASSPATH:$cwd/../../../build/classes/thrift
-for jar in $cwd/../build/lib/jars/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-for jar in $cwd/../../../lib/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-for jar in $cwd/../../../build/lib/jars/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ "x$JAVA" = "x" ]; then
- echo "Java executable not found (hint: set JAVA_HOME)" >&2
- exit 1
-fi
-
-INPUT_MAPPER=native
-
-#echo $CLASSPATH
-"$JAVA" -Xmx1G -ea -cp "$CLASSPATH" WordCountCounters input_mapper=$INPUT_MAPPER
diff --git a/examples/hadoop_cql3_word_count/bin/word_count_setup b/examples/hadoop_cql3_word_count/bin/word_count_setup
deleted file mode 100755
index 6e5650fd85..0000000000
--- a/examples/hadoop_cql3_word_count/bin/word_count_setup
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-cwd=`dirname $0`
-
-# Cassandra class files.
-if [ ! -d $cwd/../../../build/classes/main ]; then
- echo "Unable to locate cassandra class files" >&2
- exit 1
-fi
-
-# word_count Jar.
-if [ ! -e $cwd/../build/word_count.jar ]; then
- echo "Unable to locate word_count jar" >&2
- exit 1
-fi
-
-CLASSPATH=$CLASSPATH:$cwd/../build/word_count.jar
-CLASSPATH=$CLASSPATH:.:$cwd/../../../build/classes/main
-CLASSPATH=$CLASSPATH:.:$cwd/../../../build/classes/thrift
-for jar in $cwd/../build/lib/jars/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-for jar in $cwd/../../../lib/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-for jar in $cwd/../../../build/lib/jars/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
-
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ "x$JAVA" = "x" ]; then
- echo "Java executable not found (hint: set JAVA_HOME)" >&2
- exit 1
-fi
-
-HOST=localhost
-PORT=9160
-FRAMED=true
-
-"$JAVA" -Xmx1G -ea -Dcassandra.host=$HOST -Dcassandra.port=$PORT -Dcassandra.framed=$FRAMED -cp "$CLASSPATH" WordCountSetup
diff --git a/examples/hadoop_cql3_word_count/build.xml b/examples/hadoop_cql3_word_count/build.xml
deleted file mode 100644
index 939e1b39d0..0000000000
--- a/examples/hadoop_cql3_word_count/build.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Downloading Ivy...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/hadoop_cql3_word_count/conf/logback.xml b/examples/hadoop_cql3_word_count/conf/logback.xml
deleted file mode 100644
index 443bd1c7be..0000000000
--- a/examples/hadoop_cql3_word_count/conf/logback.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
- wc.out
-
- %-5level [%thread] %date{ISO8601} %F:%L - %msg%n
-
-
-
-
-
- %-5level %date{HH:mm:ss,SSS} %msg%n
-
-
-
-
-
-
-
-
-
diff --git a/examples/hadoop_cql3_word_count/ivy.xml b/examples/hadoop_cql3_word_count/ivy.xml
deleted file mode 100644
index 2016eb8b89..0000000000
--- a/examples/hadoop_cql3_word_count/ivy.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
diff --git a/examples/hadoop_cql3_word_count/src/WordCount.java b/examples/hadoop_cql3_word_count/src/WordCount.java
deleted file mode 100644
index bc95736462..0000000000
--- a/examples/hadoop_cql3_word_count/src/WordCount.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.*;
-import java.util.Map.Entry;
-
-import org.apache.cassandra.hadoop.cql3.CqlConfigHelper;
-import org.apache.cassandra.hadoop.cql3.CqlOutputFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.cassandra.hadoop.cql3.CqlInputFormat;
-import org.apache.cassandra.hadoop.ConfigHelper;
-import org.apache.cassandra.utils.ByteBufferUtil;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.conf.Configured;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.IntWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.mapreduce.Mapper;
-import org.apache.hadoop.mapreduce.Reducer;
-import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
-import org.apache.hadoop.util.Tool;
-import org.apache.hadoop.util.ToolRunner;
-import com.datastax.driver.core.Row;
-
-/**
- * This counts the occurrences of words in ColumnFamily
- * cql3_wordcount ( id uuid,
- * line text,
- * PRIMARY KEY (id))
- *
- * For each word, we output the total number of occurrences across all body texts.
- *
- * When outputting to Cassandra, we write the word counts to column family
- * output_words ( word text,
- * count_num text,
- * PRIMARY KEY (word))
- * as a {word, count} to columns: word, count_num with a row key of "word sum"
- */
-public class WordCount extends Configured implements Tool
-{
- private static final Logger logger = LoggerFactory.getLogger(WordCount.class);
- static final String INPUT_MAPPER_VAR = "input_mapper";
- static final String KEYSPACE = "cql3_wordcount";
- static final String COLUMN_FAMILY = "inputs";
-
- static final String OUTPUT_REDUCER_VAR = "output_reducer";
- static final String OUTPUT_COLUMN_FAMILY = "output_words";
-
- private static final String OUTPUT_PATH_PREFIX = "/tmp/word_count";
- private static final String PRIMARY_KEY = "row_key";
-
- public static void main(String[] args) throws Exception
- {
- // Let ToolRunner handle generic command-line options
- ToolRunner.run(new Configuration(), new WordCount(), args);
- System.exit(0);
- }
-
- public static class TokenizerMapper extends Mapper