Author: jbellis
Date: Wed Mar 9 14:32:25 2011
New Revision: 1079815
URL: http://svn.apache.org/viewvc?rev=1079815&view=rev
Log:
revert prematurely-applied patch for #2295
Modified:
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/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=1079815&r1=1079814&r2=1079815&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
Wed Mar 9 14:32:25 2011
@@ -32,7 +32,6 @@ import javax.management.ObjectName;
import com.google.common.collect.Iterables;
import org.apache.commons.collections.IteratorUtils;
-import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -335,6 +334,7 @@ public class ColumnFamilyStore implement
{
public void run()
{
+ logger.info("Creating index {}.{}", table,
indexedCfMetadata.cfName);
try
{
forceBlockingFlush();
@@ -348,6 +348,7 @@ public class ColumnFamilyStore implement
throw new AssertionError(e);
}
buildSecondaryIndexes(getSSTables(),
FBUtilities.singleton(info.name));
+ logger.info("Index {} complete", indexedCfMetadata.cfName);
SystemTable.setIndexBuilt(table.name,
indexedCfMetadata.cfName);
}
};
@@ -356,8 +357,7 @@ public class ColumnFamilyStore implement
public void buildSecondaryIndexes(Collection<SSTableReader> sstables,
SortedSet<ByteBuffer> columns)
{
- logger.info(String.format("Submitting index build of %s for data in
%s",
- metadata.comparator.getString(columns),
StringUtils.join(sstables, ", ")));
+ logger.debug("Submitting index build to compactionmanager");
Table.IndexBuilder builder = table.createIndexBuilder(this, columns,
new ReducingKeyIterator(sstables));
Future future = CompactionManager.instance.submitIndexBuild(this,
builder);
try
@@ -374,7 +374,6 @@ public class ColumnFamilyStore implement
{
throw new RuntimeException(e);
}
- logger.info("Index build of " + metadata.comparator.getString(columns)
+ " complete");
}
// called when dropping or renaming a CF. Performs mbean housekeeping and
invalidates CFS to other operations.
@@ -685,31 +684,26 @@ public class ColumnFamilyStore implement
try
{
if (oldMemtable.isFrozen())
- {
- logger.debug("memtable is already frozen; another thread must
be flushing it");
return null;
- }
boolean isDropped = isIndex()
? DatabaseDescriptor.getCFMetaData(table.name,
getParentColumnfamily()) == null
:
DatabaseDescriptor.getCFMetaData(metadata.cfId) == null;
if (isDropped)
- {
- logger.debug("column family was dropped; no point in
flushing");
- return null;
- }
+ return null; // column family was dropped. no point in
flushing.
assert memtable == oldMemtable;
memtable.freeze();
final CommitLogSegment.CommitLogContext ctx = writeCommitLog ?
CommitLog.instance.getContext() : null;
+ logger.info("switching in a fresh Memtable for " + columnFamily +
" at " + ctx);
// 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()))
+ icc.add(this);
+ for (ColumnFamilyStore indexCfs : indexedColumns.values())
{
- if (!cfs.memtable.isClean())
- icc.add(cfs);
+ if (!indexCfs.memtable.isClean())
+ icc.add(indexCfs);
}
final CountDownLatch latch = new CountDownLatch(icc.size());
for (ColumnFamilyStore cfs : icc)
@@ -717,10 +711,6 @@ public class ColumnFamilyStore implement
submitFlush(cfs.memtable, latch);
cfs.memtable = new Memtable(cfs);
}
- // we marked our memtable as frozen as part of the concurrency
control,
- // so even if there was nothing to flush we need to switch it out
- if (!icc.contains(this))
- memtable = new Memtable(this);
// when all the memtables have been written, including for
indexes, mark the flush in the commitlog header.
// a second executor makes sure the onMemtableFlushes get called
in the right order,
@@ -764,17 +754,8 @@ public class ColumnFamilyStore implement
public Future<?> forceFlush()
{
- // 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()))
- clean &= cfs.memtable.isClean();
-
- if (clean)
- {
- logger.debug("forceFlush requested but everything is clean");
+ if (memtable.isClean())
return null;
- }
return maybeSwitchMemtable(memtable, true);
}
@@ -1956,11 +1937,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);
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=1079815&r1=1079814&r2=1079815&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
Wed Mar 9 14:32:25 2011
@@ -31,7 +31,6 @@ import javax.management.ObjectName;
import com.google.common.base.Charsets;
import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
import org.apache.cassandra.db.commitlog.CommitLog;
@@ -2196,28 +2195,14 @@ public class StorageService implements I
ColumnFamilyStore largestByThroughput = null;
for (ColumnFamilyStore cfs : ColumnFamilyStore.all())
{
- long ops = 0;
- long throughput = 0;
- for (ColumnFamilyStore subordinate :
Iterables.concat(Collections.singleton(cfs), cfs.getIndexColumnFamilyStores()))
- {
- ops += subordinate.getMemtableColumnsCount();
- throughput = subordinate.getMemtableThroughputInMB();
- }
-
- if (ops > 0 && (largestByOps == null || ops >
largestByOps.getMemtableColumnsCount()))
- {
- logger_.debug(ops + " total ops in " + cfs);
+ if (largestByOps == null || cfs.getMemtableColumnsCount() >
largestByOps.getMemtableColumnsCount())
largestByOps = cfs;
- }
- if (throughput > 0 && (largestByThroughput == null || throughput >
largestByThroughput.getMemtableThroughputInMB()))
- {
- logger_.debug(throughput + " total throughput in " + cfs);
+ if (largestByThroughput == null || cfs.getMemtableThroughputInMB()
> largestByThroughput.getMemtableThroughputInMB())
largestByThroughput = cfs;
- }
}
if (largestByOps == null)
{
- logger_.info("Unable to reduce heap usage since there are no dirty
column families");
+ logger_.error("Unable to reduce heap usage since there are no
column families defined");
return;
}