That sounds odd because it is checked after each row is added to the memtable. 

What are you seeing logged when the memtable flushes ? It will say how many ops 
and how many (tracked) bytes. 

Cheers

-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 26/02/2012, at 7:48 AM, Thomas Richter wrote:

> Hi,
> 
> I agree, but the problem in our case is that we have rather small
> memtables (5MB) and during hinted handoff there are several dozen or
> even hundreds of MBs inserted without flushing the tables. And in that
> case it makes a difference.
> 
> Best,
> 
> Thomas
> 
> On 02/25/2012 07:06 PM, Jonathan Ellis wrote:
>> Makes sense to me, although I don't see it making a material
>> difference when there are 1000 mutations in a memtable vs 1001.
>> 
>> On Sat, Feb 25, 2012 at 11:23 AM, Thomas Richter <t...@tricnet.de> wrote:
>>> Hi,
>>> 
>>> while hunting down some memory consumption issues in 0.7.10 I realized
>>> that MemtableThroughput condition is tested before writing the new data.
>>> As this causes memtables to grow larger than expected I changed
>>> 
>>> Memtable apply(DecoratedKey key, ColumnFamily columnFamily)
>>>   {
>>>       long start = System.nanoTime();
>>> 
>>>       boolean flushRequested = memtable.isThresholdViolated();
>>>       memtable.put(key, columnFamily);
>>>       ColumnFamily cachedRow = getRawCachedRow(key);
>>>       if (cachedRow != null)
>>>           cachedRow.addAll(columnFamily);
>>>       writeStats.addNano(System.nanoTime() - start);
>>> 
>>>       return flushRequested ? memtable : null;
>>>   }
>>> 
>>> to
>>> 
>>> Memtable apply(DecoratedKey key, ColumnFamily columnFamily)
>>>   {
>>>       long start = System.nanoTime();
>>> 
>>> 
>>>       memtable.put(key, columnFamily);
>>>       ColumnFamily cachedRow = getRawCachedRow(key);
>>>       if (cachedRow != null)
>>>           cachedRow.addAll(columnFamily);
>>>       writeStats.addNano(System.nanoTime() - start);
>>>       boolean flushRequested = memtable.isThresholdViolated();
>>>       return flushRequested ? memtable : null;
>>>   }
>>> 
>>> Are there any objections to this change? So far it works for me.
>>> 
>>> Best,
>>> 
>>> Thomas
>> 
>> 
>> 

Reply via email to