[ https://issues.apache.org/jira/browse/HBASE-24377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17108213#comment-17108213 ]
Anoop Sam John commented on HBASE-24377: ---------------------------------------- I think I got exactly when we will see this issue. Method reclaimMemStoreMemory() Will be called from RSRpcServices every time during a write op (mutate, multi etc). This will check for the memory global barrier and do actions. You can see in this method the flushType will be set and then we add a WAKEUPFLUSH_INSTANCE entry so that the FlushHandler threads get this entry. This will again do watermark check and call flushOneForGlobalPressure but by then the flushType is been set already. But there is another possible thread flow which can also check this barrier. When the FlushHandler wake up time reached and so it poll and see 'fqe' as null, still it check the barrier. Ya by then already the barrier might have reached. (But the other thread did not call reclaimMemStoreMemory and set the state). This time the call to flushOneForGlobalPressure will result in NPE. > MemStoreFlusher throw NullPointerException > ------------------------------------------ > > Key: HBASE-24377 > URL: https://issues.apache.org/jira/browse/HBASE-24377 > Project: HBase > Issue Type: Bug > Reporter: Lijin Bin > Priority: Major > > {code} > 2020-02-26 10:15:33,585 ERROR [MemStoreFlusher.2] > regionserver.MemStoreFlusher: Cache flusher failed for entry null > java.lang.NullPointerException > at > org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushOneForGlobalPressure(MemStoreFlusher.java:158) > at > org.apache.hadoop.hbase.regionserver.MemStoreFlusher.access$700(MemStoreFlusher.java:68) > at > org.apache.hadoop.hbase.regionserver.MemStoreFlusher$FlushHandler.run(MemStoreFlusher.java:346) > at java.lang.Thread.run(Thread.java:745) > {code} > Need to setFlushType first before use it. -- This message was sent by Atlassian Jira (v8.3.4#803005)