This is an automated email from the ASF dual-hosted git repository.

dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-website.git


The following commit(s) were added to refs/heads/main by this push:
     new 7802de56a Started draft 4.0.0 release notes. Added table of API 
changes. (#461)
7802de56a is described below

commit 7802de56a99ff7d47b7c1ae50568aa2980da9b33
Author: Dave Marion <[email protected]>
AuthorDate: Tue Aug 25 16:51:59 2026 -0400

    Started draft 4.0.0 release notes. Added table of API changes. (#461)
---
 .gitignore                                         |   2 +
 _posts/release/2026-08-24-accumulo-4.0.0-alpha1.md | 250 +++++++++++++++++++++
 2 files changed, 252 insertions(+)

diff --git a/.gitignore b/.gitignore
index 47aab836c..fe90b3b19 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,5 @@
 /.idea
 /*.iml
 /.bundle/
+.project
+.settings/
diff --git a/_posts/release/2026-08-24-accumulo-4.0.0-alpha1.md 
b/_posts/release/2026-08-24-accumulo-4.0.0-alpha1.md
new file mode 100644
index 000000000..b62473d7e
--- /dev/null
+++ b/_posts/release/2026-08-24-accumulo-4.0.0-alpha1.md
@@ -0,0 +1,250 @@
+---
+title: Apache Accumulo 4.0.0 Alpha 1
+sortableversion: '04.00.00'
+draft: true
+---
+## About
+
+Apache Accumulo 4.0.0 is a non-LTM major version release that contains
+a large number of internal changes that allow a lot of flexibility in
+the way that Accumulo is deployed with a small number of API changes.
+A high level overview of some of the changes are described in [this][blog]
+blog post.
+
+## Notable Changes
+
+* Accumulo 4.0.0 requires Java 21 for compilation and Java 17 for runtime.
+
+* Bulk Import V1 has been removed. Users will need to migrate to Bulk Import 
V2.
+
+* Tablet merges no longer require a chop compaction on the participating 
files. To facilitate
+  this the file entry in the tablet metadata now includes the range for the 
tablet data in
+  the file.
+
+* FaTE locks include tablet ranges where possible to allow for concurrent FaTE 
operations
+  on non-overlapping tablet ranges.
+
+* The CompactionCoordinator process no longer exists, its functionality was 
moved into the Manager.
+
+* Non-system tablets will be optionally hosted by default. Operations 
requiring a tablet to be
+  hosted (live ingest and immediate consistency scans) will instruct the 
Manager to temporarily
+  assign the Tablet. Users can change the default hosting semantics for 
Tablets when creating
+  the table, using the TableOperations API, or the appropriate command in the 
Shell. Tablets
+  that are temporarily assigned are unloaded according to the logic in the 
OnDemandTabletUnloader
+  plugin being used, specified by the property 
'tserver.ondemand.tablet.unloader'. The default
+  implementation will unload tablets that have not been used in 10 minutes, 
which can be changed
+  by the property 'tserver.ondemand.tablet.unloader.interval'.
+
+* Considering TabletServers optionally host Tablets, all Tablet management 
functions (e.g. merge,
+  split, compaction initiation, bulk import, etc.) have been moved into the 
Manager. TabletServers no longer
+  perform major compactions making Compactor processes mandatory (ScanServers 
remain an optional
+  feature).
+
+* Tablets in a table can now be automatically merged. There is a manager 
property to control the
+  interval at which tablets are checked and a table property to control the 
threshold for an
+  automatic merge. Tablet mergeability can be specified at table creation time 
or using
+  `TableOperations.putSplits`. The upgrade process sets the tablet 
mergeability to never for
+  all existing tablets to preserve any user created split points. Tablet 
mergeability can be
+  set when adding new splits and will be set to always when the split is 
created by the system
+  based on user settings. See [merging][merge] for more information.
+
+* Split and Merge operations, which are now just metadata operations, can be 
much faster for tablets
+  that are not hosted. For tablets that are hosted in a TabletServer, they are 
temporarily unloaded
+  before the operation executes.
+
+* Multiple active Manager processes are supported. One active Manager is 
considered the "primary"
+  Manager and the others are considered "assistant" Managers. Clients will 
connect to the primary
+  Manager for Thrift operations requiring the Manager. If the primary Manager 
process dies then one
+  of the assistant Managers will become the Primary. The assistant Managers 
participate in
+  processing FaTE transactions, but not tablet management or coordinating 
major compactions.
+
+* New table property `table.compaction.minor.age` will cause a minor 
compaction to be
+  initiated when the oldest key-value in a Tablets' in-memory-map exceeds the 
value. This could
+  be useful when using Scan Servers in conjunction with the Tablet Metadata 
expiration property.
+
+* The HostRegexTableLoadBalancer has been deprecated. Similar functionality 
can be achieved using
+  the TableLoadBalancer and setting the property 
`table.custom.assignment.group` on a table
+  that references a set of Tablet Servers using the same resource group name.
+
+* The Monitor has been re-worked to mostly use the metrics emitted by the 
various server processes.
+  While the Monitor server does make some RPC calls, metrics will need to be 
enabled using the
+  property `general.micrometer.enabled` on all server processes for the 
Monitor to work properly.
+  Endpoints for retrieving the underlying data from the Monitor server in XML 
or JSON format have
+  been removed. Users are encouraged to set up their own metric collection 
system for gathering
+  and visualizing metric data.
+  
+* Log recovery work may now be performed in Compactor, Scan Server, and Tablet 
Server processes.
+
+* User FaTE transactions are now stored in a table in the system namespace. 
System FaTE transactions
+  remain stored in ZooKeeper.
+
+* Scan Server file references have been moved out of the metadata table and 
into their own table
+  in the system namespace.
+
+* A Resource Group configuration layer has been added that allows the user to 
override system-level
+  properties for resource group processes.
+
+* Table configuration properties are now only allowed in the Namespace and 
Table configuration layers.
+
+* The command line utilities have been updated. Run `accumulo --help` to see 
the changes. A bash
+  completion script can be generated using the command `accumulo conf 
create-autocomplete-script`.
+
+* The number of threads used to process FaTE transactions can be configured by 
FaTE transaction type
+  for both user and system FaTE transactions.
+
+
+## API Changes (from 2.1.6)
+
+<details markdown="1">
+  <summary>Click to see API changes</summary>
+
+### Additions
+
+|Change|Object|
+|------|------|
+|Abstract method was added.|method long 
org.apache.accumulo.core.client.admin.ActiveCompaction::getPausedCount()|
+|Abstract method was added.|method 
org.apache.accumulo.core.client.admin.servers.ServerId 
org.apache.accumulo.core.client.admin.ActiveCompaction::getServerId()|
+|Abstract method was added.|method 
org.apache.accumulo.core.client.admin.servers.ServerId 
org.apache.accumulo.core.client.admin.ActiveScan::getServerId()|
+|Method was added to an interface.|method boolean 
org.apache.accumulo.core.iterators.IteratorEnvironment::isRunningLowOnMemory()|
+|Method was added to an interface.|method java.lang.String 
org.apache.accumulo.core.client.admin.TableOperations::getNamespace(java.lang.String)|
+|Method was added to an interface.|method java.time.Duration 
org.apache.accumulo.core.client.admin.InstanceOperations::getManagerTime() 
throws org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+|Method was added to an interface.|method 
java.util.List<org.apache.accumulo.core.client.admin.ActiveCompaction> 
org.apache.accumulo.core.client.admin.InstanceOperations::getActiveCompactions(java.util.Collection<org.apache.accumulo.core.client.admin.servers.ServerId>)
 throws org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+|Method was added to an interface.|method 
java.util.List<org.apache.accumulo.core.client.admin.ActiveScan> 
org.apache.accumulo.core.client.admin.InstanceOperations::getActiveScans(java.util.Collection<org.apache.accumulo.core.client.admin.servers.ServerId>)
 throws org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+|Method was added to an interface.|method java.util.Map<java.lang.String, 
java.lang.String> 
org.apache.accumulo.core.client.admin.InstanceOperations::getSystemProperties() 
throws org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+|Method was added to an interface.|method 
java.util.Set<org.apache.accumulo.core.client.admin.compaction.CompactableFile> 
org.apache.accumulo.core.client.admin.compaction.CompactionConfigurer.InputParameters::getSelectedFiles()|
+|Method was added to an interface.|method 
java.util.Set<org.apache.accumulo.core.client.admin.servers.ServerId> 
org.apache.accumulo.core.client.admin.InstanceOperations::getServers(org.apache.accumulo.core.client.admin.servers.ServerId.Type)|
+|Method was added to an interface.|method 
java.util.Set<org.apache.accumulo.core.client.admin.servers.ServerId> 
org.apache.accumulo.core.client.admin.InstanceOperations::getServers(org.apache.accumulo.core.client.admin.servers.ServerId.Type,
 java.util.function.Predicate<org.apache.accumulo.core.data.ResourceGroupId>, 
java.util.function.BiPredicate<java.lang.String, java.lang.Integer>)|
+|Method was added to an interface.|method 
org.apache.accumulo.core.client.admin.ResourceGroupOperations 
org.apache.accumulo.core.client.AccumuloClient::resourceGroupOperations()|
+|Method was added to an interface.|method 
org.apache.accumulo.core.client.admin.servers.ServerId 
org.apache.accumulo.core.client.admin.InstanceOperations::getServer(org.apache.accumulo.core.client.admin.servers.ServerId.Type,
 org.apache.accumulo.core.data.ResourceGroupId, java.lang.String, int)|
+|Method was added to an interface.|method 
org.apache.accumulo.core.client.rfile.RFile.ScannerFSOptions 
org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(org.apache.accumulo.core.client.rfile.RFile.InputArguments.FencedPath[])|
+|Method was added to an interface.|method 
org.apache.accumulo.core.data.KeyBuilder.Build 
org.apache.accumulo.core.data.KeyBuilder.ColumnVisibilityStep::visibility(org.apache.accumulo.core.data.ByteSequence)|
+|Method was added to an interface.|method 
org.apache.accumulo.core.data.KeyBuilder.ColumnFamilyStep 
org.apache.accumulo.core.data.KeyBuilder.RowStep::row(org.apache.accumulo.core.data.ByteSequence)|
+|Method was added to an interface.|method 
org.apache.accumulo.core.data.KeyBuilder.ColumnQualifierStep 
org.apache.accumulo.core.data.KeyBuilder.ColumnFamilyStep::family(org.apache.accumulo.core.data.ByteSequence)|
+|Method was added to an interface.|method 
org.apache.accumulo.core.data.KeyBuilder.ColumnVisibilityStep 
org.apache.accumulo.core.data.KeyBuilder.ColumnQualifierStep::qualifier(org.apache.accumulo.core.data.ByteSequence)|
+|Method was added to an interface.|method 
org.apache.accumulo.core.data.Mutation.TimestampOptions 
org.apache.accumulo.core.data.Mutation.FamilyOptions::keyColumns(org.apache.accumulo.core.data.Key)|
+|Method was added to an interface.|method 
org.apache.accumulo.core.data.RowRange 
org.apache.accumulo.core.client.admin.compaction.CompactableFile::getRange()|
+|Method was added to an interface.|method 
org.apache.accumulo.core.data.TabletId 
org.apache.accumulo.core.client.admin.compaction.CompactionSelector.SelectionParameters::getTabletId()|
+|Method was added to an interface.|method org.apache.hadoop.io.Text 
org.apache.accumulo.core.client.admin.TableOperations::getMaxRow(java.lang.String,
 org.apache.accumulo.core.security.Authorizations, 
org.apache.accumulo.core.data.RowRange) throws 
org.apache.accumulo.core.client.TableNotFoundException, 
org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+|Method was added to an interface.|method void 
org.apache.accumulo.core.client.admin.InstanceOperations::ping(org.apache.accumulo.core.client.admin.servers.ServerId)
 throws org.apache.accumulo.core.client.AccumuloException|
+|Method was added to an interface.|method void 
org.apache.accumulo.core.client.admin.TableOperations::putSplits(java.lang.String,
 java.util.SortedMap<org.apache.hadoop.io.Text, 
org.apache.accumulo.core.client.admin.TabletMergeability>) throws 
org.apache.accumulo.core.client.TableNotFoundException, 
org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+
+
+### Removals
+
+|Change|Object|
+|------|------|
+|Class was removed.|class 
org.apache.accumulo.core.client.admin.CompactionStrategyConfig|
+|Class was removed.|class org.apache.accumulo.core.client.ClientConfiguration|
+|Class was removed.|class org.apache.accumulo.core.client.Connector|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.AbstractInputFormat<K, V>|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.AccumuloFileOutputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.AccumuloInputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.AccumuloMultiTableInputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.AccumuloOutputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.AccumuloRowInputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.InputFormatBase<K, V>|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapred.RangeInputSplit|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.AbstractInputFormat<K, V>|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.AccumuloFileOutputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.AccumuloInputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.AccumuloMultiTableInputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.AccumuloOutputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.AccumuloRowInputFormat|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.InputFormatBase<K, V>|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.InputTableConfig|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.lib.partition.KeyRangePartitioner|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.lib.partition.RangePartitioner|
+|Class was removed.|class 
org.apache.accumulo.core.client.mapreduce.RangeInputSplit|
+|Class was removed.|class 
org.apache.accumulo.core.client.replication.PeerExistsException|
+|Class was removed.|class 
org.apache.accumulo.core.client.replication.PeerNotFoundException|
+|Class was removed.|class org.apache.accumulo.core.client.ZooKeeperInstance|
+|Class was removed.|class org.apache.accumulo.minicluster.MiniAccumuloInstance|
+|Class was removed.|interface 
org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionHost|
+|Class was removed.|interface 
org.apache.accumulo.core.client.admin.ReplicationOperations|
+|Class was removed.|interface org.apache.accumulo.core.client.Instance|
+|Method was removed.|method boolean 
org.apache.accumulo.core.client.sample.AbstractHashSampler::isValidOption(java.lang.String)|
+|Method was removed.|method int 
org.apache.accumulo.minicluster.MiniAccumuloConfig::getNumTservers()|
+|Method was removed.|method java.lang.String 
org.apache.accumulo.core.client.admin.InstanceOperations::getInstanceID()|
+|Method was removed.|method java.util.Collection<org.apache.hadoop.io.Text> 
org.apache.accumulo.core.client.admin.TableOperations::getSplits(java.lang.String,
 int) throws org.apache.accumulo.core.client.TableNotFoundException|
+|Method was removed.|method java.util.Collection<org.apache.hadoop.io.Text> 
org.apache.accumulo.core.client.admin.TableOperations::getSplits(java.lang.String)
 throws org.apache.accumulo.core.client.TableNotFoundException|
+|Method was removed.|method java.util.Set<java.lang.String> 
org.apache.accumulo.core.data.Mutation::getReplicationSources()|
+|Method was removed.|method 
org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionHost 
org.apache.accumulo.core.client.admin.ActiveCompaction::getHost()|
+|Method was removed.|method 
org.apache.accumulo.core.client.admin.CompactionConfig 
org.apache.accumulo.core.client.admin.CompactionConfig::setCompactionStrategy(org.apache.accumulo.core.client.admin.CompactionStrategyConfig)|
+|Method was removed.|method 
org.apache.accumulo.core.client.admin.CompactionStrategyConfig 
org.apache.accumulo.core.client.admin.CompactionConfig::getCompactionStrategy()|
+|Method was removed.|method 
org.apache.accumulo.core.client.admin.NewTableConfiguration 
org.apache.accumulo.core.client.admin.NewTableConfiguration::withoutDefaultIterators()|
+|Method was removed.|method 
org.apache.accumulo.core.client.admin.ReplicationOperations 
org.apache.accumulo.core.client.AccumuloClient::replicationOperations()|
+|Method was removed.|method 
org.apache.accumulo.core.client.ClientConfiguration 
org.apache.accumulo.minicluster.MiniAccumuloCluster::getClientConfig()|
+|Method was removed.|method org.apache.accumulo.core.client.Connector 
org.apache.accumulo.minicluster.MiniAccumuloCluster::getConnector(java.lang.String,
 java.lang.String) throws org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+|Method was removed.|method 
org.apache.accumulo.core.conf.AccumuloConfiguration 
org.apache.accumulo.core.iterators.IteratorEnvironment::getConfig()|
+|Method was removed.|method 
org.apache.accumulo.core.iterators.SortedKeyValueIterator<org.apache.accumulo.core.data.Key,
 org.apache.accumulo.core.data.Value> 
org.apache.accumulo.core.iterators.IteratorEnvironment::reserveMapFileReader(java.lang.String)
 throws java.io.IOException|
+|Method was removed.|method 
org.apache.accumulo.core.spi.common.ServiceEnvironment 
org.apache.accumulo.core.iterators.IteratorEnvironment::getServiceEnv()|
+|Method was removed.|method org.apache.accumulo.minicluster.MiniAccumuloConfig 
org.apache.accumulo.minicluster.MiniAccumuloConfig::setNumScanServers(int)|
+|Method was removed.|method org.apache.accumulo.minicluster.MiniAccumuloConfig 
org.apache.accumulo.minicluster.MiniAccumuloConfig::setNumTservers(int)|
+|Method was removed.|method org.apache.hadoop.io.Text 
org.apache.accumulo.core.data.TabletId::getTableId()|
+|Method was removed.|method void 
org.apache.accumulo.core.client.admin.TableOperations::create(java.lang.String, 
boolean, org.apache.accumulo.core.client.admin.TimeType) throws 
org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException, 
org.apache.accumulo.core.client.TableExistsException|
+|Method was removed.|method void 
org.apache.accumulo.core.client.admin.TableOperations::create(java.lang.String, 
boolean) throws org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException, 
org.apache.accumulo.core.client.TableExistsException|
+|Method was removed.|method void 
org.apache.accumulo.core.client.admin.TableOperations::importDirectory(java.lang.String,
 java.lang.String, java.lang.String, boolean) throws 
org.apache.accumulo.core.client.TableNotFoundException, java.io.IOException, 
org.apache.accumulo.core.client.AccumuloException, 
org.apache.accumulo.core.client.AccumuloSecurityException|
+|Method was removed.|method void 
org.apache.accumulo.core.client.MutationsRejectedException::<init>(org.apache.accumulo.core.client.Instance,
 java.util.List<org.apache.accumulo.core.data.ConstraintViolationSummary>, 
java.util.Map<org.apache.accumulo.core.data.TabletId, 
java.util.Set<org.apache.accumulo.core.client.security.SecurityErrorCode>>, 
java.util.Collection<java.lang.String>, int, java.lang.Throwable)|
+|Method was removed.|method void 
org.apache.accumulo.core.client.NamespaceNotEmptyException::<init>(org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException)|
+|Method was removed.|method void 
org.apache.accumulo.core.client.TableOfflineException::<init>(org.apache.accumulo.core.client.Instance,
 java.lang.String)|
+|Method was removed.|method void 
org.apache.accumulo.core.data.ConditionalMutation::setReplicationSources(java.util.Set<java.lang.String>)|
+|Method was removed.|method void 
org.apache.accumulo.core.data.Mutation::addReplicationSource(java.lang.String)|
+|Method was removed.|method void 
org.apache.accumulo.core.data.Mutation::setReplicationSources(java.util.Set<java.lang.String>)|
+|Method was removed.|method void 
org.apache.accumulo.core.iterators.IteratorEnvironment::registerSideChannel(org.apache.accumulo.core.iterators.SortedKeyValueIterator<org.apache.accumulo.core.data.Key,
 org.apache.accumulo.core.data.Value>)|
+
+### Other
+
+|Change|Old|New|
+|------|---|---|
+|Method newly throws checked exceptions: 
java.lang.ReflectiveOperationException.|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String,
 java.lang.Class<T>) throws java.lang.Exception|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String,
 java.lang.Class<T>) throws java.lang.ReflectiveOperationException|
+|Method newly throws checked exceptions: 
java.lang.ReflectiveOperationException.|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId,
 java.lang.String, java.lang.Class<T>) throws java.lang.Exception|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId,
 java.lang.String, java.lang.Class<T>) throws 
java.lang.ReflectiveOperationException|
+|Method no longer throws checked exceptions: java.lang.Exception.|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String,
 java.lang.Class<T>) throws java.lang.Exception|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String,
 java.lang.Class<T>) throws java.lang.ReflectiveOperationException|
+|Method no longer throws checked exceptions: java.lang.Exception.|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId,
 java.lang.String, java.lang.Class<T>) throws java.lang.Exception|method <T> T 
org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId,
 java.lang.String, java.lang.Class<T>) throws 
java.lang.ReflectiveOperationException|
+|Method no longer throws checked exceptions: 
org.apache.accumulo.core.client.TableNotFoundException.|method 
org.apache.hadoop.io.Text 
org.apache.accumulo.core.client.admin.FindMax::findMax(org.apache.accumulo.core.client.Scanner,
 org.apache.hadoop.io.Text, boolean, org.apache.hadoop.io.Text, boolean) throws 
org.apache.accumulo.core.client.TableNotFoundException|method 
org.apache.hadoop.io.Text 
org.apache.accumulo.core.client.admin.FindMax::findMax(org.apache.accumulo.core.client.Scanner,
 [...]
+|Method only differs in the vararg type from some of its overloads: [method 
org.apache.accumulo.core.client.rfile.RFile.ScannerFSOptions 
org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(java.lang.String[]),
 method org.apache.accumulo.core.client.rfile.RFile.ScannerFSOptions 
org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(org.apache.accumulo.core.client.rfile.RFile.InputArguments.FencedPath[])].|method
 org.apache.accumulo.core.client.rfile.RFile.ScannerOpt [...]
+|Method only differs in the vararg type from some of its overloads: [method 
org.apache.accumulo.core.client.rfile.RFile.ScannerFSOptions 
org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(java.lang.String[]),
 method org.apache.accumulo.core.client.rfile.RFile.ScannerOptions 
org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(org.apache.accumulo.core.client.rfile.RFileSource[])].|none|method
 org.apache.accumulo.core.client.rfile.RFile.ScannerFSOptions org.apache [...]
+|Method only differs in the vararg type from some of its overloads: [method 
org.apache.accumulo.core.client.rfile.RFile.ScannerFSOptions 
org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(org.apache.accumulo.core.client.rfile.RFile.InputArguments.FencedPath[]),
 method org.apache.accumulo.core.client.rfile.RFile.ScannerOptions 
org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(org.apache.accumulo.core.client.rfile.RFileSource[])].|method
 org.apache.accumulo.cor [...]
+|Method only differs in the vararg type from some of its overloads: [method 
org.apache.accumulo.core.client.rfile.RFile.SummaryFSOptions 
org.apache.accumulo.core.client.rfile.RFile.SummaryInputArguments::from(java.lang.String[])].|method
 org.apache.accumulo.core.client.rfile.RFile.SummaryOptions 
org.apache.accumulo.core.client.rfile.RFile.SummaryInputArguments::from(org.apache.accumulo.core.client.rfile.RFileSource[])|method
 org.apache.accumulo.core.client.rfile.RFile.SummaryOptions org. [...]
+|Method only differs in the vararg type from some of its overloads: [method 
org.apache.accumulo.core.client.rfile.RFile.SummaryOptions 
org.apache.accumulo.core.client.rfile.RFile.SummaryInputArguments::from(org.apache.accumulo.core.client.rfile.RFileSource[])].|method
 org.apache.accumulo.core.client.rfile.RFile.SummaryFSOptions 
org.apache.accumulo.core.client.rfile.RFile.SummaryInputArguments::from(java.lang.String[])|method
 org.apache.accumulo.core.client.rfile.RFile.SummaryFSOptions or [...]
+|Method only differs in the vararg type from some of its overloads: [method 
void 
org.apache.accumulo.core.client.rfile.RFileWriter::startNewLocalityGroup(java.lang.String,
 byte[][]) throws java.io.IOException].|method void 
org.apache.accumulo.core.client.rfile.RFileWriter::startNewLocalityGroup(java.lang.String,
 java.lang.String[]) throws java.io.IOException|method void 
org.apache.accumulo.core.client.rfile.RFileWriter::startNewLocalityGroup(java.lang.String,
 java.lang.String[]) throws j [...]
+|Method only differs in the vararg type from some of its overloads: [method 
void 
org.apache.accumulo.core.client.rfile.RFileWriter::startNewLocalityGroup(java.lang.String,
 java.lang.String[]) throws java.io.IOException].|method void 
org.apache.accumulo.core.client.rfile.RFileWriter::startNewLocalityGroup(java.lang.String,
 byte[][]) throws java.io.IOException|method void 
org.apache.accumulo.core.client.rfile.RFileWriter::startNewLocalityGroup(java.lang.String,
 byte[][]) throws java.io.IOE [...]
+|The enum constant was defined on position 1 but is now on 0. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.minicluster.ServerType.MANAGER|field 
org.apache.accumulo.minicluster.ServerType.MANAGER|
+|The enum constant was defined on position 2 but is now on 1. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionType.MAJOR|field
 org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionType.MAJOR|
+|The enum constant was defined on position 2 but is now on 1. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.minicluster.ServerType.ZOOKEEPER|field 
org.apache.accumulo.minicluster.ServerType.ZOOKEEPER|
+|The enum constant was defined on position 3 but is now on 2. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionType.FULL|field
 org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionType.FULL|
+|The enum constant was defined on position 3 but is now on 2. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.minicluster.ServerType.TABLET_SERVER|field 
org.apache.accumulo.minicluster.ServerType.TABLET_SERVER|
+|The enum constant was defined on position 4 but is now on 3. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.minicluster.ServerType.GARBAGE_COLLECTOR|field 
org.apache.accumulo.minicluster.ServerType.GARBAGE_COLLECTOR|
+|The enum constant was defined on position 6 but is now on 4. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.minicluster.ServerType.COMPACTOR|field 
org.apache.accumulo.minicluster.ServerType.COMPACTOR|
+|The enum constant was defined on position 8 but is now on 5. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.minicluster.ServerType.MONITOR|field 
org.apache.accumulo.minicluster.ServerType.MONITOR|
+|The enum constant was defined on position 9 but is now on 6. The user code 
can break if it relies on the return value of the "ordinal()" method.|field 
org.apache.accumulo.minicluster.ServerType.SCAN_SERVER|field 
org.apache.accumulo.minicluster.ServerType.SCAN_SERVER|
+|The number of parameters of the method have changed.|method 
org.apache.hadoop.io.Text 
org.apache.accumulo.core.client.admin.FindMax::findMax(org.apache.accumulo.core.client.Scanner,
 org.apache.hadoop.io.Text, boolean, org.apache.hadoop.io.Text, boolean) throws 
org.apache.accumulo.core.client.TableNotFoundException|method 
org.apache.hadoop.io.Text 
org.apache.accumulo.core.client.admin.FindMax::findMax(org.apache.accumulo.core.client.Scanner,
 org.apache.accumulo.core.data.RowRange)|
+|The number of parameters of the method have changed.|method void 
org.apache.accumulo.core.client.TableDeletedException::<init>(java.lang.String, 
java.lang.Exception)|method void 
org.apache.accumulo.core.client.TableDeletedException::<init>(org.apache.accumulo.core.data.TableId)|
+|The number of parameters of the method have changed.|method void 
org.apache.accumulo.core.security.VisibilityParseException::<init>(java.lang.String,
 byte[], int)|method void 
org.apache.accumulo.core.security.VisibilityParseException::<init>(org.apache.accumulo.access.InvalidAccessExpressionException)|
+|The return type changed from 'java.lang.String' to  
'org.apache.accumulo.core.data.TableId'.|method java.lang.String 
org.apache.accumulo.core.client.TableDeletedException::getTableId()|method 
org.apache.accumulo.core.data.TableId 
org.apache.accumulo.core.client.TableDeletedException::getTableId()|
+|The return type changed from 
'org.apache.accumulo.core.clientImpl.TabletLocator' to  
'org.apache.accumulo.core.clientImpl.ClientTabletCache'.|method 
org.apache.accumulo.core.clientImpl.TabletLocator 
org.apache.accumulo.hadoopImpl.mapreduce.lib.InputConfigurator::getTabletLocator(java.lang.Class<?>,
 org.apache.hadoop.conf.Configuration, 
org.apache.accumulo.core.data.TableId)|method 
org.apache.accumulo.core.clientImpl.ClientTabletCache 
org.apache.accumulo.hadoopImpl.mapreduce.lib.InputCon [...]
+|Visibility was reduced from 'public' to 'private'.|class 
org.apache.accumulo.core.iterators.user.ColumnAgeOffFilter.TTLSet|class 
org.apache.accumulo.core.iterators.user.ColumnAgeOffFilter.TTLSet|
+
+</details>
+
+## Upgrading
+
+View the [Upgrading Accumulo documentation][upgrade] for guidance as
+the upgrade procedure has changed. Note that during the upgrade
+all user tablets will be set to have on-demand tablet availability.
+Users will need to change the tablet availability post-upgrade for
+tablets that they want always or never hosted on a tablet server.
+The upgrade process also sets the tablet mergeability to never for
+all existing tablets to preserve any user created split points.
+Tablet mergeability can be set when adding new splits and will be
+set to always when the split is created by the system based on user
+settings.
+
+## Useful Links
+
+* [All tickets related to this release][milestone]
+
+
+[blog]: /blog/2024/10/07/accumulo4-preview.html
+[merge]: /docs/4.x/administration/merging
+[upgrade]: /docs/4.x/administration/upgrading
+[milestone]: https://github.com/apache/accumulo/milestone/20

Reply via email to