[ 
https://issues.apache.org/jira/browse/HBASE-17662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15885118#comment-15885118
 ] 

Anoop Sam John commented on HBASE-17662:
----------------------------------------

Sorry for the delay.
{code}
-  public static final long DEEP_OVERHEAD = AbstractMemStore.DEEP_OVERHEAD
-      + 6 * ClassSize.REFERENCE // Store, RegionServicesForStores, 
CompactionPipeline,
-                                // MemStoreCompactor, inMemoryFlushInProgress, 
allowCompaction
-      + Bytes.SIZEOF_LONG // inmemoryFlushSize
+
+  public static final long DEEP_OVERHEAD = ClassSize.align( 
AbstractMemStore.DEEP_OVERHEAD
+      + 4 * ClassSize.REFERENCE     // Store, RegionServicesForStores, 
CompactionPipeline,
+                                    // MemStoreCompactor
+      + Bytes.SIZEOF_LONG           // inmemoryFlushSize
+      + 2 * Bytes.SIZEOF_BOOLEAN    // compositeSnapshot and inWalReplay
       + 2 * ClassSize.ATOMIC_BOOLEAN// inMemoryFlushInProgress and 
allowCompaction
-      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD;
+      + CompactionPipeline.DEEP_OVERHEAD + MemStoreCompactor.DEEP_OVERHEAD);
{code}
Why there is a change from 6 REFERENCEs to 4?   inMemoryFlushInProgress, 
allowCompaction - These are AtomicBoolean fields means they have reference 
overhead.  So 6 is the correct value.  Do we need any change in tests to change 
it back to 6 (existing code)?  Pls check and correct..  


> Disable in-memory flush when replaying from WAL
> -----------------------------------------------
>
>                 Key: HBASE-17662
>                 URL: https://issues.apache.org/jira/browse/HBASE-17662
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Anastasia Braginsky
>            Assignee: Anastasia Braginsky
>         Attachments: HBASE-17662-V02.patch, HBASE-17662-V03.patch, 
> HBASE-17662-V04.patch, HBASE-17662-V05.patch, HBASE-17662-V06.patch
>
>
> When replaying the edits from WAL, the region's updateLock is not taken, 
> because a single threaded action is assumed. However, the thread-safeness of 
> the in-memory flush of CompactingMemStore is based on taking the region's 
> updateLock. 
> The in-memory flush can be skipped in the replay time (anyway everything is 
> flushed to disk just after the replay). Therefore it is acceptable to just 
> skip the in-memory flush action while the updates come as part of replay from 
> WAL.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to