milleruntime commented on code in PR #3028:
URL: https://github.com/apache/accumulo/pull/3028#discussion_r998484584


##########
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java:
##########
@@ -1515,12 +1515,14 @@ public synchronized void close() {
 
       closed = true;
 
-      // wait while internal jobs are running, external compactions are 
committing or the status of
-      // chops is MARKING, but do not wait on external compactions that are 
running
+      // Wait while internal jobs are running or external compactions are 
committing. When
+      // chopStatus is MARKING or selectStatus is SELECTING, there may be 
metadata table writes so
+      // wait on those. Do not wait on external compactions that are running.
       while (runningJobs.stream()
           .anyMatch(job -> !((CompactionExecutorIdImpl) 
job.getExecutor()).isExternalId())
           || !externalCompactionsCommitting.isEmpty()
-          || fileMgr.chopStatus == ChopSelectionStatus.MARKING) {
+          || fileMgr.chopStatus == ChopSelectionStatus.MARKING
+          || fileMgr.selectStatus == FileSelectionStatus.SELECTING) {

Review Comment:
   What would happen if you have external compactions running and an internal 
compaction is SELECTING for the same tablet? It seems like the close would go 
through and if the other conditions in 
https://github.com/apache/accumulo/issues/2667#issuecomment-1282120602 are met, 
we would get the same error.



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