diff --git a/_posts/release/2025-04-30-accumulo-4.0.0.md b/_posts/release/2025-04-30-accumulo-4.0.0.md new file mode 100644 index 000000000..cb9d6eac1 --- /dev/null +++ b/_posts/release/2025-04-30-accumulo-4.0.0.md @@ -0,0 +1,66 @@ +--- +title: Apache Accumulo 4.0.0 +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. Not contained in the blog post are the changes to tablet +[merging][merge], specifically the ability to automatically merge +tablets. + +## Notable Changes + +* Accumulo 4.0.0 requires a Java 17 runtime. + +* 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, etc.) have been moved into the Manager. TabletServers no longer + perform major compactions making Compactor processes mandatory (ScanServers remain an optional + feature). + +* 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. + +## API Changes + +{% capture api_changes %}{% include_relative 4_0_api_changes.md %}{% endcapture %} +{{ api_changes | markdownify }} + +## 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 diff --git a/_posts/release/4_0_api_changes.md b/_posts/release/4_0_api_changes.md new file mode 100644 index 000000000..9a169ba8d --- /dev/null +++ b/_posts/release/4_0_api_changes.md @@ -0,0 +1,142 @@ +|CHANGE|SEVERITY|OLD|NEW| +|---|---|---|---| +|Abstract method was added.|SOURCE: BREAKING, BINARY: BREAKING|none|method org.apache.accumulo.core.client.admin.servers.ServerId org.apache.accumulo.core.client.admin.ActiveCompaction::getServerId()| +|Abstract method was added.|SOURCE: BREAKING, BINARY: BREAKING|none|method org.apache.accumulo.core.client.admin.servers.ServerId org.apache.accumulo.core.client.admin.ActiveScan::getServerId()| +|A default method has been added to the interface.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method java.util.stream.Stream org.apache.accumulo.core.client.admin.TableOperations::getTabletInformation(java.lang.String, org.apache.accumulo.core.data.Range) throws org.apache.accumulo.core.client.TableNotFoundException| +|A default method has been added to the interface.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.client.admin.compaction.CompactableFile org.apache.accumulo.core.client.admin.compaction.CompactableFile::create(java.net.URI, org.apache.accumulo.core.data.Range, long, long)| +|A default method has been added to the interface.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.client.PluginEnvironment.Configuration org.apache.accumulo.core.client.PluginEnvironment.Configuration::from(java.util.Map, boolean)| +|A default method has been added to the interface.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.client.admin.TableOperations::setTabletAvailability(java.lang.String, org.apache.accumulo.core.data.Range, org.apache.accumulo.core.client.admin.TabletAvailability) throws org.apache.accumulo.core.client.AccumuloSecurityException, org.apache.accumulo.core.client.AccumuloException, org.apache.accumulo.core.client.TableNotFoundException| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.core.client.admin.servers.ServerId| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.core.client.admin.TabletMergeability| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.core.client.admin.TabletMergeabilityInfo| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.core.client.InvalidTabletHostingRequestException| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.core.client.rfile.RFile.InputArguments.FencedPath| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.core.data.LoadPlan.TableSplits| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.core.iterators.SortedFilesIterator| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|class org.apache.accumulo.miniclusterImpl.ClusterServerConfiguration| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|enum org.apache.accumulo.core.client.admin.TabletAvailability| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|interface org.apache.accumulo.core.client.admin.TabletInformation| +|Class was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|interface org.apache.accumulo.core.data.LoadPlan.SplitResolver| +|Class was removed.|SOURCE: BREAKING, BINARY: BREAKING|class org.apache.accumulo.core.security.ColumnVisibility.NodeComparator|none| +|Class was removed.|SOURCE: BREAKING, BINARY: BREAKING|class org.apache.accumulo.core.security.ColumnVisibility.Node|none| +|Class was removed.|SOURCE: BREAKING, BINARY: BREAKING|class org.apache.accumulo.core.security.VisibilityEvaluator|none| +|Class was removed.|SOURCE: BREAKING, BINARY: BREAKING|enum org.apache.accumulo.core.security.ColumnVisibility.NodeType|none| +|Class was removed.|SOURCE: BREAKING, BINARY: BREAKING|interface org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionHost|none| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.client.admin.DiskUsage.usage|field org.apache.accumulo.core.client.admin.DiskUsage.usage| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.data.ConstraintViolationSummary.constrainClass|field org.apache.accumulo.core.data.ConstraintViolationSummary.constrainClass| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.data.ConstraintViolationSummary.violationCode|field org.apache.accumulo.core.data.ConstraintViolationSummary.violationCode| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.data.ConstraintViolationSummary.violationDescription|field org.apache.accumulo.core.data.ConstraintViolationSummary.violationDescription| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.iterators.user.IntersectingIterator.currentDocID|field org.apache.accumulo.core.iterators.user.IntersectingIterator.currentDocID| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.iterators.user.IntersectingIterator.nullText|field org.apache.accumulo.core.iterators.user.IntersectingIterator.nullText| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.iterators.user.IntersectingIterator.TermSource.iter|field org.apache.accumulo.core.iterators.user.IntersectingIterator.TermSource.iter| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.iterators.user.IntersectingIterator.TermSource.notFlag|field org.apache.accumulo.core.iterators.user.IntersectingIterator.TermSource.notFlag| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.iterators.user.IntersectingIterator.TermSource.term|field org.apache.accumulo.core.iterators.user.IntersectingIterator.TermSource.term| +|Field is now final.|SOURCE: POTENTIALLY_BREAKING, BINARY: POTENTIALLY_BREAKING|field org.apache.accumulo.core.iterators.user.TransformingIterator.keys|field org.apache.accumulo.core.iterators.user.TransformingIterator.keys| +|Field removed from class.|SOURCE: BREAKING, BINARY: BREAKING|field org.apache.accumulo.core.iterators.user.VisibilityFilter.ve|none| +|Field removed from class.|SOURCE: BREAKING, BINARY: BREAKING|field org.apache.accumulo.minicluster.ServerType.COMPACTION_COORDINATOR|none| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isFullMajorCompaction()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isFullMajorCompaction()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isRunningLowOnMemory()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isRunningLowOnMemory()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isSamplingEnabled()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isSamplingEnabled()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isUserCompaction()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isUserCompaction()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.client.PluginEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::getPluginEnv()|method org.apache.accumulo.core.client.PluginEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::getPluginEnv()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.client.sample.SamplerConfiguration org.apache.accumulo.core.iterators.IteratorEnvironment::getSamplerConfiguration()|method org.apache.accumulo.core.client.sample.SamplerConfiguration org.apache.accumulo.core.iterators.IteratorEnvironment::getSamplerConfiguration()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.data.TableId org.apache.accumulo.core.iterators.IteratorEnvironment::getTableId()|method org.apache.accumulo.core.data.TableId org.apache.accumulo.core.iterators.IteratorEnvironment::getTableId()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.iterators.IteratorEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::cloneWithSamplingEnabled()|method org.apache.accumulo.core.iterators.IteratorEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::cloneWithSamplingEnabled()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope org.apache.accumulo.core.iterators.IteratorEnvironment::getIteratorScope()|method org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope org.apache.accumulo.core.iterators.IteratorEnvironment::getIteratorScope()| +|Method now abstract|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.security.Authorizations org.apache.accumulo.core.iterators.IteratorEnvironment::getAuthorizations()|method org.apache.accumulo.core.security.Authorizations org.apache.accumulo.core.iterators.IteratorEnvironment::getAuthorizations()| +|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[])].|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: NON_BREAKING, BINARY: NON_BREAKING|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.core.client.rfile.RFile.ScannerOptions org.apache.accumulo.core.client.rfile.RFile.InputArguments::from(org.apache.accumulo.core.client.rfile.RFileSource[])| +|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[])].|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|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 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[])].|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: NON_BREAKING, BINARY: NON_BREAKING|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(java.lang.String[])| +|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[])].|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: NON_BREAKING, BINARY: NON_BREAKING|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.apache.accumulo.core.client.rfile.RFile.SummaryInputArguments::from(org.apache.accumulo.core.client.rfile.RFileSource[])| +|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[])].|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: NON_BREAKING, BINARY: NON_BREAKING|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 org.apache.accumulo.core.client.rfile.RFile.SummaryInputArguments::from(java.lang.String[])| +|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].|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: NON_BREAKING, BINARY: NON_BREAKING|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 java.io.IOException| +|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].|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: NON_BREAKING, BINARY: NON_BREAKING|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.IOException| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method java.lang.Class org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::getServerClass(org.apache.accumulo.minicluster.ServerType)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method java.lang.String org.apache.accumulo.core.data.LoadPlan::toJson()| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method java.util.List org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::getCompactors(java.lang.String)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method java.util.List org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::getTabletServers(java.lang.String)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method java.util.Set org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::getProcesses(org.apache.accumulo.minicluster.ServerType)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method java.util.SortedMap org.apache.accumulo.core.client.admin.NewTableConfiguration::getSplitsMap()| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.access.Authorizations org.apache.accumulo.core.security.Authorizations::toAccessAuthorizations()| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.client.admin.NewTableConfiguration org.apache.accumulo.core.client.admin.NewTableConfiguration::withInitialTabletAvailability(org.apache.accumulo.core.client.admin.TabletAvailability)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.client.admin.NewTableConfiguration org.apache.accumulo.core.client.admin.NewTableConfiguration::withSplits(java.util.SortedMap)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.client.admin.TabletAvailability org.apache.accumulo.core.client.admin.NewTableConfiguration::getInitialTabletAvailability()| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.ArrayByteSequence org.apache.accumulo.core.data.Key::getColumnFamilyData(org.apache.accumulo.core.data.ArrayByteSequence)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.ArrayByteSequence org.apache.accumulo.core.data.Key::getColumnQualifierData(org.apache.accumulo.core.data.ArrayByteSequence)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.ArrayByteSequence org.apache.accumulo.core.data.Key::getColumnVisibilityData(org.apache.accumulo.core.data.ArrayByteSequence)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.ArrayByteSequence org.apache.accumulo.core.data.Key::getRowData(org.apache.accumulo.core.data.ArrayByteSequence)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.Condition org.apache.accumulo.core.data.Condition::setValue(org.apache.accumulo.core.data.Value)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.LoadPlan org.apache.accumulo.core.client.rfile.RFileWriter::getLoadPlan(java.lang.String)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.LoadPlan org.apache.accumulo.core.data.LoadPlan::compute(java.net.URI, java.util.Map, org.apache.accumulo.core.data.LoadPlan.SplitResolver) throws java.io.IOException| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.LoadPlan org.apache.accumulo.core.data.LoadPlan::compute(java.net.URI, org.apache.accumulo.core.data.LoadPlan.SplitResolver) throws java.io.IOException| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.LoadPlan org.apache.accumulo.core.data.LoadPlan::fromJson(java.lang.String)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.Range org.apache.accumulo.core.client.rfile.RFileSource::getRange()| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.miniclusterImpl.ClusterServerConfiguration org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::getClusterServerConfiguration()| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::setServerClass(org.apache.accumulo.minicluster.ServerType, java.lang.Class)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.client.rfile.RFileSource::(java.io.InputStream, long, org.apache.accumulo.core.data.Range)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.data.ArrayByteSequence::reset(byte[], int, int)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.data.Key::(org.apache.accumulo.core.data.ByteSequence, org.apache.accumulo.core.data.ByteSequence, org.apache.accumulo.core.data.ByteSequence, org.apache.accumulo.core.data.ByteSequence, long)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.iterators.user.GrepIterator::matchColumnFamily(org.apache.accumulo.core.client.IteratorSetting, boolean)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.iterators.user.GrepIterator::matchColumnQualifier(org.apache.accumulo.core.client.IteratorSetting, boolean)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.iterators.user.GrepIterator::matchColumnVisibility(org.apache.accumulo.core.client.IteratorSetting, boolean)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.iterators.user.GrepIterator::matchRow(org.apache.accumulo.core.client.IteratorSetting, boolean)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.iterators.user.GrepIterator::matchValue(org.apache.accumulo.core.client.IteratorSetting, boolean)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.security.ColumnVisibility::(org.apache.accumulo.access.AccessExpression)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.security.VisibilityParseException::(org.apache.accumulo.access.InvalidAccessExpressionException)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::refreshProcesses(org.apache.accumulo.minicluster.ServerType)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::start(org.apache.accumulo.minicluster.ServerType, java.util.Map, int, java.lang.Class) throws java.io.IOException| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::stopCompactorGroup(java.lang.String)| +|Method was added.|SOURCE: NON_BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::stopTabletServerGroup(java.lang.String)| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method java.util.List org.apache.accumulo.core.client.admin.InstanceOperations::getActiveCompactions(java.util.Collection) throws org.apache.accumulo.core.client.AccumuloException, org.apache.accumulo.core.client.AccumuloSecurityException| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method java.util.List org.apache.accumulo.core.client.admin.InstanceOperations::getActiveScans(java.util.Collection) throws org.apache.accumulo.core.client.AccumuloException, org.apache.accumulo.core.client.AccumuloSecurityException| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method java.util.Map 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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method java.util.Set org.apache.accumulo.core.client.admin.InstanceOperations::getCompactors()| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method java.util.Set org.apache.accumulo.core.client.admin.compaction.CompactionConfigurer.InputParameters::getSelectedFiles()| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method java.util.Set org.apache.accumulo.core.client.admin.InstanceOperations::getServers(org.apache.accumulo.core.client.admin.servers.ServerId.Type)| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method java.util.Set org.apache.accumulo.core.client.admin.InstanceOperations::getServers(org.apache.accumulo.core.client.admin.servers.ServerId.Type, java.util.function.Predicate, java.util.function.BiPredicate)| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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, java.lang.String, java.lang.String, int)| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.client.rfile.RFile.WriterOptions org.apache.accumulo.core.client.rfile.RFile.WriterOptions::withSplitResolver(org.apache.accumulo.core.data.LoadPlan.SplitResolver)| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method org.apache.accumulo.core.data.Range org.apache.accumulo.core.client.admin.compaction.CompactableFile::getRange()| +|Method was added to an interface.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|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.|SEMANTIC: POTENTIALLY_BREAKING, SOURCE: BREAKING, BINARY: NON_BREAKING|none|method void org.apache.accumulo.core.client.admin.TableOperations::putSplits(java.lang.String, java.util.SortedMap) throws org.apache.accumulo.core.client.TableNotFoundException, org.apache.accumulo.core.client.AccumuloException, org.apache.accumulo.core.client.AccumuloSecurityException| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method byte[] org.apache.accumulo.core.security.ColumnVisibility::flatten()|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method byte[] org.apache.accumulo.core.security.ColumnVisibility::quote(byte[])|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method int org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::getNumCompactors()|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method int org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::getNumScanServers()|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method int org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::getNumTservers()|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method int org.apache.accumulo.minicluster.MiniAccumuloConfig::getNumTservers()|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method java.lang.String org.apache.accumulo.core.security.ColumnVisibility::quote(java.lang.String)|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.client.admin.ActiveCompaction.CompactionHost org.apache.accumulo.core.client.admin.ActiveCompaction::getHost()|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.security.ColumnVisibility.Node org.apache.accumulo.core.security.ColumnVisibility::getParseTree()|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.security.ColumnVisibility.Node org.apache.accumulo.core.security.ColumnVisibility::normalize(org.apache.accumulo.core.security.ColumnVisibility.Node, byte[])|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.security.ColumnVisibility.Node org.apache.accumulo.core.security.ColumnVisibility::normalize(org.apache.accumulo.core.security.ColumnVisibility.Node, byte[], org.apache.accumulo.core.security.ColumnVisibility.NodeComparator)|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::setNumScanServers(int)|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::setNumTservers(int)|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.minicluster.MiniAccumuloConfig org.apache.accumulo.minicluster.MiniAccumuloConfig::setNumScanServers(int)|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.minicluster.MiniAccumuloConfig org.apache.accumulo.minicluster.MiniAccumuloConfig::setNumTservers(int)|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.cluster.ClusterControl::startCompactors(java.lang.Class, int, java.lang.String) throws java.io.IOException|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.cluster.ClusterControl::startCoordinator(java.lang.Class) throws java.io.IOException|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.cluster.standalone.StandaloneClusterControl::startCompactors(java.lang.Class, int, java.lang.String) throws java.io.IOException|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.cluster.standalone.StandaloneClusterControl::startCoordinator(java.lang.Class) throws java.io.IOException|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.core.security.ColumnVisibility::stringify(org.apache.accumulo.core.security.ColumnVisibility.Node, byte[], java.lang.StringBuilder)|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::startCompactors(java.lang.Class, int, java.lang.String) throws java.io.IOException|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.miniclusterImpl.MiniAccumuloClusterControl::startCoordinator(java.lang.Class) throws java.io.IOException|none| +|Method was removed.|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl::setNumCompactors(int)|none| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isFullMajorCompaction()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isFullMajorCompaction()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isRunningLowOnMemory()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isRunningLowOnMemory()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isSamplingEnabled()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isSamplingEnabled()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isUserCompaction()|method boolean org.apache.accumulo.core.iterators.IteratorEnvironment::isUserCompaction()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.client.PluginEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::getPluginEnv()|method org.apache.accumulo.core.client.PluginEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::getPluginEnv()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.client.sample.SamplerConfiguration org.apache.accumulo.core.iterators.IteratorEnvironment::getSamplerConfiguration()|method org.apache.accumulo.core.client.sample.SamplerConfiguration org.apache.accumulo.core.iterators.IteratorEnvironment::getSamplerConfiguration()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.data.TableId org.apache.accumulo.core.iterators.IteratorEnvironment::getTableId()|method org.apache.accumulo.core.data.TableId org.apache.accumulo.core.iterators.IteratorEnvironment::getTableId()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.iterators.IteratorEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::cloneWithSamplingEnabled()|method org.apache.accumulo.core.iterators.IteratorEnvironment org.apache.accumulo.core.iterators.IteratorEnvironment::cloneWithSamplingEnabled()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope org.apache.accumulo.core.iterators.IteratorEnvironment::getIteratorScope()|method org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope org.apache.accumulo.core.iterators.IteratorEnvironment::getIteratorScope()| +|The interface no longer has the default implementation of the method.|SOURCE: BREAKING, BINARY: BREAKING|method org.apache.accumulo.core.security.Authorizations org.apache.accumulo.core.iterators.IteratorEnvironment::getAuthorizations()|method org.apache.accumulo.core.security.Authorizations org.apache.accumulo.core.iterators.IteratorEnvironment::getAuthorizations()| +|The return type changed from 'org.apache.accumulo.core.clientImpl.TabletLocator' to 'org.apache.accumulo.core.clientImpl.ClientTabletCache'.|SOURCE: POTENTIALLY_BREAKING, BINARY: BREAKING|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.InputConfigurator::getTabletLocator(java.lang.Class, org.apache.hadoop.conf.Configuration, org.apache.accumulo.core.data.TableId)| +|visibility reduced|SOURCE: BREAKING, BINARY: BREAKING|method void org.apache.accumulo.core.client.security.tokens.CredentialProviderToken::setWithCredentialProviders(java.lang.String, java.lang.String) throws java.io.IOException|method void org.apache.accumulo.core.client.security.tokens.CredentialProviderToken::setWithCredentialProviders(java.lang.String, java.lang.String) throws java.io.IOException|