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]

Reply via email to