keith-turner commented on code in PR #3447:
URL: https://github.com/apache/accumulo/pull/3447#discussion_r1218413798


##########
server/base/src/main/java/org/apache/accumulo/server/manager/state/TabletManagementScanner.java:
##########
@@ -46,9 +47,11 @@ public class TabletManagementScanner implements 
ClosableIterator<TabletManagemen
   private final BatchScanner mdScanner;
   private final Iterator<Entry<Key,Value>> iter;
   private final AtomicBoolean closed = new AtomicBoolean(false);
+  private final ConcurrentLinkedQueue<TabletManagement> 
knownTabletModifications;
 
-  TabletManagementScanner(ClientContext context, Range range, CurrentState 
state,
-      String tableName) {
+  // This constructor is called from TabletStateStore implementations
+  public TabletManagementScanner(ClientContext context, Range range, 
CurrentState state,
+      String tableName, ConcurrentLinkedQueue<TabletManagement> 
knownTabletModifications) {

Review Comment:
   I was not thinking of this in terms of priority, but that is really 
interesting (especially for hosting ondemand).  I was thinking of this in terms 
of "I know these 3 tablets need attention, lets not scan the entire metadata 
table to service 3 tablets, but servicing those 3 tablets is not more important 
than servicing any other".  Was thinking when we focus on only processing the 
tablets that need attention that it will speed up the response time for them in 
the case where the metadata table is large.  So I was thinking of this a bit 
differently, but I think both priority and avoiding unneeded scanning of the 
entire metadata table are both good goals.
   
   I think only processing the tablets that need attention w/o scanning the 
entire metadata table could benefit split, merge, can compaction, and ondemand 
hosting.    The benefits for compaction and merge would be w/ future changes to 
elasticity.  I'll look through the usage of EventCoordinator to see what else 
may or may not benefit. I think all operations could benefit from avoiding 
scanning the entire metadata table.  
   
   I think hosting ondemand tablet, user initiated splits, merges and user 
initiated compaction could benefit from prioritizing processing them over 
system initiated splits and compactions. Prioritizing processing of those user 
initiated operations could make things more responsive to a user.
   
   Could we achieve the following goals in the manager?
   
    * Tablets needing attention on behalf of user initiated operations will 
take priority over a metadata scan in TGW if its in progress.  This could make 
user initiated operations more responsive (and may be we don't have to increase 
polling frequency in ITs).
    * When the tablets are known by the manager that need attention, we only 
process those tablets in TGW and do not initiated a scan of the entire metadata 
table.
   
   Something else I am wondering is if achieving these goals is possible if we 
do need multiple managers.



-- 
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