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