Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add integration test that ensures that server process does not start against newer version of accumulo. #4268

Open
keith-turner opened this issue Feb 15, 2024 · 3 comments
Assignees
Labels
enhancement This issue describes a new feature, improvement, or optimization.
Milestone

Comments

@keith-turner
Copy link
Contributor

If someone with an Accumulo 2.1 cluster does the following it would be good if the last step failed.

  1. Upgrades Accumulo from 2.1 to 3.1
  2. Accidentally starts a 2.1 accumulo process after the upgrade.

It seems like this code should cause the server process started in step 2 above to fail. Having an integration test for this would be useful given how disruptive older code running against new data and metadata could be. The following is an outline of a possible integration test.

  1. Create a 2.1 mini accumulo cluster
  2. Stop all accumulo processes
  3. In the test code, modify the data version in hdfs to add one to whatever is there
  4. Attempt to start each kinds of accumulo server processes and verify that they exit with an error code.
@keith-turner keith-turner added the enhancement This issue describes a new feature, improvement, or optimization. label Feb 15, 2024
@EdColeman
Copy link
Contributor

Would it be sufficient to have the manager check the expected version? If the manager does not start, then wouldn't everything kind of wait for assignments and never do do anything?

In particular, the GC? I think it would hold (or error) until it could scan the metadata table - which, until the manager is online would remain unenviable?

Elasticity may need additional checks though.

@keith-turner
Copy link
Contributor Author

Would it be sufficient to have the manager check the expected version? If the manager does not start, then wouldn't everything kind of wait for assignments and never do do anything?

I think its best if all server do this check and I think they currently do. There could be a situation where the 3.1 manager is up and running, 3.1 tservers are up and hosting metadata tables, and a 2.1 tserver is started. Do not want that 2.1 tserver to attempt to participate with the running 3.1 servers.

@ArbaazKhan1
Copy link
Contributor

I can try taking a look at this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement This issue describes a new feature, improvement, or optimization.
Projects
None yet
Development

No branches or pull requests

4 participants