Description
There are some potential race condition in the task monitor. So update the functions in task monitor to be synchronized.
The example of the problem caused by the race condition:
ERROR org.apache.hadoop.hbase.regionserver.MemStoreFlusher: Cache flush failed for region
java.lang.IndexOutOfBoundsException: Index: 1745, Size: 1744
at java.util.ArrayList.add(ArrayList.java:367)
at java.util.SubList.add(AbstractList.java:633)
at java.util.SubList.add(AbstractList.java:633)
at java.util.SubList.add(AbstractList.java:633)
at java.util.SubList.add(AbstractList.java:633)
at java.util.SubList.add(AbstractList.java:633)
at java.util.AbstractList.add(AbstractList.java:91)
at org.apache.hadoop.hbase.monitoring.TaskMonitor.createStatus(TaskMonitor.java:74)
at org.apache.hadoop.hbase.regionserver.HRegion.flushcache(HRegion.java:1139)
at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushRegion(MemStoreFlusher.java:260)
at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushRegion(MemStoreFlusher.java:234)
at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.run(MemStoreFlusher.java:146)