Description
Test name(s)
- ScanServerUpgrade11to12TestIT.testScanRefTableCreation
Describe the failure observed
This test seems to hang a lot, and causes a bunch of internal exceptions, and possibly dead threads inside Accumulo, because ZooPropStore throws an IllegalStateException when the table doesn't exist.
I propose to remove the test.
java.lang.IllegalStateException: Invalid request for TablePropKey{path=/tables/+scanref/config}, the property node does not exist
at org.apache.accumulo.server.conf.store.impl.ZooPropStore.get(ZooPropStore.java:157) ~[classes/:?]
at org.apache.accumulo.server.conf.util.PropSnapshot.updateSnapshot(PropSnapshot.java:104) ~[classes/:?]
at org.apache.accumulo.server.conf.util.PropSnapshot.getVersionedProperties(PropSnapshot.java:69) ~[classes/:?]
at org.apache.accumulo.server.conf.ZooBasedConfiguration.getSnapshot(ZooBasedConfiguration.java:148) ~[classes/:?]
at org.apache.accumulo.server.conf.ZooBasedConfiguration.getProperties(ZooBasedConfiguration.java:129) ~[classes/:?]
at org.apache.accumulo.core.conf.AccumuloConfiguration.get(AccumuloConfiguration.java:113) ~[classes/:?]
at org.apache.accumulo.core.util.ConfigurationImpl.get(ConfigurationImpl.java:72) ~[classes/:?]
at org.apache.accumulo.core.spi.balancer.TableLoadBalancer.getResourceGroupNameForTable(TableLoadBalancer.java:89) ~[classes/:?]
at org.apache.accumulo.core.spi.balancer.TableLoadBalancer.balance(TableLoadBalancer.java:218) ~[classes/:?]
at org.apache.accumulo.manager.Manager$StatusThread.balanceTablets(Manager.java:942) ~[classes/:?]
at org.apache.accumulo.manager.Manager$StatusThread.updateStatus(Manager.java:803) ~[classes/:?]
at org.apache.accumulo.manager.Manager$StatusThread.run(Manager.java:769) ~[classes/:?]
at org.apache.accumulo.core.trace.TraceWrappedRunnable.run(TraceWrappedRunnable.java:52) ~[classes/:?]
at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Testing Environment:
- Version of this project: 4.0.0-SNAPSHOT
- First commit known to fail (or current commit): 77078f3 (probably was failing before this)
- OS: Fedora 42
- Java: temurin-17-jdk
- Maven: 3.9.6
- Other environment details: Fails in Jenkins, locally in Eclipse IDE, and on CLI via a timeout
What have you tried already?
I attempted to identify whether more needed to be done in the test to put the table in a safe to delete state before removing it. However, because it breaks so many assumptions about built-in tables, it seems like it would add too much complexity to accommodate this test.
Additional context
This test is generally a problem because it breaks critical assumptions that built-in tables always exist, and cannot be created or removed after upgrades. This test tries to simulate a pre-upgrade state by manually deleting the table, and re-running the upgrade steps as an integration test. However, that causes a lot of errors because the built-in table must exist. So, this isn't really safe to do in a running system for an integration test. A separate upgrade test process should be used to test upgrade code across versions for anything that can't be tested using a unit test.