<commit_before>GENERAL UPGRADING ADVICE FOR ANY VERSION
========================================

Snapshotting is fast (especially if you have JNA installed) and takes
effectively zero disk space until you start compacting the live data
files again.  Thus, best practice is to ALWAYS snapshot before any
upgrade, just in case you need to roll back to the previous version.
(Cassandra version X + 1 will always be able to read data files created
by version X, but the inverse is not necessarily the case.)

When upgrading major versions of Cassandra, you will be unable to
restore snapshots created with the previous major version using the
'sstableloader' tool. You can upgrade the file format of your snapshots
using the provided 'sstableupgrade' tool.

3.0.3
=====

New features
------------
   - Hinted handoff now supports compression. Reference cassandra.yaml:hints_compression.
     Note: hints compression is currently disabled by default.


3.0.1
=====

Upgrading
---------
   - The return value of SelectStatement::getLimit as been changed from DataLimits
     to int.
   - Custom index implementation should be aware that the method Indexer::indexes()
     has been removed as its contract was misleading and all custom implementation
     should have almost surely returned true inconditionally for that method.
   - GC logging is now enabled by default (you can disable it in the jvm.options
     file if you prefer).


3.0
===

New features
------------
   - EACH_QUORUM is now a supported consistency level for read requests.
   - Support for IN restrictions on any partition key component or clustering key
     as well as support for EQ and IN multicolumn restrictions has been added to
     UPDATE and DELETE statement.
   - Support for single-column and multi-colum slice restrictions (>, >=, <= and <)
     has been added to DELETE statements
   - nodetool rebuild_index accepts the index argument without
     the redundant table name
   - Materialized Views, which allow for server-side denormalization, is now
     available. Materialized views provide an alternative to secondary indexes
     for non-primary key queries, and perform much better for indexing high
     cardinality columns.
     See http://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views
   - Hinted handoff has been completely rewritten. Hints are now stored in flat
     files, with less overhead for storage and more efficient dispatch.
     See CASSANDRA-6230 for full details.
   - Option to not purge unrepaired tombstones. To avoid users having data resurrected
     if repair has not been run within gc_grace_seconds, an option has been added to
     only allow tombstones from repaired sstables to be purged. To enable, set the
     compaction option 'only_purge_repaired_tombstones':true but keep in mind that if
     you do not run repair for a long time, you will keep all tombstones around which
     can cause other problems.
   - Enabled warning on GC taking longer than 1000ms. See
     cassandra.yaml:gc_warn_threshold_in_ms

Upgrading
---------
   - A new argument of type InetAdress has been added to IAuthenticator::newSaslNegotiator,
     representing the IP address of the client attempting authentication. It will be a breaking
     change for any custom implementations.
   - token-generator tool has been removed.
   - Upgrade to 3.0 is supported from Cassandra 2.1 versions greater or equal to 2.1.9,
     or Cassandra 2.2 versions greater or equal to 2.2.2. Upgrade from Cassandra 2.0 and
     older versions is not supported.
   - The 'memtable_allocation_type: offheap_objects' option has been removed. It should
     be re-introduced in a future release and you can follow CASSANDRA-9472 to know more.
   - Configuration parameter memory_allocator in cassandra.yaml has been removed.
   - The native protocol versions 1 and 2 are not supported anymore.
   - Max mutation size is now configurable via max_mutation_size_in_kb setting in
     cassandra.yaml; the default is half the size commitlog_segment_size_in_mb * 1024.
   - 3.0 requires Java 8u40 or later.
   - Garbage collection options were moved from cassandra-env to jvm.options file.
   - New transaction log files have been introduced to replace the compactions_in_progress
     system table, temporary file markers (tmp and tmplink) and sstable ancerstors.
     Therefore, compaction metadata no longer contains ancestors. Transaction log files
     list sstable descriptors involved in compactions and other operations such as flushing
     and streaming. Use the sstableutil tool to list any sstable files currently involved
     in operations not yet completed, which previously would have been marked as temporary.
     A transaction log file contains one sstable per line, with the prefix "add:" or "remove:".
     They also contain a special line "commit", only inserted at the end when the transaction
     is committed. On startup we use these files to cleanup any partial transactions that were
     in progress when the process exited. If the commit line is found, we keep new sstables
     (those with the "add" prefix) and delete the old sstables (those with the "remove" prefix),
     vice-versa if the commit line is missing. Should you lose or delete these log files,<commit_msg>Add notice for CASSANDRA-10880 in NEWS file<commit_after>GENERAL UPGRADING ADVICE FOR ANY VERSION
========================================

Snapshotting is fast (especially if you have JNA installed) and takes
effectively zero disk space until you start compacting the live data
files again.  Thus, best practice is to ALWAYS snapshot before any
upgrade, just in case you need to roll back to the previous version.
(Cassandra version X + 1 will always be able to read data files created
by version X, but the inverse is not necessarily the case.)

