We found in our cluster about stop region stuck. The region is compacting, and its store files has many TTL expired cells. Close region state marker(HRegion#writestate.writesEnabled) is not checked in compaction, because most cells were skipped.
HBASE-23968 has encountered similar problem, but the solution in it is outer the method
InternalScanner#next(List<Cell> result, ScannerContext scannerContext), which will not return if there are many skipped cells, for current compaction scanner context. As a result, we need to return in time in the next method, and then check the stop marker.