From 25b2a3e761592cebbb8381751386fa1a42f0b470 Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Thu, 1 May 2025 17:54:34 +0000 Subject: [PATCH 1/5] Started draft 4.0.0 release notes. Added table of API changes. --- Gemfile.lock | 78 +++-------- _posts/release/2025-04-30-accumulo-4.0.0.md | 64 +++++++++ _posts/release/4_0_api_changes.md | 142 ++++++++++++++++++++ 3 files changed, 221 insertions(+), 63 deletions(-) create mode 100644 _posts/release/2025-04-30-accumulo-4.0.0.md create mode 100644 _posts/release/4_0_api_changes.md diff --git a/Gemfile.lock b/Gemfile.lock index 065b4cdd1..e0b9576da 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,17 +9,7 @@ GEM eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) - ffi (1.17.0) - ffi (1.17.0-aarch64-linux-gnu) - ffi (1.17.0-aarch64-linux-musl) - ffi (1.17.0-arm-linux-gnu) - ffi (1.17.0-arm-linux-musl) - ffi (1.17.0-arm64-darwin) - ffi (1.17.0-x86-linux-gnu) - ffi (1.17.0-x86-linux-musl) - ffi (1.17.0-x86_64-darwin) - ffi (1.17.0-x86_64-linux-gnu) - ffi (1.17.0-x86_64-linux-musl) + ffi (1.17.2) forwardable-extended (2.6.0) google-protobuf (3.25.5) google-protobuf (3.25.5-aarch64-linux) @@ -63,85 +53,47 @@ GEM mercenary (0.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (6.0.1) + public_suffix (5.1.1) + rake (13.2.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) rexml (3.3.9) rouge (4.5.1) safe_yaml (1.0.5) - sass-embedded (1.77.5-aarch64-linux-android) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-aarch64-linux-gnu) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-aarch64-linux-musl) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-aarch64-mingw-ucrt) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-arm-linux-androideabi) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-arm-linux-gnueabihf) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-arm-linux-musleabihf) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-arm64-darwin) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-riscv64-linux-android) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-riscv64-linux-gnu) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-riscv64-linux-musl) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86-cygwin) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86-linux-android) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86-linux-gnu) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86-linux-musl) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86-mingw-ucrt) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86_64-cygwin) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86_64-darwin) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86_64-linux-android) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86_64-linux-gnu) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.77.5-x86_64-linux-musl) - google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.63.6) + google-protobuf (~> 3.23) + rake (>= 13.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) unicode-display_width (2.6.0) webrick (1.9.1) PLATFORMS + aarch64-linux aarch64-linux aarch64-linux-android - aarch64-linux-gnu aarch64-linux-musl - aarch64-mingw-ucrt + aarch64-unknown + arm-linux + arm-linux arm-linux-androideabi - arm-linux-gnu - arm-linux-gnueabihf arm-linux-musl arm-linux-musleabihf arm64-darwin + riscv64-linux riscv64-linux-android - riscv64-linux-gnu riscv64-linux-musl x86-cygwin x86-linux + x86-linux x86-linux-android - x86-linux-gnu x86-linux-musl - x86-mingw-ucrt + x86-unknown x86_64-cygwin x86_64-darwin + x86_64-linux x86_64-linux-android - x86_64-linux-gnu x86_64-linux-musl DEPENDENCIES @@ -154,4 +106,4 @@ RUBY VERSION ruby 3.3.4p94 BUNDLED WITH - 2.5.22 + 2.4.10 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..fbe3ab3f8 --- /dev/null +++ b/_posts/release/2025-04-30-accumulo-4.0.0.md @@ -0,0 +1,64 @@ +--- +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 + +* 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| From 31116905c8f5e799ea6e9834dbd10f98a02f10db Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Thu, 1 May 2025 17:57:03 +0000 Subject: [PATCH 2/5] revert lock file --- Gemfile.lock | 78 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 15 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e0b9576da..065b4cdd1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,7 +9,17 @@ GEM eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) - ffi (1.17.2) + ffi (1.17.0) + ffi (1.17.0-aarch64-linux-gnu) + ffi (1.17.0-aarch64-linux-musl) + ffi (1.17.0-arm-linux-gnu) + ffi (1.17.0-arm-linux-musl) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86-linux-gnu) + ffi (1.17.0-x86-linux-musl) + ffi (1.17.0-x86_64-darwin) + ffi (1.17.0-x86_64-linux-gnu) + ffi (1.17.0-x86_64-linux-musl) forwardable-extended (2.6.0) google-protobuf (3.25.5) google-protobuf (3.25.5-aarch64-linux) @@ -53,47 +63,85 @@ GEM mercenary (0.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (5.1.1) - rake (13.2.1) + public_suffix (6.0.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) rexml (3.3.9) rouge (4.5.1) safe_yaml (1.0.5) - sass-embedded (1.63.6) - google-protobuf (~> 3.23) - rake (>= 13.0.0) + sass-embedded (1.77.5-aarch64-linux-android) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-aarch64-linux-gnu) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-aarch64-linux-musl) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-aarch64-mingw-ucrt) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-arm-linux-androideabi) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-arm-linux-gnueabihf) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-arm-linux-musleabihf) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-arm64-darwin) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-riscv64-linux-android) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-riscv64-linux-gnu) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-riscv64-linux-musl) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86-cygwin) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86-linux-android) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86-linux-gnu) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86-linux-musl) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86-mingw-ucrt) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-cygwin) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-darwin) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-linux-android) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-linux-gnu) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-linux-musl) + google-protobuf (>= 3.25, < 5.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) unicode-display_width (2.6.0) webrick (1.9.1) PLATFORMS - aarch64-linux aarch64-linux aarch64-linux-android + aarch64-linux-gnu aarch64-linux-musl - aarch64-unknown - arm-linux - arm-linux + aarch64-mingw-ucrt arm-linux-androideabi + arm-linux-gnu + arm-linux-gnueabihf arm-linux-musl arm-linux-musleabihf arm64-darwin - riscv64-linux riscv64-linux-android + riscv64-linux-gnu riscv64-linux-musl x86-cygwin x86-linux - x86-linux x86-linux-android + x86-linux-gnu x86-linux-musl - x86-unknown + x86-mingw-ucrt x86_64-cygwin x86_64-darwin - x86_64-linux x86_64-linux-android + x86_64-linux-gnu x86_64-linux-musl DEPENDENCIES @@ -106,4 +154,4 @@ RUBY VERSION ruby 3.3.4p94 BUNDLED WITH - 2.4.10 + 2.5.22 From f80ed632d580173f253eceb3810c7ed5bc30c711 Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Thu, 28 Aug 2025 13:27:05 +0000 Subject: [PATCH 3/5] Add note about Java 17 runtime --- _posts/release/2025-04-30-accumulo-4.0.0.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_posts/release/2025-04-30-accumulo-4.0.0.md b/_posts/release/2025-04-30-accumulo-4.0.0.md index fbe3ab3f8..cb9d6eac1 100644 --- a/_posts/release/2025-04-30-accumulo-4.0.0.md +++ b/_posts/release/2025-04-30-accumulo-4.0.0.md @@ -15,7 +15,9 @@ tablets. ## Notable Changes -* The CompactionCoordinator process no longer exists, its functionality was moved into the Manager +* 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 From 8c9ffe8bf719c3ddf63e0ead975ddd94412dd01f Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Tue, 25 Aug 2026 18:40:45 +0000 Subject: [PATCH 4/5] Updated draft 4.0.0 docs --- .gitignore | 2 + _posts/release/2025-04-30-accumulo-4.0.0.md | 66 ----- .../2026-09-01-accumulo-4.0.0-alpha1.md | 245 ++++++++++++++++++ _posts/release/4_0_api_changes.md | 142 ---------- 4 files changed, 247 insertions(+), 208 deletions(-) delete mode 100644 _posts/release/2025-04-30-accumulo-4.0.0.md create mode 100644 _posts/release/2026-09-01-accumulo-4.0.0-alpha1.md delete mode 100644 _posts/release/4_0_api_changes.md 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/2025-04-30-accumulo-4.0.0.md b/_posts/release/2025-04-30-accumulo-4.0.0.md deleted file mode 100644 index cb9d6eac1..000000000 --- a/_posts/release/2025-04-30-accumulo-4.0.0.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -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/2026-09-01-accumulo-4.0.0-alpha1.md b/_posts/release/2026-09-01-accumulo-4.0.0-alpha1.md new file mode 100644 index 000000000..935365d7f --- /dev/null +++ b/_posts/release/2026-09-01-accumulo-4.0.0-alpha1.md @@ -0,0 +1,245 @@ +--- +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. + + +## Breaking API Changes (from 2.1.6) + +### 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.InstanceOperations::getActiveCompactions(java.util.Collection) 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.InstanceOperations::getActiveScans(java.util.Collection) throws org.apache.accumulo.core.client.AccumuloException, org.apache.accumulo.core.client.AccumuloSecurityException| +|Method was added to an interface.|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.|method java.util.Set 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.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.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.|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) 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| +|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| +|Class was removed.|class org.apache.accumulo.core.client.mapred.RangeInputSplit| +|Class was removed.|class org.apache.accumulo.core.client.mapreduce.AbstractInputFormat| +|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| +|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.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.accumulo.core.client.admin.TableOperations::getSplits(java.lang.String) throws org.apache.accumulo.core.client.TableNotFoundException| +|Method was removed.|method java.util.Set 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.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::(org.apache.accumulo.core.client.Instance, java.util.List, java.util.Map>, java.util.Collection, int, java.lang.Throwable)| +|Method was removed.|method void org.apache.accumulo.core.client.NamespaceNotEmptyException::(org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException)| +|Method was removed.|method void org.apache.accumulo.core.client.TableOfflineException::(org.apache.accumulo.core.client.Instance, java.lang.String)| +|Method was removed.|method void org.apache.accumulo.core.data.ConditionalMutation::setReplicationSources(java.util.Set)| +|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)| +|Method was removed.|method void org.apache.accumulo.core.iterators.IteratorEnvironment::registerSideChannel(org.apache.accumulo.core.iterators.SortedKeyValueIterator)| + +### Other + +|Change|Old|New| +|------|---|---| +|Method newly throws checked exceptions: java.lang.ReflectiveOperationException.|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String, java.lang.Class) throws java.lang.Exception|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String, java.lang.Class) throws java.lang.ReflectiveOperationException| +|Method newly throws checked exceptions: java.lang.ReflectiveOperationException.|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId, java.lang.String, java.lang.Class) throws java.lang.Exception|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId, java.lang.String, java.lang.Class) throws java.lang.ReflectiveOperationException| +|Method no longer throws checked exceptions: java.lang.Exception.|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String, java.lang.Class) throws java.lang.Exception|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(java.lang.String, java.lang.Class) throws java.lang.ReflectiveOperationException| +|Method no longer throws checked exceptions: java.lang.Exception.|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId, java.lang.String, java.lang.Class) throws java.lang.Exception|method T org.apache.accumulo.core.client.PluginEnvironment::instantiate(org.apache.accumulo.core.data.TableId, java.lang.String, java.lang.Class) 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, org.apache.accumulo.core.data.RowRange)| +|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.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[])].|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[])].|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[])].|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[])].|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].|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].|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| +|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::(java.lang.String, java.lang.Exception)|method void org.apache.accumulo.core.client.TableDeletedException::(org.apache.accumulo.core.data.TableId)| +|The number of parameters of the method have changed.|method void org.apache.accumulo.core.security.VisibilityParseException::(java.lang.String, byte[], int)|method void org.apache.accumulo.core.security.VisibilityParseException::(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.InputConfigurator::getTabletLocator(java.lang.Class, org.apache.hadoop.conf.Configuration, org.apache.accumulo.core.data.TableId)| +|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| + +## 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 deleted file mode 100644 index 9a169ba8d..000000000 --- a/_posts/release/4_0_api_changes.md +++ /dev/null @@ -1,142 +0,0 @@ -|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| From bc988ad588626fd2759b0f66f6da01f951d249f3 Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Tue, 25 Aug 2026 20:49:38 +0000 Subject: [PATCH 5/5] Added details tag around the API changes --- ...4.0.0-alpha1.md => 2026-08-24-accumulo-4.0.0-alpha1.md} | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) rename _posts/release/{2026-09-01-accumulo-4.0.0-alpha1.md => 2026-08-24-accumulo-4.0.0-alpha1.md} (99%) diff --git a/_posts/release/2026-09-01-accumulo-4.0.0-alpha1.md b/_posts/release/2026-08-24-accumulo-4.0.0-alpha1.md similarity index 99% rename from _posts/release/2026-09-01-accumulo-4.0.0-alpha1.md rename to _posts/release/2026-08-24-accumulo-4.0.0-alpha1.md index 935365d7f..b62473d7e 100644 --- a/_posts/release/2026-09-01-accumulo-4.0.0-alpha1.md +++ b/_posts/release/2026-08-24-accumulo-4.0.0-alpha1.md @@ -93,7 +93,10 @@ blog post. for both user and system FaTE transactions. -## Breaking API Changes (from 2.1.6) +## API Changes (from 2.1.6) + +
+ Click to see API changes ### Additions @@ -221,6 +224,8 @@ blog post. |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.InputConfigurator::getTabletLocator(java.lang.Class, org.apache.hadoop.conf.Configuration, org.apache.accumulo.core.data.TableId)| |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| +
+ ## Upgrading View the [Upgrading Accumulo documentation][upgrade] for guidance as