dlmarion commented on issue #3314: URL: https://github.com/apache/accumulo/issues/3314#issuecomment-1514673601
> I hate to say this but "How did this ever work?" I tried to track through this. This code is pretty convoluted. While the tablet is in a suspended state, the TabletGroupWatcher continues to [call](https://github.com/apache/accumulo/blob/2.1/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java#L282) `hostSuspendedTablet`. After the suspension time has passed `hostSuspendedTablet` [adds](https://github.com/apache/accumulo/blob/2.1/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java#L424) the tablet to the `unassigned` map so that it can be assigned. I can't see anywhere in the assignment process where the suspension flag is removed from the tablet metadata. So, I assume that the tablet gets assigned and hosted, and the suspend information still exists. Once hosted, `TabletLocationState.getState()` will return `HOSTED` instead of `SUSPENDED`. The next time the Tablet gets [unloaded](https://github.com/apache/accumulo/blob/2.1/server/tserver/src/main/java/org/apache/accumulo /tserver/UnloadTabletHandler.java#L123) from a TabletServer the code goes down a path of passing `-1` for the `suspensionTimestamp` and ends up deleting the suspension tablet metadata information [here](https://github.com/apache/accumulo/blob/2.1/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java#L127). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