When upgrading major versions of Cassandra, you will be unable to
restore snapshots created with the previous major version using the
'sstableloader' tool. You can upgrade the file format of your snapshots
using the provided 'sstableupgrade' tool.

3.0.3
=====

New features
------------
   - Hinted handoff now supports compression. Reference cassandra.yaml:hints_compression.
     Note: hints compression is currently disabled by default.

Upgrading
---------
    - Nothing specific to 3.0.3 but please see previous versions upgrading section,
      especially if you are upgrading from 2.2.


3.0.1
=====

Upgrading
---------
   - The return value of SelectStatement::getLimit as been changed from DataLimits
     to int.
   - Custom index implementation should be aware that the method Indexer::indexes()
     has been removed as its contract was misleading and all custom implementation
     should have almost surely returned true inconditionally for that method.
   - GC logging is now enabled by default (you can disable it in the jvm.options
     file if you prefer).


3.0
===

New features
------------
   - EACH_QUORUM is now a supported consistency level for read requests.
   - Support for IN restrictions on any partition key component or clustering key
     as well as support for EQ and IN multicolumn restrictions has been added to
     UPDATE and DELETE statement.
   - Support for single-column and multi-colum slice restrictions (>, >=, <= and <)
     has been added to DELETE statements
   - nodetool rebuild_index accepts the index argument without
     the redundant table name
   - Materialized Views, which allow for server-side denormalization, is now
     available. Materialized views provide an alternative to secondary indexes
     for non-primary key queries, and perform much better for indexing high
     cardinality columns.
     See http://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views
   - Hinted handoff has been completely rewritten. Hints are now stored in flat
     files, with less overhead for storage and more efficient dispatch.
     See CASSANDRA-6230 for full details.
   - Option to not purge unrepaired tombstones. To avoid users having data resurrected
     if repair has not been run within gc_grace_seconds, an option has been added to
     only allow tombstones from repaired sstables to be purged. To enable, set the
     compaction option 'only_purge_repaired_tombstones':true but keep in mind that if
     you do not run repair for a long time, you will keep all tombstones around which
     can cause other problems.
   - Enabled warning on GC taking longer than 1000ms. See
     cassandra.yaml:gc_warn_threshold_in_ms

Upgrading
---------
   - Clients must use the native protocol version 3 when upgrading from 2.2.X as
     the native protocol version 4 is not compatible between 2.2.X and 3.Y. See
     https://www.mail-archive.com/<EMAIL>/msg45381.html for details.
   - A new argument of type InetAdress has been added to IAuthenticator::newSaslNegotiator,
     representing the IP address of the client attempting authentication. It will be a breaking
     change for any custom implementations.
   - token-generator tool has been removed.
   - Upgrade to 3.0 is supported from Cassandra 2.1 versions greater or equal to 2.1.9,
     or Cassandra 2.2 versions greater or equal to 2.2.2. Upgrade from Cassandra 2.0 and
     older versions is not supported.
   - The 'memtable_allocation_type: offheap_objects' option has been removed. It should
     be re-introduced in a future release and you can follow CASSANDRA-9472 to know more.
   - Configuration parameter memory_allocator in cassandra.yaml has been removed.
   - The native protocol versions 1 and 2 are not supported anymore.
   - Max mutation size is now configurable via max_mutation_size_in_kb setting in
     cassandra.yaml; the default is half the size commitlog_segment_size_in_mb * 1024.
   - 3.0 requires Java 8u40 or later.
   - Garbage collection options were moved from cassandra-env to jvm.options file.
   - New transaction log files have been introduced to replace the compactions_in_progress
     system table, temporary file markers (tmp and tmplink) and sstable ancerstors.
     Therefore, compaction metadata no longer contains ancestors. Transaction log files
     list sstable descriptors involved in compactions and other operations such as flushing
     and streaming. Use the sstableutil tool to list any sstable files currently involved
     in operations not yet completed, which previously would have been marked as temporary.
     A transaction log file contains one sstable per line, with the prefix "add:" or "remove:".
     They also contain a special line "commit", only inserted at the end when the transaction
     is committed. On startup we use these files to cleanup any partial transactions that were
     in progress when the process exited. If the commit line is found, we keep new sstables
     (those with the "add" prefix) and delete the old sstables (those with the "remove" prefix),
     vice-versa if the commit line is missing. Should you lose or delete these log files,
{'fraction_non_alphanumeric': 0.055015004092025095, 'fraction_numerical': 0.010730199145221424, 'mean_word_length': 3.520345252774353, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 1, 'lorem ipsum': 0, 'www.': 3, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4747848', 'n_tokens_mistral': 2867, 'n_tokens_neox': 2714, 'n_words': 1469}