Author: jbellis
Date: Fri Mar 11 18:39:13 2011
New Revision: 1080718
URL: http://svn.apache.org/viewvc?rev=1080718&view=rev
Log:
make2ary indexes use parentCF flush thresholds during initial build
patch by jbellis; reviewed by slebresne for CASSANDRA-2294
Modified:
cassandra/branches/cassandra-0.7/CHANGES.txt
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1080718&r1=1080717&r2=1080718&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Fri Mar 11 18:39:13 2011
@@ -24,6 +24,8 @@
* allow zero replicas in a NTS datacenter (CASSANDRA-1924)
* make range queries respect snitch for local replicas (CASSANDRA-2286)
* fix HH delivery when column index is larger than 2GB (CASSANDRA-2297)
+ * make 2ary indexes use parent CF flush thresholds during initial build
+ (CASSANDRA-2294)
0.7.3
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1080718&r1=1080717&r2=1080718&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
Fri Mar 11 18:39:13 2011
@@ -270,10 +270,10 @@ public final class CFMetaData
column_metadata);
}
- public static CFMetaData newIndexMetadata(String table, String parentCf,
ColumnDefinition info, AbstractType columnComparator)
+ public static CFMetaData newIndexMetadata(CFMetaData parent,
ColumnDefinition info, AbstractType columnComparator)
{
- return new CFMetaData(table,
- indexName(parentCf, info),
+ return new CFMetaData(parent.tableName,
+ indexName(parent.cfName, info),
ColumnFamilyType.Standard,
columnComparator,
null,
@@ -281,15 +281,15 @@ public final class CFMetaData
0,
0,
0,
- DEFAULT_GC_GRACE_SECONDS,
+ parent.gcGraceSeconds,
BytesType.instance,
- DEFAULT_MIN_COMPACTION_THRESHOLD,
- DEFAULT_MAX_COMPACTION_THRESHOLD,
- DEFAULT_ROW_CACHE_SAVE_PERIOD_IN_SECONDS,
- DEFAULT_KEY_CACHE_SAVE_PERIOD_IN_SECONDS,
- DEFAULT_MEMTABLE_LIFETIME_IN_MINS,
- DEFAULT_MEMTABLE_THROUGHPUT_IN_MB,
- DEFAULT_MEMTABLE_OPERATIONS_IN_MILLIONS,
+ parent.minCompactionThreshold,
+ parent.maxCompactionThreshold,
+ 0,
+ 0,
+ parent.memtableFlushAfterMins,
+ parent.memtableThroughputInMb,
+ parent.memtableOperationsInMillions,
Collections.<ByteBuffer,
ColumnDefinition>emptyMap());
}
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1080718&r1=1080717&r2=1080718&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Fri Mar 11 18:39:13 2011
@@ -148,15 +148,20 @@ public class ColumnFamilyStore implement
// only update these runtime-modifiable settings if they have not been
modified.
if (!minCompactionThreshold.isModified())
- minCompactionThreshold = new
DefaultInteger(metadata.getMinCompactionThreshold());
+ for (ColumnFamilyStore cfs : concatWithIndexes())
+ cfs.minCompactionThreshold = new
DefaultInteger(metadata.getMinCompactionThreshold());
if (!maxCompactionThreshold.isModified())
- maxCompactionThreshold = new
DefaultInteger(metadata.getMaxCompactionThreshold());
+ for (ColumnFamilyStore cfs : concatWithIndexes())
+ cfs.maxCompactionThreshold = new
DefaultInteger(metadata.getMaxCompactionThreshold());
if (!memtime.isModified())
- memtime = new DefaultInteger(metadata.getMemtableFlushAfterMins());
+ for (ColumnFamilyStore cfs : concatWithIndexes())
+ cfs.memtime = new
DefaultInteger(metadata.getMemtableFlushAfterMins());
if (!memsize.isModified())
- memsize = new DefaultInteger(metadata.getMemtableThroughputInMb());
+ for (ColumnFamilyStore cfs : concatWithIndexes())
+ cfs.memsize = new
DefaultInteger(metadata.getMemtableThroughputInMb());
if (!memops.isModified())
- memops = new
DefaultDouble(metadata.getMemtableOperationsInMillions());
+ for (ColumnFamilyStore cfs : concatWithIndexes())
+ cfs.memops = new
DefaultDouble(metadata.getMemtableOperationsInMillions());
if (!rowCacheSaveInSeconds.isModified())
rowCacheSaveInSeconds = new
DefaultInteger(metadata.getRowCacheSavePeriodInSeconds());
if (!keyCacheSaveInSeconds.isModified())
@@ -313,7 +318,7 @@ public class ColumnFamilyStore implement
AbstractType columnComparator = (rowPartitioner instanceof
OrderPreservingPartitioner || rowPartitioner instanceof ByteOrderedPartitioner)
? BytesType.instance
: new
LocalByPartionerType(StorageService.getPartitioner());
- final CFMetaData indexedCfMetadata =
CFMetaData.newIndexMetadata(table.name, columnFamily, info, columnComparator);
+ final CFMetaData indexedCfMetadata =
CFMetaData.newIndexMetadata(metadata, info, columnComparator);
ColumnFamilyStore indexedCfs =
ColumnFamilyStore.createColumnFamilyStore(table,
indexedCfMetadata.cfName,
new LocalPartitioner(metadata.getColumn_metadata().get(info.name).validator),
@@ -706,7 +711,7 @@ public class ColumnFamilyStore implement
// submit the memtable for any indexed sub-cfses, and our own.
List<ColumnFamilyStore> icc = new
ArrayList<ColumnFamilyStore>(indexedColumns.size());
// don't assume that this.memtable is dirty; forceFlush can bring
us here during index build even if it is not
- for (ColumnFamilyStore cfs :
Iterables.concat(Collections.singleton(this), indexedColumns.values()))
+ for (ColumnFamilyStore cfs : concatWithIndexes())
{
if (!cfs.memtable.isClean())
icc.add(cfs);
@@ -767,7 +772,7 @@ public class ColumnFamilyStore implement
// during index build, 2ary index memtables can be dirty even if
parent is not. if so,
// we want flushLargestMemtables to flush the 2ary index ones too.
boolean clean = true;
- for (ColumnFamilyStore cfs :
Iterables.concat(Collections.singleton(this), getIndexColumnFamilyStores()))
+ for (ColumnFamilyStore cfs : concatWithIndexes())
clean &= cfs.memtable.isClean();
if (clean)
@@ -1852,7 +1857,7 @@ public class ColumnFamilyStore implement
{
// putting markCompacted on the commitlogUpdater thread
ensures it will run
// after any compactions that were in progress when truncate
was called, are finished
- for (ColumnFamilyStore cfs :
Iterables.concat(indexedColumns.values(),
Arrays.asList(ColumnFamilyStore.this)))
+ for (ColumnFamilyStore cfs : concatWithIndexes())
{
List<SSTableReader> truncatedSSTables = new
ArrayList<SSTableReader>();
for (SSTableReader sstable : cfs.getSSTables())
@@ -1956,11 +1961,6 @@ public class ColumnFamilyStore implement
return indexedColumns.get(column);
}
- public Collection<ColumnFamilyStore> getIndexColumnFamilyStores()
- {
- return indexedColumns.values();
- }
-
public ColumnFamily newIndexedColumnFamily(ByteBuffer column)
{
return ColumnFamily.create(indexedColumns.get(column).metadata);
@@ -2192,4 +2192,9 @@ public class ColumnFamilyStore implement
{
return new SSTableWriter(getTempSSTablePath(location), estimatedRows,
metadata, partitioner);
}
+
+ public Iterable<ColumnFamilyStore> concatWithIndexes()
+ {
+ return Iterables.concat(Collections.singleton(this),
indexedColumns.values());
+ }
}
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java?rev=1080718&r1=1080717&r2=1080718&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
Fri Mar 11 18:39:13 2011
@@ -2198,7 +2198,7 @@ public class StorageService implements I
{
long ops = 0;
long throughput = 0;
- for (ColumnFamilyStore subordinate :
Iterables.concat(Collections.singleton(cfs), cfs.getIndexColumnFamilyStores()))
+ for (ColumnFamilyStore subordinate : cfs.concatWithIndexes())
{
ops += subordinate.getMemtableColumnsCount();
throughput = subordinate.getMemtableThroughputInMB();