General upgrade advice for DSE 6.8.0
DataStax Enterprise 6.8.0 is compatible with Apache Cassandra® 3.11. All upgrade advice from previous versions applies. Carefully reviewing the DataStax Enterprise upgrade planning and upgrade instructions can ensure a smooth upgrade and avoid pitfalls and frustrations.
DataStax Enterprise 6.8.0 is compatible with Apache Cassandra 3.11 and adds Cassandra enhancements for DSE 6.8.0.
Additional advice for upgrading between versions of Apache Cassandra includes:
Cassandra 4.0 changes
-
Catch non-IOException in FileUtils.close to make sure that all resources are closed (CASSANDRA-15225)
-
Nodetool import row cache invalidation races with adding SSTables to tracker (CASSANDRA-14529)
-
Let nodetool import take a list of directories (CASSANDRA-14442)
-
nodetool import cleanup and improvements (CASSANDRA-14417)
-
Add ability to load new SSTables from a separate directory (CASSANDRA-6719)
-
Add a few options to nodetool verify (CASSANDRA-14201)
-
Make all DDL statements idempotent and not dependent on global state (CASSANDRA-13426)
-
Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515)
-
BloomFilter serialization format should not change byte ordering (CASSANDRA-9067)
-
Remove unused on-heap BloomFilter implementation (CASSANDRA-14152)
-
Add a virtual table to expose settings (CASSANDRA-14573)
-
Add a virtual table to expose caches (CASSANDRA-14538)
-
Fix up chunk cache handling of metrics (CASSANDRA-14628)
-
Add a virtual table to expose active client connections (CASSANDRA-14458)
-
Clean up and refactor client metrics (CASSANDRA-14524)
-
NodeTool clientstats should show SSL Cipher (CASSANDRA-14322)
-
Add ability to specify driver name and version (CASSANDRA-14275)
-
Add nodetool clientlist (CASSANDRA-13665)
-
Pad uncompressed chunks when they would be interpreted as compressed (CASSANDRA-14892)
-
Bind to correct local address in 4.0 streaming (CASSANDRA-14362)
-
Set broadcast address in internode messaging handshake (CASSANDRA-14579)
-
Internode messaging handshake sends wrong messaging version number (CASSANDRA-14540)
-
Use Netty for streaming (CASSANDRA-12229)
-
Use Netty for internode messaging (CASSANDRA-8457)
-
Correct and clarify SSLFactory.getSslContext method and call sites (CASSANDRA-14314)
-
Properly close StreamCompressionInputStream to release any ByteBuf (CASSANDRA-13906)
-
Correctly close Netty channels when a stream session ends (CASSANDRA-13905)
-
Fix buffer length comparison when decompressing in Netty-based streaming (CASSANDRA-13899)
-
Race condition when closing stream sessions (CASSANDRA-13852)
-
Make monotonic read / read repair configurable (CASSANDRA-14635)
-
Improve read repair blocking behavior (CASSANDRA-10726)
-
Add coordinator write metric per CF (CASSANDRA-14232)
-
Make PartitionUpdate and Mutation immutable (CASSANDRA-13867)
-
Disable old native protocol versions on demand (CASSANDRA-14659)
-
Refactor CompactionStrategyManager (CASSANDRA-14621)
-
Extend IAuthenticator to accept peer SSL certificates (CASSANDRA-14652)
-
For LCS, single SSTable up-level is handled inefficiently (CASSANDRA-12526)
-
Fix setting min/max compaction threshold with LCS (CASSANDRA-14388)
-
Support light-weight transactions in cassandra-stress (CASSANDRA-13529)
-
Add a virtual table to expose all running sstable tasks (CASSANDRA-14457)
-
Implement virtual keyspace interface (CASSANDRA-7622)
-
cassandra-stress throws NPE if insert section isn’t specified in user profile (CASSSANDRA-14426)
-
nodetool listsnapshots is missing local system keyspace snapshots (CASSANDRA-14381)
-
CVE-2017-5929 Security vulnerability and redefine default log rotation policy (CASSANDRA-14183)
-
Fix sstablemetadata date string for minLocalDeletionTime (CASSANDRA-14132)
-
Make sub-range selection for non-frozen collections return null instead of empty (CASSANDRA-14182)
-
Fix cassandra-stress startup failure (CASSANDRA-14106)
-
Fix trivial log format error (CASSANDRA-14015)
-
Allow sstabledump to do a json object per partition (CASSANDRA-13848)
-
Remove unused and deprecated methods from AbstractCompactionStrategy (CASSANDRA-14081)
-
Fix Distribution.average in cassandra-stress (CASSANDRA-14090)
-
Presize collections (CASSANDRA-13760)
-
Add GroupCommitLogService (CASSANDRA-13530)
-
Parallelize initial materialized view build (CASSANDRA-12245)
-
Fix flaky SecondaryIndexManagerTest.assert[Not]MarkedAsBuilt (CASSANDRA-13965)
-
Make LWTs send resultset metadata on every request (CASSANDRA-13992)
-
Fix flaky indexWithFailedInitializationIsNotQueryableAfterPartialRebuild (CASSANDRA-13963)
-
Introduce leaf-only iterator (CASSANDRA-9988)
-
Allow only one concurrent call to StatusLogger (CASSANDRA-12182)
-
Refactoring to specialised functional interfaces (CASSANDRA-13982)
-
Speculative retry should allow more friendly params (CASSANDRA-13876)
-
Throw exception if we send/receive repair messages to incompatible nodes (CASSANDRA-13944)
-
Replace usages of MessageDigest with Guava’s Hasher (CASSANDRA-13291)
-
Add nodetool cmd to print hinted handoff window (CASSANDRA-13728)
-
Fix some alerts raised by static analysis (CASSANDRA-13799)
-
Checksum sstable metadata (CASSANDRA-13321, CASSANDRA-13593)
-
Add result set metadata to prepared statement MD5 hash calculation (CASSANDRA-10786)
-
Add incremental repair support for --hosts, --force, and subrange repair (CASSANDRA-13818)
-
Refactor GcCompactionTest to avoid boxing (CASSANDRA-13941)
-
Expose recent histograms in JmxHistograms (CASSANDRA-13642)
-
Add SERIAL and LOCAL_SERIAL support for cassandra-stress (CASSANDRA-13925)
-
LCS needlessly checks for L0 STCS candidates multiple times (CASSANDRA-12961)
-
Update lz4 to 1.4.0 (CASSANDRA-13741)
-
Throttle base partitions during MV repair streaming to prevent OOM (CASSANDRA-13299)
-
Improve short read protection performance (CASSANDRA-13794)
-
Fix AssertionError in short read protection (CASSANDRA-13747)
-
Use compaction threshold for STCS in L0 (CASSANDRA-13861)
-
Fix problem with min_compress_ratio: 1 and disallow ratio < 1 (CASSANDRA-13703)
-
Add extra information to SASI timeout exception (CASSANDRA-13677)
-
Rework CompactionStrategyManager.getScanners synchronization (CASSANDRA-13786)
-
Add additional unit tests for batch behavior, TTLs, Timestamps (CASSANDRA-13846)
-
Add keyspace and table name in schema validation exception (CASSANDRA-13845)
-
Emit metrics whenever we hit tombstone failures and warn thresholds (CASSANDRA-13771)
-
Allow changing log levels via nodetool for related classes (CASSANDRA-12696)
-
Add stress profile yaml with LWT (CASSANDRA-7960)
-
Reduce memory copies and object creations when acting on ByteBufs (CASSANDRA-13789)
-
simplify mx4j configuration (Cassandra-13578)
-
Fix trigger example on 4.0 (CASSANDRA-13796)
-
force minimum timeout value (CASSANDRA-9375)
-
Add bytes repaired/unrepaired to nodetool tablestats (CASSANDRA-13774)
-
Don’t delete incremental repair sessions if they still have sstables (CASSANDRA-13758)
-
Fix pending repair manager index out of bounds check (CASSANDRA-13769)
-
Don’t use RangeFetchMapCalculator when RF=1 (CASSANDRA-13576)
-
Don’t optimise trivial ranges in RangeFetchMapCalculator (CASSANDRA-13664)
-
Use an ExecutorService for repair commands instead of new Thread(..).start() (CASSANDRA-13594)
-
Fix race / ref leak in anticompaction (CASSANDRA-13688)
-
Fix race / ref leak in PendingRepairManager (CASSANDRA-13751)
-
Enable ppc64le runtime as unsupported architecture (CASSANDRA-13615)
-
Improve sstablemetadata output (CASSANDRA-11483)
-
Support for migrating legacy users to roles has been dropped (CASSANDRA-13371)
-
Introduce error metrics for repair (CASSANDRA-13387)
-
Refactoring to primitive functional interfaces in AuthCache (CASSANDRA-13732)
-
Update metrics to 3.1.5 (CASSANDRA-13648)
-
batch_size_warn_threshold_in_kb can now be set at runtime (CASSANDRA-13699)
-
Avoid always rebuilding secondary indexes at startup (CASSANDRA-13725)
-
Upgrade JMH from 1.13 to 1.19 (CASSANDRA-13727)
-
Upgrade SLF4J from 1.7.7 to 1.7.25 (CASSANDRA-12996)
-
Default for start_native_transport now true if not set in config (CASSANDRA-13656)
-
Don’t add localhost to the graph when calculating where to stream from (CASSANDRA-13583)
-
Allow skipping equality-restricted clustering columns in ORDER BY clause (CASSANDRA-10271)
-
Use common nowInSec for validation compactions (CASSANDRA-13671)
-
Improve handling of IR prepare failures (CASSANDRA-13672)
-
Send IR coordinator messages synchronously (CASSANDRA-13673)
-
Flush system.repair table before IR finalize promise (CASSANDRA-13660)
-
Fix column filter creation for wildcard queries (CASSANDRA-13650)
-
Add 'nodetool getbatchlogreplaythrottle' and 'nodetool setbatchlogreplaythrottle' (CASSANDRA-13614)
-
fix race condition in PendingRepairManager (CASSANDRA-13659)
-
Allow noop incremental repair state transitions (CASSANDRA-13658)
-
Run repair with down replicas (CASSANDRA-10446)
-
Added started & completed repair metrics (CASSANDRA-13598)
-
Added started & completed repair metrics (CASSANDRA-13598)
-
Improve secondary index (re)build failure and concurrency handling (CASSANDRA-10130)
-
Improve calculation of available disk space for compaction (CASSANDRA-13068)
-
Change the accessibility of RowCacheSerializer for third party row cache plugins (CASSANDRA-13579)
-
Allow sub-range repairs for a preview of repaired data (CASSANDRA-13570)
-
NPE in IR cleanup when columnfamily has no sstables (CASSANDRA-13585)
-
Fix Randomness of stress values (CASSANDRA-12744)
-
Allow selecting Map values and Set elements (CASSANDRA-7396)
-
Fast and garbage-free Streaming Histogram (CASSANDRA-13444)
-
Update repairTime for keyspaces on completion (CASSANDRA-13539)
-
Add configurable upper bound for validation executor threads (CASSANDRA-13521)
-
Bring back maxHintTTL propery (CASSANDRA-12982)
-
Add testing guidelines (CASSANDRA-13497)
-
Add more repair metrics (CASSANDRA-13531)
-
RangeStreamer should be smarter when picking endpoints for streaming (CASSANDRA-4650)
-
Avoid rewrapping an exception thrown for cache load functions (CASSANDRA-13367)
-
Log time elapsed for each incremental repair phase (CASSANDRA-13498)
-
Add multiple table operation support to cassandra-stress (CASSANDRA-8780)
Cassandra 3.11.2 changes
-
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 3.11.2 upgrade considerations
-
Creating Materialized View with filtering on non-primary-key base column (added in CASSANDRA-10368) is disabled, because the liveness of view row is depending on multiple filtered base non-key columns and base non-key column used in view primary-key. This semantic cannot be supported without storage format change, see CASSANDRA-13826. For append-only use case, you may still use this feature with a startup flag: "-Dcassandra.mv.allow_filtering_nonkey_columns_unsafe=true"
-
The NativeAccessMBean isAvailable method will only return true if the native library has been successfully linked. Previously it was returning true if JNA could be found but was not taking into account link failures.
-
Primary ranges in the system.size_estimates table are now based on the keyspace replication settings and adjacent ranges are no longer merged (CASSANDRA-9639).
-
In 2.1, the default for otc_coalescing_strategy was 'DISABLED'. In 2.2 and 3.0, it was changed to 'TIMEHORIZON', but that value was shown to be a performance regression. The default for 3.11.0 and newer has been reverted to 'DISABLED'. Users upgrading from Cassandra 2.2 or 3.0 should be aware that the default has changed.
-
The StorageHook interface has been modified to allow to retrieve read information from SSTableReader (CASSANDRA-13120).
-
Materialized Views for upgrades from DSE 5.1.1 or 5.1.2 or any version DSE 5.0.10 or later:
-
Cassandra will no longer allow dropping columns on tables with Materialized Views.
-
A change was made in the way the Materialized View timestamp is computed, which may cause an old deletion to a base column which is view primary key (PK) column to not be reflected in the view when repairing the base table post-upgrade. This condition is only possible when a column deletion to an MV primary key (PK) column not present in the base table PK (via UPDATE base SET view_pk_col = null or DELETE view_pk_col FROM base) is missed before the upgrade and received by repair after the upgrade. If such column deletions are done on a view PK column which is not a base PK, it’s advisable to run repair on the base table of all nodes prior to the upgrade. Alternatively it’s possible to fix potential inconsistencies by running repair on the views after upgrade or drop and re-create the views. See CASSANDRA-11500 for more details.
-
Removal of columns not selected in the Materialized View (via UPDATE base SET unselected_column = null or DELETE unselected_column FROM base) may not be properly reflected in the view in some situations so we advise against doing deletions on base columns not selected in views until this is fixed on CASSANDRA-13826.
-
Cassandra 3.10 changes
-
Runtime modification of concurrent_compactors is now available via nodetool concurrent_compactors.
-
Support for the assignment operators +=/-= has been added for update queries.
-
An Index implementation may now provide a task which runs prior to joining the ring. See CASSANDRA-12039
-
Filtering on partition key columns is now also supported for queries without secondary indexes.
-
A slow query log has been added: slow queries will be logged at DEBUG level. For more details refer to CASSANDRA-12403 and slow_query_log_timeout_in_ms in cassandra.yaml.
-
Support for GROUP BY queries has been added.
-
A new compaction-stress tool has been added to test the throughput of compaction for any cassandra-stress user schema. see compaction-stress help for how to use.
-
Prepared statements are now persisted in the table prepared_statements in the system keyspace. Upon startup, this table is used to preload all previously prepared statements - i.e. in many cases clients do not need to re-prepare statements against restarted nodes.
-
cqlsh can now connect to older Cassandra versions by downgrading the native protocol version. Please note that this is currently not part of our release testing and, as a consequence, it is not guaranteed to work in all cases. See CASSANDRA-12150 for more details.
-
Snapshots that are automatically taken before a table is dropped or truncated will have a "dropped" or "truncated" prefix on their snapshot tag name.
-
Metrics are exposed for successful and failed authentication attempts. These can be located using the object names org.apache.cassandra.metrics:type=Client,name=AuthSuccess and org.apache.cassandra.metrics:type=Client,name=AuthFailure respectively.
-
Add support to "unset" JSON fields in prepared statements by specifying DEFAULT UNSET. See CASSANDRA-11424 for details
-
Allow TTL with null value on insert and update. It will be treated as equivalent to inserting a 0.
-
Removed outboundBindAny configuration property. See CASSANDRA-12673 for details.
Cassandra 3.10 upgrade considerations
-
Support for alter types of already defined tables and of UDTs fields has been disabled. If it is necessary to return a different type, please use casting instead. See CASSANDRA-12443 for more details.
-
Specifying the default_time_to_live option when creating or altering a materialized view was erroneously accepted (and ignored). It is now properly rejected.
-
Only Java and JavaScript are now supported UDF languages. The sandbox in 3.0 already prevented the use of script languages except Java and JavaScript.
-
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.
-
Request timeouts in cassandra.yaml (read_request_timeout_in_ms, etc) now apply to the "full" request time on the coordinator. Previously, they only covered the time from when the coordinator sent a message to a replica until the time that the replica responded. Additionally, the previous behavior was to reset the timeout when performing a read repair, making a second read to fix a short read, and when subranges were read as part of a range scan or secondary index query. In 3.10 and higher, the timeout is no longer reset for these "subqueries". The entire request must complete within the specified timeout. As a consequence, your timeouts may need to be adjusted to account for this. See CASSANDRA-12256 for more details.
-
Logs written to stdout are now consistent with logs written to files. Time is now local (it was UTC on the console and local in files). Date, thread, file and line info where added to stdout. (see CASSANDRA-12004)
-
The 'clientutil' jar, which has been somewhat broken on the 3.x branch, is not longer provided. The features provided by that jar are provided by any good java driver and we advise relying on drivers rather on that jar, but if you need that jar for backward compatiblity until you do so, you should use the version provided on previous Cassandra branch, like the 3.0 branch (by design, the functionality provided by that jar are stable accross versions so using the 3.0 jar for a client connecting to 3.x should work without issues).
-
(Tools development) DatabaseDescriptor no longer implicitly startups components/services like commit log replay. This may break existing 3rd party tools and clients. In order to startup a standalone tool or client application, use the DatabaseDescriptor.toolInitialization() or DatabaseDescriptor.clientInitialization() methods. Tool initialization sets up partitioner, snitch, encryption context. Client initialization just applies the configuration but does not setup anything. Instead of using Config.setClientMode() or Config.isClientMode(), which are deprecated now, use one of the appropiate new methods in DatabaseDescriptor.
-
Application layer keep-alives were added to the streaming protocol to prevent idle incoming connections from timing out and failing the stream session (CASSANDRA-11839). This effectively deprecates the streaming_socket_timeout_in_ms property in favor of streaming_keep_alive_period_in_secs. See cassandra.yaml for more details about this property.
-
Duration literals support the ISO 8601 format. By consequence, identifiers matching that format (e.g P2Y or P1MT6H) will not be supported anymore (CASSANDRA-11873).
Cassandra 3.8 changes
-
Shared pool threads are now named according to the stage they are executing tasks for. Thread names mentioned in traced queries change accordingly.
-
A new option has been added to cassandra-stress "-rate fixed={number}/s" that forces a scheduled rate of operations/sec over time. Using this, stress can accurately account for coordinated ommission from the stress process.
-
The cassandra-stress "-rate limit=" option has been renamed to "-rate throttle="
-
hdr histograms have been added to stress runs, it’s output can be saved to disk using: "-log hdrfile=" option. This histogram includes response/service/wait times when used with the fixed or throttle rate options. The histogram file can be plotted on http://hdrhistogram.github.io/HdrHistogram/plotFiles.html
-
TimeWindowCompactionStrategy has been added. This has proven to be a better approach to time series compaction and new tables should use this instead of DTCS. See CASSANDRA-9666 for details.
-
DateTieredCompactionStrategy has been deprecated - new tables should use TimeWindowCompactionStrategy. Note that migrating an existing DTCS-table to TWCS might cause increased compaction load for a while after the migration so make sure you run tests before migrating. Read CASSANDRA-9666 for background on this.
-
Change-Data-Capture is now available. See cassandra.yaml and for cdc-specific flags and a brief explanation of on-disk locations for archived data in CommitLog form. This can be enabled via ALTER TABLE … WITH cdc=true. Upon flush, CommitLogSegments containing data for CDC-enabled tables are moved to the data/cdc_raw directory until removed by the user and writes to CDC-enabled tables will be rejected with a WriteTimeoutException once cdc_total_space_in_mb is reached between unflushed CommitLogSegments and cdc_raw.
CDC is disabled by default in the .yaml file. Do not enable CDC on a mixed-version cluster as it will lead to exceptions which can interrupt traffic. Once all nodes have been upgraded to 3.8 it is safe to enable this feature and restart the cluster.
Cassandra 3.10 upgrade considerations
-
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.
-
Ec2MultiRegionSnitch will no longer automatically set broadcast_rpc_address to the public instance IP if this property is defined on cassandra.yaml.
-
The name "json" and "distinct" are not valid anymore a user-defined function names (they are still valid as column name however). In the unlikely case where you had defined functions with such names, you will need to recreate those under a different name, change your code to use the new names and drop the old versions, and this before upgrade (see CASSANDRA-10783 for more details).
Cassandra 3.7 upgrade considerations
-
A maximum size for SSTables values has been introduced, to prevent out of memory exceptions when reading corrupt SSTables. This maximum size can be set via max_value_size_in_mb in cassandra.yaml. The default is 256MB, which matches the default value of native_transport_max_frame_size_in_mb. SSTables will be considered corrupt if they contain values whose size exceeds this limit. See CASSANDRA-9530 for more details.
Cassandra 3.6 changes
-
JMX connections can now use the same auth mechanisms as CQL clients. New options in cassandra-env.(sh|ps1) enable JMX authentication and authorization to be delegated to the IAuthenticator and IAuthorizer configured in cassandra.yaml. The default settings still only expose JMX locally, and use the JVM’s own security mechanisms when remote connections are permitted. For more details on how to enable the new options, see the comments in
cassandra-env.sh
. A new class of IResource, JMXResource, is provided for the purposes of GRANT/REVOKE via CQL. See CASSANDRA-10091 for more details. Also, directly setting JMX remote port via the com.sun.management.jmxremote.port system property at startup is deprecated. See CASSANDRA-11725 for more details. -
JSON timestamps are now in UTC and contain the timezone information, see CASSANDRA-11137 for more details.
-
Collision checks are performed when joining the token ring, regardless of whether the node should bootstrap. Additionally, replace_address can legitimately be used without bootstrapping to help with recovery of nodes with partially failed disks. See CASSANDRA-10134 for more details.
-
Key cache will only hold indexed entries up to the size configured by column_index_cache_size_in_kb in cassandra.yaml in memory. Larger indexed entries will never go into memory. See CASSANDRA-11206 for more details.
-
For tables having a default_time_to_live specifying a TTL of 0 will remove the TTL from the inserted or updated values.
-
Startup is now aborted if corrupted transaction log files are found. The details of the affected log files are now logged, allowing the operator to decide how to resolve the situation.
-
Filtering expressions are made more pluggable and can be added programatically via a QueryHandler implementation. See CASSANDRA-11295 for more details.
Cassandra 3.4 changes
-
Internal authentication now supports caching of encrypted credentials. Reference cassandra.yaml:credentials_validity_in_ms
-
Remote configuration of auth caches via JMX can be disabled using the the system property cassandra.disable_auth_caches_remote_configuration
-
sstabledump tool is added to be 3.0 version of former sstable2json. The tool only supports v3.0+ SSTables. See tool’s help for more detail.
-
The mbean interfaces org.apache.cassandra.auth.PermissionsCacheMBean and org.apache.cassandra.auth.RolesCacheMBean are deprecated in favor of org.apache.cassandra.auth.AuthCacheMBean. This generalized interface is common across all caches in the auth subsystem. The specific mbean interfaces for each individual cache will be removed in a subsequent major version.
Cassandra 3.2 changes
-
We now make sure that a token does not exist in several data directories. This means that we run one compaction strategy per data_file_directory and we use one thread per directory to flush. Use nodetool relocatesstables to make sure your tokens are in the correct place, or just wait and compaction will handle it. See CASSANDRA-6696 for more details.
-
bound maximum in-flight commit log replay mutation bytes to 64 megabytes tunable via cassandra.commitlog_max_outstanding_replay_bytes
-
Support for type casting has been added to the selection clause.
-
Hinted handoff now supports compression. Reference cassandra.yaml:hints_compression.
Hints compression is currently disabled by default.
-
The Thrift API is deprecated and will be removed in Cassandra 4.0.
Cassandra 3.2 upgrade considerations
-
The compression ratio metrics computation has been modified to be more accurate.
-
Running Cassandra as root is prevented by default.
-
JVM options are moved from cassandra-env.(sh|ps1) to jvm.options.
Cassandra 3.1 upgrade considerations
-
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).