-
Notifications
You must be signed in to change notification settings - Fork 7
/
NEWS.txt
2055 lines (1713 loc) · 83.3 KB
/
NEWS.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
PLEASE READ: MAXIMUM TTL EXPIRATION DATE NOTICE (CASSANDRA-14092)
------------------------------------------------------------------
(General upgrading instructions are available in the next section)
The maximum expiration timestamp that can be represented by the storage engine is
2038-01-19T03:14:06+00:00, which means that inserts with TTL thatl expire after
this date are not currently supported. By default, INSERTS with TTL exceeding the
maximum supported date are rejected, but it's possible to choose a different
expiration overflow policy. See CASSANDRA-14092.txt for more details.
Prior to 3.0.16 (3.0.X) and 3.11.2 (3.11.x) there was no protection against INSERTS
with TTL expiring after the maximum supported date, causing the expiration time
field to overflow and the records to expire immediately. Clusters in the 2.X and
lower series are not subject to this when assertions are enabled. Backed up SSTables
can be potentially recovered and recovery instructions can be found on the
CASSANDRA-14092.txt file.
If you use or plan to use very large TTLS (10 to 20 years), read CASSANDRA-14092.txt
for more information.
PLEASE READ: CVE-2017-5929 LOGBACK BEFORE 1.2.0 SERIALIZATION VULNERABILITY
------------------------------------------------------------------
QOS.ch Logback before 1.2.0 has a serialization vulnerability affecting the
SocketServer and ServerSocketReceiver components.
Logback has not been upgraded to avoid breaking deployments and customizations
based on older versions. If you are using vulnerable components you will need
to upgrade to a newer version of Logback or stop using the vulnerable components.
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.
2.2.17
======
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.16
======
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.15
======
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.14
======
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.13
======
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.12
======
Upgrading
---------
- See MAXIMUM TTL EXPIRATION DATE NOTICE above.
- Cassandra is now relying on the JVM options to properly shutdown on OutOfMemoryError. By default it will
rely on the OnOutOfMemoryError option as the ExitOnOutOfMemoryError and CrashOnOutOfMemoryError options
are not supported by the older 1.7 and 1.8 JVMs. A warning will be logged at startup if none of those JVM
options are used. See CASSANDRA-13006 for more details.
- Cassandra is not logging anymore by default an Heap histogram on OutOfMemoryError. To enable that behavior
set the 'cassandra.printHeapHistogramOnOutOfMemoryError' System property to 'true'. See CASSANDRA-13006
for more details.
2.2.11
======
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.10
======
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.9
=====
Upgrading
---------
- Compaction now correctly drops sstables out of CompactionTask when there
isn't enough disk space to perform the full compaction. This should reduce
pending compaction tasks on systems with little remaining disk space.
Deprecation
-----------
(See note about the new feature User-Defined-Functions in 2.2.0.)
Since the security manager added in 3.0 only allows Java and JavaScript
UDFs to be run, UDFs for other languages are deprecated and support for
non-Java and non-JavaScript UDFs is deprecated in 2.2 and has been removed
in version 3.0.11.
2.2.8
=====
Upgrading
---------
- The ReversedType behaviour has been corrected for clustering columns of
BYTES type containing empty value. Scrub should be run on the existing
SSTables containing a descending clustering column of BYTES type to correct
their ordering. See CASSANDRA-12127 for more details.
2.2.7
=====
New features
------------
- JSON timestamps are now in UTC and contain the timezone information, see
CASSANDRA-11137 for more details.
Upgrading
---------
- Ec2MultiRegionSnitch will no longer automatically set broadcast_rpc_address
to the public instance IP if this property is defined on cassandra.yaml.
2.2.6
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.5
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.4
=====
Deprecation
-----------
- Pig support has been deprecated, and will be removed in 3.0.
Please see CASSANDRA-10542 for more details.
- Configuration parameter memory_allocator in cassandra.yaml has been deprecated
and will be removed in 3.0.0. As mentioned below for 2.2.0, jemalloc is
automatically preloaded on Unix platforms.
Operations
----------
- Switching data center or racks is no longer an allowed operation on a node
which has data. Instead, the node will need to be decommissioned and
rebootstrapped. If moving from the SimpleSnitch, make sure that the data
center and rack containing all current nodes is named "datacenter1" and
"rack1". To override this behaviour use -Dcassandra.ignore_rack=true and/or
-Dcassandra.ignore_dc=true.
- Reloading the configuration file of GossipingPropertyFileSnitch has been disabled.
- GC logging is now enabled by default (but you can disable it if you want by
commenting the relevant lines of the cassandra-env file).
Upgrading
---------
- The default for the inter-DC stream throughput setting
(inter_dc_stream_throughput_outbound_megabits_per_sec in cassandra.yaml) is
the same than the one for intra-DC one (200Mbps) instead of being unlimited.
Having it unlimited was never intended and was a bug.
New features
------------
- Time windows in DTCS are now limited to 1 day by default to be able to
handle bootstrap and repair in a better way. To get the old behaviour,
increase max_window_size_seconds.
- DTCS option max_sstable_age_days is now deprecated and defaults to 1000 days.
- Native protocol server now allows both SSL and non-SSL connections on
the same port.
2.2.3
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
2.2.2
=====
Upgrading
---------
- Version 1 and 2 of the native protocol are now deprecated and support
will be removed in Cassandra 3.0. You are encouraged to upgrade to a
client driver using version 3 of the native protocol.
Changed Defaults
----------------
- commitlog_total_space_in_mb will use the smaller of 8192, and 1/4
of the total space of the commitlog volume. (Before: always used
8192)
- Incremental repair is on by default since 2.2.0, run full repairs by
providing the '-full' parameter to nodetool repair.
- Parallel repairs are the default since 2.2.0, run sequential repairs
by providing the '-seq' parameter to nodetool repair.
- The following INFO logs were reduced to DEBUG level and will now show
on debug.log instead of system.log:
- Memtable flushing actions
- Commit log replayed files
- Compacted sstables
- SStable opening (SSTableReader)
New features
------------
- Custom QueryHandlers can retrieve the column specifications for the bound
variables from QueryOptions by using the hasColumnSpecifications()
and getColumnSpecifications() methods.
- A new default assynchronous log appender debug.log was created in addition
to the system.log appender in order to provide more detailed log debugging.
In order to disable debug logging, you must comment-out the ASYNCDEBUGLOG
appender on conf/logback.xml. See CASSANDRA-10241 for more information.
2.2.1
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.2 if you are upgrading
from a previous version.
New features
------------
- COUNT(*) and COUNT(1) can be selected with other columns or functions
2.2
===
Upgrading
---------
- The authentication & authorization subsystems have been redesigned to
support role based access control (RBAC), resulting in a change to the
schema of the system_auth keyspace. See below for more detail.
For systems already using the internal auth implementations, the process
for converting existing data during a rolling upgrade is straightforward.
As each node is restarted, it will attempt to convert any data in the
legacy tables into the new schema. Until enough nodes to satisfy the
replication strategy for the system_auth keyspace are upgraded and so have
the new schema, this conversion will fail with the failure being reported
in the system log.
During the upgrade, Cassandra's internal auth classes will continue to use
the legacy tables, so clients experience no disruption. Issuing DCL
statements during an upgrade is not supported.
Once all nodes are upgraded, an operator with superuser privileges should
drop the legacy tables, system_auth.users, system_auth.credentials and
system_auth.permissions. Doing so will prompt Cassandra to switch over to
the new tables without requiring any further intervention.
While the legacy tables are present a restarted node will re-run the data
conversion and report the outcome so that operators can verify that it is
safe to drop them.
New features
------------
- The LIMIT clause applies now only to the number of rows returned to the user,
not to the number of row queried. By consequence, queries using aggregates will not
be impacted by the LIMIT clause anymore.
- Very large batches will now be rejected (defaults to 50kb). This
can be customized by modifying batch_size_fail_threshold_in_kb.
- Selecting columns,scalar functions, UDT fields, writetime or ttl together
with aggregated is now possible. The value returned for the columns,
scalar functions, UDT fields, writetime and ttl will be the ones for
the first row matching the query.
- Windows is now a supported platform. Powershell execution for startup scripts
is highly recommended and can be enabled via an administrator command-prompt
with: 'powershell set-executionpolicy unrestricted'
- It is now possible to do major compactions when using leveled compaction.
Doing that will take all sstables and compact them out in levels. The
levels will be non overlapping so doing this will still not be something
you want to do very often since it might cause more compactions for a while.
It is also possible to split output when doing a major compaction with
STCS - files will be split in sizes 50%, 25%, 12.5% etc of the total size.
This might be a bit better than old major compactions which created one big
file on disk.
- A new tool has been added bin/sstableverify that checks for errors/bitrot
in all sstables. Unlike scrub, this is a non-invasive tool.
- Authentication & Authorization APIs have been updated to introduce
roles. Roles and Permissions granted to them are inherited, supporting
role based access control. The role concept supercedes that of users
and CQL constructs such as CREATE USER are deprecated but retained for
compatibility. The requirement to explicitly create Roles in Cassandra
even when auth is handled by an external system has been removed, so
authentication & authorization can be delegated to such systems in their
entirety.
- In addition to the above, Roles are also first class resources and can be the
subject of permissions. Users (roles) can now be granted permissions on other
roles, including CREATE, ALTER, DROP & AUTHORIZE, which removesthe need for
superuser privileges in order to perform user/role management operations.
- Creators of database resources (Keyspaces, Tables, Roles) are now automatically
granted all permissions on them (if the IAuthorizer implementation supports
this).
- SSTable file name is changed. Now you don't have Keyspace/CF name
in file name. Also, secondary index has its own directory under parent's
directory.
- Support for user-defined functions and user-defined aggregates have
been added to CQL.
************************************************************************
IMPORTANT NOTE: user-defined functions can be used to execute
arbitrary and possibly evil code in Cassandra 2.2, and are
therefore disabled by default. To enable UDFs edit
cassandra.yaml and set enable_user_defined_functions to true.
CASSANDRA-9402 will add a security manager for UDFs in Cassandra
3.0. This will inherently be backwards-incompatible with any 2.2
UDF that perform insecure operations such as opening a socket or
writing to the filesystem.
Per the previous note about adding a security manager in 3.0, this security manager
means that non JavaScipt UDF's won't run, there for their use is deprecated.
************************************************************************
- Row-cache is now fully off-heap.
- jemalloc is now automatically preloaded and used on Linux and OS-X if
installed.
- Please ensure on Unix platforms that there is no libjnadispath.so
installed which is accessible by Cassandra. Old versions of
libjna packages (< 4.0.0) will cause problems - e.g. Debian Wheezy
contains libjna versin 3.2.x.
- The node now keeps up when streaming is failed during bootstrapping. You can
use new `nodetool bootstrap resume` command to continue streaming after resolving
an issue.
- Protocol version 4 specifies that bind variables do not require having a
value when executing a statement. Bind variables without a value are
called 'unset'. The 'unset' bind variable is serialized as the int
value '-2' without following bytes.
In an EXECUTE or BATCH request an unset bind value does not modify the value and
does not create a tombstone, an unset bind ttl is treated as 'unlimited',
an unset bind timestamp is treated as 'now', an unset bind counter operation
does not change the counter value.
Unset tuple field, UDT field and map key are not allowed.
In a QUERY request an unset limit is treated as 'unlimited'.
Unset WHERE clauses with unset partition column, clustering column
or index column are not allowed.
- New `ByteType` (cql tinyint). 1-byte signed integer
- New `ShortType` (cql smallint). 2-byte signed integer
- New `SimpleDateType` (cql date). 4-byte unsigned integer
- New `TimeType` (cql time). 8-byte long
- The toDate(timeuuid), toTimestamp(timeuuid) and toUnixTimestamp(timeuuid) functions have been added to allow
to convert from timeuuid into date type, timestamp type and bigint raw value.
The functions unixTimestampOf(timeuuid) and dateOf(timeuuid) have been deprecated.
- The toDate(timestamp) and toUnixTimestamp(timestamp) functions have been added to allow
to convert from timestamp into date type and bigint raw value.
- The toTimestamp(date) and toUnixTimestamp(date) functions have been added to allow
to convert from date into timestamp type and bigint raw value.
- SizeTieredCompactionStrategy parameter cold_reads_to_omit has been removed.
- The default JVM flag -XX:+PerfDisableSharedMem will cause the following tools JVM
to stop working: jps, jstack, jinfo, jmc, jcmd as well as 3rd party tools like Jolokia.
If you wish to use these tools you can comment this flag out in cassandra-env.{sh,ps1}
Upgrading
---------
- Thrift rpc is no longer being started by default.
Set `start_rpc` parameter to `true` to enable it.
- Pig's CqlStorage has been removed, use CqlNativeStorage instead
- Pig's CassandraStorage has been deprecated. CassandraStorage
should only be used against tables created via thrift.
Use CqlNativeStorage for all other tables.
- IAuthenticator been updated to remove responsibility for user/role
maintenance and is now solely responsible for validating credentials,
This is primarily done via SASL, though an optional method exists for
systems which need support for the Thrift login() method.
- IRoleManager interface has been added which takes over the maintenance
functions from IAuthenticator. IAuthorizer is mainly unchanged. Auth data
in systems using the stock internal implementations PasswordAuthenticator
& CassandraAuthorizer will be automatically converted during upgrade,
with minimal operator intervention required. Custom implementations will
require modification, though these can be used in conjunction with the
stock CassandraRoleManager so providing an IRoleManager implementation
should not usually be necessary.
- Fat client support has been removed since we have push notifications to clients
- cassandra-cli has been removed. Please use cqlsh instead.
- YamlFileNetworkTopologySnitch has been removed; switch to
GossipingPropertyFileSnitch instead.
- CQL2 has been removed entirely in this release (previously deprecated
in 2.0.0). Please switch to CQL3 if you haven't already done so.
- The results of CQL3 queries containing an IN restriction will be ordered
in the normal order and not anymore in the order in which the column values were
specified in the IN restriction.
- Some secondary index queries with restrictions on non-indexed clustering
columns were not requiring ALLOW FILTERING as they should. This has been
fixed, and those queries now require ALLOW FILTERING (see CASSANDRA-8418
for details).
- The SSTableSimpleWriter and SSTableSimpleUnsortedWriter classes have been
deprecated and will be removed in the next major Cassandra release. You
should use the CQLSSTableWriter class instead.
- The sstable2json and json2sstable tools have been deprecated and will be
removed in the next major Cassandra release. See CASSANDRA-9618
(https://issues.apache.org/jira/browse/CASSANDRA-9618) for details.
- nodetool enablehandoff will no longer support a list of data centers starting
with the next major release. Two new commands will be added, enablehintsfordc and disablehintsfordc,
to exclude data centers from using hinted handoff when the global status is enabled.
In cassandra.yaml, hinted_handoff_enabled will no longer support a list of data centers starting
with the next major release. A new setting will be added, hinted_handoff_disabled_datacenters,
to exclude data centers when the global status is enabled, see CASSANDRA-9035 for details.
2.1.13
======
New features
------------
- New options for cqlsh COPY FROM and COPY TO, see CASSANDRA-9303 for details.
2.1.10
=====
New features
------------
- The syntax TRUNCATE TABLE X is now accepted as an alias for TRUNCATE X
2.1.9
=====
Upgrading
---------
- cqlsh will now display timestamps with a UTC timezone. Previously,
timestamps were displayed with the local timezone.
- Commit log files are no longer recycled by default, due to negative
performance implications. This can be enabled again with the
commitlog_segment_recycling option in your cassandra.yaml
- JMX methods set/getCompactionStrategyClass have been deprecated, use
set/getCompactionParameters/set/getCompactionParametersJson instead
2.1.8
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.1 if you are upgrading
from a previous version.
2.1.7
=====
2.1.6
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.1 if you are upgrading
from a previous version.
2.1.5
=====
Upgrading
---------
- The option to omit cold sstables with size tiered compaction has been
removed - it is almost always better to use date tiered compaction for
workloads that have cold data.
2.1.4
=====
Upgrading
---------
The default JMX config now listens to localhost only. You must enable
the other JMX flags in cassandra-env.sh manually.
2.1.3
=====
Upgrading
---------
- Prepending a list to a list collection was erroneously resulting in
the prepended list being reversed upon insertion. If you were depending
on this buggy behavior, note that it has been corrected.
- Incremental replacement of compacted SSTables has been disabled for this
release.
2.1.2
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.1 if you are upgrading
from a previous version.
2.1.1
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.1 if you are upgrading
from a previous version.
New features
------------
- Netty support for epoll on linux is now enabled. If for some
reason you want to disable it pass, the following system property
-Dcassandra.native.epoll.enabled=false
2.1
===
New features
------------
- Default data and log locations have changed. If not set in
cassandra.yaml, the data file directory, commitlog directory,
and saved caches directory will default to $CASSANDRA_HOME/data/data,
$CASSANDRA_HOME/data/commitlog, and $CASSANDRA_HOME/data/saved_caches,
respectively. The log directory now defaults to $CASSANDRA_HOME/logs.
If not set, $CASSANDRA_HOME, defaults to the top-level directory of
the installation.
Note that this should only affect source checkouts and tarballs.
Deb and RPM packages will continue to use /var/lib/cassandra and
/var/log/cassandra in cassandra.yaml.
- SSTable data directory name is slightly changed. Each directory will
have hex string appended after CF name, e.g.
ks/cf-5be396077b811e3a3ab9dc4b9ac088d/
This hex string part represents unique ColumnFamily ID.
Note that existing directories are used as is, so only newly created
directories after upgrade have new directory name format.
- Saved key cache files also have ColumnFamily ID in their file name.
- It is now possible to do incremental repairs, sstables that have been
repaired are marked with a timestamp and not included in the next
repair session. Use nodetool repair -par -inc to use this feature.
A tool to manually mark/unmark sstables as repaired is available in
tools/bin/sstablerepairedset. This is particularly important when
using LCS, or any data not repaired in your first incremental repair
will be put back in L0.
- Bootstrapping now ensures that range movements are consistent,
meaning the data for the new node is taken from the node that is no
longer a responsible for that range of keys.
If you want the old behavior (due to a lost node perhaps)
you can set the following property (-Dcassandra.consistent.rangemovement=false)
- It is now possible to use quoted identifiers in triggers' names.
WARNING: if you previously used triggers with capital letters in their
names, then you must quote them from now on.
- Improved stress tool (http://goo.gl/OTNqiQ)
- New incremental repair option (http://goo.gl/MjohJp, http://goo.gl/f8jSme)
- Incremental replacement of compacted SSTables (http://goo.gl/JfDBGW)
- The row cache can now cache only the head of partitions (http://goo.gl/6TJPH6)
- Off-heap memtables (http://goo.gl/YT7znJ)
- CQL improvements and additions: User-defined types, tuple types, 2ndary
indexing of collections, ... (http://goo.gl/kQl7GW)
Upgrading
---------
- commitlog_sync_batch_window_in_ms behavior has changed from the
maximum time to wait between fsync to the minimum time. We are
working on making this more user-friendly (see CASSANDRA-9533) but in the
meantime, this means 2.1 needs a much smaller batch window to keep
writer threads from starving. The suggested default is now 2ms.
- Rolling upgrades from anything pre-2.0.7 is not supported. Furthermore
pre-2.0 sstables are not supported. This means that before upgrading
a node on 2.1, this node must be started on 2.0 and
'nodetool upgdradesstables' must be run (and this even in the case
of not-rolling upgrades).
- For size-tiered compaction users, Cassandra now defaults to ignoring
the coldest 5% of sstables. This can be customized with the
cold_reads_to_omit compaction option; 0.0 omits nothing (the old
behavior) and 1.0 omits everything.
- Multithreaded compaction has been removed.
- Counters implementation has been changed, replaced by a safer one with
less caveats, but different performance characteristics. You might have
to change your data model to accomodate the new implementation.
(See https://issues.apache.org/jira/browse/CASSANDRA-6504 and the
blog post at http://goo.gl/qj8iQl for details).
- (per-table) index_interval parameter has been replaced with
min_index_interval and max_index_interval paratemeters. index_interval
has been deprecated.
- support for supercolumns has been removed from json2sstable
2.0.11
======
Upgrading
---------
- Nothing specific to this release, but refer to previous entries if you
are upgrading from a previous version.
New features
------------
- DateTieredCompactionStrategy added, optimized for time series data and groups
data that is written closely in time (CASSANDRA-6602 for details). Consider
this experimental for now.
2.0.10
======
New features
------------
- CqlPaginRecordReader and CqlPagingInputFormat have both been removed.
Use CqlInputFormat instead.
- If you are using Leveled Compaction, you can now disable doing size-tiered
compaction in L0 by starting Cassandra with -Dcassandra.disable_stcs_in_l0
(see CASSANDRA-6621 for details).
- Shuffle and taketoken have been removed. For clusters that choose to
upgrade to vnodes, creating a new datacenter with vnodes and migrating is
recommended. See http://goo.gl/Sna2S1 for further information.
2.0.9
=====
Upgrading
---------
- Default values for read_repair_chance and local_read_repair_chance have been
swapped. Namely, default read_repair_chance is now set to 0.0, and default
local_read_repair_chance to 0.1.
- Queries selecting only CQL static columns were (mistakenly) not returning one
result per row in the partition. This has been fixed and a SELECT DISTINCT
can be used when only the static column of a partition needs to be fetch
without fetching the whole partition. But if you use static columns, please
make sure this won't affect you (see CASSANDRA-7305 for details).
2.0.8
=====
New features
------------
- New snitches have been used for users of Google Compute Engine and of
Cloudstack.
Upgrading
---------
- Nothing specific to this release, but please see 2.0.7 if you are upgrading
from a previous version.
2.0.7
=====
Upgrading
---------
- Nothing specific to this release, but please see 2.0.6 if you are upgrading
from a previous version.
2.0.6
=====
New features
------------
- CQL now support static columns, allows to batch multiple conditional updates
and has a new syntax for slicing over multiple clustering columns
(http://goo.gl/B6qz4j).
- Repair can be restricted to a set of nodes using the -hosts option in nodetool.
- A new 'nodetool taketoken' command relocate tokens with vnodes.
- Hinted handoff can be enabled only for some data-centers (see
hinted_handoff_enabled in cassandra.yaml)
Upgrading
---------
- Nothing specific to this release, but please see 2.0.5 if you are upgrading
from a previous version.
2.0.5
=====
New features
------------
- Batchlog replay can be, and is throttled by default now.
See batchlog_replay_throttle_in_kb setting in cassandra.yaml.
- Scrub can now optionally skip corrupt counter partitions. Please note
that this will lead to the loss of all the counter updates in the skipped
partition. See the --skip-corrupted option.
Upgrading
---------
- If your cluster began on a version before 1.2, check that your secondary
index SSTables are on version 'ic' before upgrading. If not, run
'nodetool upgradesstables' if on 1.2.14 or later, or run 'nodetool
upgradesstables ks cf' with the keyspace and secondary index named
explicitly otherwise. If you don't do this and upgrade to 2.0.x and it
refuses to start because of 'hf' version files in the secondary index,
you will need to delete/move them out of the way and recreate the index
when 2.0.x starts.
2.0.3
=====
New features
------------
- It's now possible to configure the maximum allowed size of the native
protocol frames (native_transport_max_frame_size_in_mb in the yaml file).
Upgrading
---------
- NaN and Infinity are new valid floating point constants in CQL3 and are now reserved
keywords. In the unlikely case you were using one of them as an identifier (for a
column, a keyspace or a table), you will now have to double-quote them (see
http://cassandra.apache.org/doc/cql3/CQL.html#identifiers for "quoted identifiers").
- The IEndpointStateChangeSubscriber has a new method, beforeChange, that
any custom implemenations using the class will need to implement.
2.0.2
=====
New features
------------
- Speculative retry defaults to 99th percentile
(See blog post at http://www.datastax.com/dev/blog/rapid-read-protection-in-cassandra-2-0-2)
- Configurable metrics reporting
(see conf/metrics-reporter-config-sample.yaml)
- Compaction history and stats are now saved to system keyspace
(system.compaction_history table). You can access historiy via
new 'nodetool compactionhistory' command or CQL.
Upgrading
---------
- Nodetool defaults to Sequential mode for repair operations
2.0.1
=====
Upgrading
---------
- The default memtable allocation has changed from 1/3 of heap to 1/4
of heap. Also, default (single-partition) read and write timeouts
have been reduced from 10s to 5s and 2s, respectively.
2.0.0
=====
Upgrading
---------
- Java 7 is now *required*!
- Upgrading is ONLY supported from Cassandra 1.2.9 or later. This
goes for sstable compatibility as well as network. When
upgrading from an earlier release, upgrade to 1.2.9 first and
run upgradesstables before proceeding to 2.0.
- CAS and new features in CQL such as DROP COLUMN assume that cell
timestamps are microseconds-since-epoch. Do not use these
features if you are using client-specified timestamps with some
other source.
- Replication and strategy options do not accept unknown options anymore.
This was already the case for CQL3 in 1.2 but this is now the case for
thrift too.
- auto_bootstrap of a single-token node with no initial_token will
now pick a random token instead of bisecting an existing token
range. We recommend upgrading to vnodes; failing that, we
recommend specifying initial_token.
- reduce_cache_sizes_at, reduce_cache_capacity_to, and
flush_largest_memtables_at options have been removed from cassandra.yaml.
- CacheServiceMBean.reduceCacheSizes() has been removed.
Use CacheServiceMBean.set{Key,Row}CacheCapacityInMB() instead.
- authority option in cassandra.yaml has been deprecated since 1.2.0,
but it has been completely removed in 2.0. Please use 'authorizer' option.
- ASSUME command has been removed from cqlsh. Use CQL3 blobAsType() and
typeAsBlob() conversion functions instead.
See https://cassandra.apache.org/doc/cql3/CQL.html#blobFun for details.
- Inputting blobs as string constants is now fully deprecated in
favor of blob constants. Make sure to update your applications to use
the new syntax while you are still on 1.2 (which supports both string
and blob constants for blob input) before upgrading to 2.0.
- index_interval is now moved to ColumnFamily property. You can change value
with ALTER TABLE ... WITH statement and SSTables written after that will
have new value. When upgrading, Cassandra will pick up the value defined in
cassanda.yaml as the default for existing ColumnFamilies, until you explicitly
set the value for those.
- The deprecated native_transport_min_threads option has been removed in
Cassandra.yaml.
Operations
----------
- VNodes are enabled by default in cassandra.yaml. initial_token
for non-vnode deployments has been removed from the example
yaml, but is still respected if specified.
- Major compactions, cleanup, scrub, and upgradesstables will interrupt
any in-progress compactions (but not repair validations) when invoked.
- Disabling autocompactions by setting min/max compaction threshold to 0
has been deprecated, instead, use the nodetool commands 'disableautocompaction'
and 'enableautocompaction' or set the compaction strategy option enabled = false
- ALTER TABLE DROP has been reenabled for CQL3 tables and has new semantics now.
See https://cassandra.apache.org/doc/cql3/CQL.html#alterTableStmt and
https://issues.apache.org/jira/browse/CASSANDRA-3919 for details.
- CAS uses gc_grace_seconds to determine how long to keep unused paxos
state around for, or a minimum of three hours.
- A new hints created metric is tracked per target, replacing countPendingHints
- After performance testing for CASSANDRA-5727, the default LCS filesize
has been changed from 5MB to 160MB.
- cqlsh DESCRIBE SCHEMA no longer outputs the schema of system_* keyspaces;
use DESCRIBE FULL SCHEMA if you need the schema of system_* keyspaces.
- CQL2 has been deprecated, and will be removed entirely in 2.2. See
CASSANDRA-5918 for details.
- Commit log archiver now assumes the client time stamp to be in microsecond
precision, during restore. Please refer to commitlog_archiving.properties.
Features
--------
- Lightweight transactions
(http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0)
- Alias support has been added to CQL3 SELECT statement. Refer to
CQL3 documentation (http://cassandra.apache.org/doc/cql3/CQL.html) for details.
- JEMalloc support (see memory_allocator in cassandra.yaml)
- Experimental triggers support. See examples/ for how to use. "Experimental"
means "tied closely to internal data structures; we plan to decouple this in
the future, which will probably break triggers written against this initial
API."
- Numerous improvements to CQL3 and a new version of the native protocol. See
http://www.datastax.com/dev/blog/cql-in-cassandra-2-0 for details.
1.2.11
======
Features
--------
- Added a new consistency level, LOCAL_ONE, that forces all CL.ONE operations to
execute only in the local datacenter.
- New replace_address to supplant the (now removed) replace_token and
replace_node workflows to replace a dead node in place. Works like the
old options, but takes the IP address of the node to be replaced.
1.2.9
=====
Features
--------
- A history of executed nodetool commands is now captured.
It can be found in ~/.cassandra/nodetool.history. Other tools output files
(cli and cqlsh history, .cqlshrc) are now centralized in ~/.cassandra, as well.
- A new sstablesplit utility allows to split large sstables offline.
1.2.8
=====
Upgrading
---------
- Nothing specific to this release, but please see 1.2.7 if you are upgrading
from a previous version.
1.2.7
=====
Upgrading
---------
- If you have decommissioned a node in the past 72 hours, it is imperative
that you not upgrade until such time has passed, or do a full cluster
restart (not rolling) before beginning the upgrade. This only applies to
decommission, not removetoken.
1.2.6
=====
Upgrading
---------
- hinted_handoff_throttle_in_kb is now reduced by a factor
proportional to the number of nodes in the cluster (see
https://issues.apache.org/jira/browse/CASSANDRA-5272).
- CQL3 syntax for CREATE CUSTOM INDEX has been updated. See CQL3
documentation for details.
1.2.5
=====
Features
--------
- Custom secondary index support has been added to CQL3. Refer to
CQL3 documentation (http://cassandra.apache.org/doc/cql3/CQL.html)
for details and examples.
Upgrading
---------
- The native CQL transport is enabled by default on part 9042.
1.2.4
=====
Upgrading
---------
- 'nodetool upgradesstables' now only upgrades/rewrites sstables that are
not on the current version (which is usually what you want). Use the new
-a flag to recover the old behavior of rewriting all sstables.
Features
--------
- superuser setup delay (10 seconds) can now be overridden using
'cassandra.superuser_setup_delay_ms' property.
1.2.3
=====
Upgrading
---------
- CQL3 used to be case-insensitive for property map key in ALTER and CREATE
statements. In other words:
CREATE KEYSPACE test WITH replication = { 'CLASS' : 'SimpleStrategy',
'REPLICATION_FACTOR' : '1' }
was allowed. However, this was not consistent with the fact that string
literal are case sensitive in every other places and more importantly this
break NetworkTopologyStrategy for which DC names are case sensitive. Those
property map key are now case sensitive. So the statement above should be
changed to:
CREATE KEYSPACE test WITH replication = { 'class' : 'SimpleStrategy',
'replication_factor' : '1' }
1.2.2
=====
Upgrading
---------
- CQL3 type validation for constants has been fixed, which may require
fixing queries that were relying on the previous loose validation. Please
refer to the CQL3 documentation (http://cassandra.apache.org/doc/cql3/CQL.html)
and in particular the changelog section for more details. Please note in
particular that inputing blobs as strings constants is now deprecated (in
favor of blob constants) and its support will be removed in a future
version.
Features
--------
- Built-in CQL3-based implementations of IAuthenticator (PasswordAuthenticator)
and IAuthorizer (CassandraAuthorizer) have been added. PasswordAuthenticator
stores usernames and hashed passwords in system_auth.credentials table;
CassandraAuthorizer stores permissions in system_auth.permissions table.
- system_auth keyspace is now alterable via ALTER KEYSPACE queries.
The default is SimpleStrategy with replication_factor of 1, but it's
advised to raise RF to at least 3 or 5, since CL.QUORUM is used for all
auth-related queries. It's also possible to change the strategy to NTS.
- Permissions caching with time-based expiration policy has been added to reduce
performance impact of authorization. Permission validity can be configured
using 'permissions_validity_in_ms' setting in cassandra.yaml. The default
is 2000 (2 seconds).
- SimpleAuthenticator and SimpleAuthorizer examples have been removed. Please
look at CassandraAuthorizer/PasswordAuthenticator instead.
1.2.1
=====
Upgrading
---------
- In CQL3, date string are no longer accepted as timeuuid value since a
date string is not a correct representation of a timeuuid. Instead, new
methods (minTimeuuid, maxTimeuuid, now, dateOf, unixTimestampOf) have been
introduced to make working on timeuuid from date string easy. cqlsh also
does not display timeuuid as date string (since this is a lossy
representation), but the new dateOf method can be used instead. Please
refer to the reference documentation (http://cassandra.apache.org/doc/cql3/CQL.html)
for more detail.