Skip to content

Conversation

@cshannon
Copy link
Contributor

If a tablet needs to both split and compact it is better to split first and compact after splitting so that the compaction work can be divided up better

This close #5101

If a tablet needs to both split and compact it is better to split first
and compact after splitting so that the compaction work can be divided
up better

This close apache#5101
@cshannon cshannon self-assigned this Nov 24, 2024
@cshannon cshannon added this to the 4.0.0 milestone Nov 24, 2024
@cshannon cshannon merged commit a4b658a into apache:main Nov 24, 2024
@cshannon cshannon deleted the accumulo-5101 branch November 24, 2024 21:21
@dlmarion
Copy link
Contributor

I'm curious if it's possible for a tablet to be in the NEEDS_SPLITTING state, but doesn't split for some reason, and then neither splits or compactions occur.

@cshannon
Copy link
Contributor Author

I'm curious if it's possible for a tablet to be in the NEEDS_SPLITTING state, but doesn't split for some reason, and then neither splits or compactions occur.

I'll let @keith-turner comment too as he would know better but each time TGW runs it should recompute things so if a tablet was marked a needing to be split but then something changed I would think it would remove that marking and it could compact. I'm not sure if there is some other issue that would prevent splitting, maybe if the tablet couldn't be reserved but i'd think that would maybe block compaction too. The only other thing I could think of was if splits were happening so rapidly they blocked compactions but I asked @keith-turner and he didn't think this was a big concern.

@dlmarion
Copy link
Contributor

It looks like the TabletManagementIterator will always return NEEDS_SPLITTING to the TabletGroupWatcher, and the Manager will will only queue up one split task for the Tablet. If something is wrong with Fate, even if there just not enough threads, this task could sit in the queue for a long time and no compactions will run. Also, with the new PR #5104, bulk imports will be paused. The fatePoolWatcher will resize when the MANAGER_FATE_THREADPOOL_SIZE property is changed. I wonder if it should resize also based on the Fate queue size. @keith-turner ?

@keith-turner
Copy link
Contributor

The fatePoolWatcher will resize when the MANAGER_FATE_THREADPOOL_SIZE property is changed. I wonder if it should resize also based on the Fate queue size. @keith-turner ?

We could try to make the the thread pool shink and grow based on demand. However its max size should always be configurable IMO. We can not grow the pool unbounded.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Investigate if preference is given to splits over compactions

3 participants