accumulo icon indicating copy to clipboard operation
accumulo copied to clipboard

Thrift generated classes need to be moved to manager package

Open milleruntime opened this issue 3 years ago • 6 comments

I found a few generated classes in a package that has not been renamed to manager. The are in the package org.apache.accumulo.core.master.thrift. Here are the classes:

  • BulkImportState.java
  • BulkImportStatus.java
  • Compacting.java
  • RecoveryStatus.java
  • TableInfo.java
  • TabletServerStatus.java

The classes seem to all be coming from accumulo/core/src/main/thrift/master.thrift and probably just need to be migrated over to manager.thrift. I am not sure if these should be done in 2.1 or 3.0.

milleruntime avatar Feb 11 '22 12:02 milleruntime

I would suggest 2.1 - there has been a lot of renaming already and it would be nice to have all of those in the rear-view mirror. The major benefit is that I think we have already introduced on-wire changes so this would not be an additional burden.

EdColeman avatar Feb 11 '22 13:02 EdColeman

I agree. My only concern was breaking serialization of these classes. I will do some digging to see if any of the classes are serialized.

milleruntime avatar Feb 11 '22 14:02 milleruntime

These were kept because they were exposed in the TabletBalancer interface. See my comment on #2022 and in the commit log. They can be moved after that deprecated class is removed and we can use its SPI replacement.

ctubbsii avatar Feb 11 '22 16:02 ctubbsii

These were kept because they were exposed in the TabletBalancer interface. See my comment on #2022 and in the commit log. They can be moved after that deprecated class is removed and we can use its SPI replacement.

What in the TabletBalancer is keeping this from going in 2.1? I just opened #2488

milleruntime avatar Feb 11 '22 16:02 milleruntime

These were kept because they were exposed in the TabletBalancer interface. See my comment on #2022 and in the commit log. They can be moved after that deprecated class is removed and we can use its SPI replacement.

What in the TabletBalancer is keeping this from going in 2.1? I opened just #2488

Just saw that and commented there as well. TabletBalancer is the public API (or at least, it is treated as such, because it is a user-pluggable component). It references TabletServerStatus in one of its public methods, which in turn references these other types transitively.

ctubbsii avatar Feb 11 '22 16:02 ctubbsii

In other words, changing this will break users. We have a transition plan in place (the new balancer SPI), but it can't be completed until 3.0 when we can drop the current deprecated TabletBalancer.

ctubbsii avatar Feb 11 '22 16:02 ctubbsii