Author: jbellis
Date: Wed Dec 22 23:56:23 2010
New Revision: 1052105
URL: http://svn.apache.org/viewvc?rev=1052105&view=rev
Log:
merge from 0.7
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/.rat-excludes
cassandra/trunk/CHANGES.txt
cassandra/trunk/bin/cassandra
cassandra/trunk/bin/cassandra.bat
cassandra/trunk/build.xml
cassandra/trunk/conf/log4j-server.properties
cassandra/trunk/debian/changelog
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
(props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
(props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
(props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
(props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
(props changed)
cassandra/trunk/redhat/apache-cassandra.spec
cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java
cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/db/ReadResponse.java
cassandra/trunk/src/java/org/apache/cassandra/db/ReadVerbHandler.java
cassandra/trunk/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java
cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
cassandra/trunk/src/java/org/apache/cassandra/io/util/MmappedSegmentedFile.java
cassandra/trunk/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
cassandra/trunk/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxyMBean.java
cassandra/trunk/src/java/org/apache/cassandra/streaming/FileStreamTask.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 22 23:56:23 2010
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6:922689-1051640,1051662
-/cassandra/branches/cassandra-0.7:1026517-1051683
+/cassandra/branches/cassandra-0.7:1026517-1052104
/incubator/cassandra/branches/cassandra-0.3:774578-796573
/incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5:888872-915439
Modified: cassandra/trunk/.rat-excludes
URL:
http://svn.apache.org/viewvc/cassandra/trunk/.rat-excludes?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/.rat-excludes (original)
+++ cassandra/trunk/.rat-excludes Wed Dec 22 23:56:23 2010
@@ -13,7 +13,10 @@ build/**
lib/licenses/*.txt
.settings/**
contrib/pig/example-script.pig
-contrib/redhat/cassandra
**/cassandra.yaml
**/*.db
redhat/apache-cassandra.spec
+redhat/cassandra
+redhat/cassandra.conf
+redhat/cassandra.in.sh
+redhat/default
Modified: cassandra/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Dec 22 23:56:23 2010
@@ -4,6 +4,13 @@
0.7-dev
+ * fix cli crash after backgrounding (CASSANDRA-1875)
+ * count timeouts in storageproxy latencies, and include latency
+ histograms in StorageProxyMBean (CASSANDRA-1893)
+ * check log4j configuration for changes every 10s (CASSANDRA-1525)
+
+
+0.7.0-rc3
* expose getNaturalEndpoints in StorageServiceMBean taking byte[]
key; RMI cannot serialize ByteBuffer (CASSANDRA-1833)
* infer org.apache.cassandra.locator for replication strategy classes
Modified: cassandra/trunk/bin/cassandra
URL:
http://svn.apache.org/viewvc/cassandra/trunk/bin/cassandra?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/bin/cassandra (original)
+++ cassandra/trunk/bin/cassandra Wed Dec 22 23:56:23 2010
@@ -108,7 +108,7 @@ launch_service()
foreground=$2
props=$3
class=$4
- cassandra_parms="-Dlog4j.configuration=log4j-server.properties"
+ cassandra_parms="-Dlog4j.configuration=log4j-server.properties
-Dlog4j.defaultInitOverride=true"
if [ "x$pidpath" != "x" ]; then
cassandra_parms="$cassandra_parms -Dcassandra-pidfile=$pidpath"
Modified: cassandra/trunk/bin/cassandra.bat
URL:
http://svn.apache.org/viewvc/cassandra/trunk/bin/cassandra.bat?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/bin/cassandra.bat (original)
+++ cassandra/trunk/bin/cassandra.bat Wed Dec 22 23:56:23 2010
@@ -37,7 +37,8 @@ set JAVA_OPTS=^
-Dcom.sun.management.jmxremote.port=8080^
-Dcom.sun.management.jmxremote.ssl=false^
-Dcom.sun.management.jmxremote.authenticate=false^
- -Dlog4j.configuration=log4j-server.properties
+ -Dlog4j.configuration=log4j-server.properties^
+ -Dlog4j.defaultInitOverride=true
REM ***** CLASSPATH library setting *****
Modified: cassandra/trunk/build.xml
URL:
http://svn.apache.org/viewvc/cassandra/trunk/build.xml?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/build.xml (original)
+++ cassandra/trunk/build.xml Wed Dec 22 23:56:23 2010
@@ -47,7 +47,7 @@
<property name="test.unit.src" value="${test.dir}/unit"/>
<property name="test.long.src" value="${test.dir}/long"/>
<property name="dist.dir" value="${build.dir}/dist"/>
- <property name="base.version" value="0.7.0-rc2"/>
+ <property name="base.version" value="0.7.0-rc3"/>
<condition property="version" value="${base.version}">
<isset property="release"/>
</condition>
Modified: cassandra/trunk/conf/log4j-server.properties
URL:
http://svn.apache.org/viewvc/cassandra/trunk/conf/log4j-server.properties?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/conf/log4j-server.properties (original)
+++ cassandra/trunk/conf/log4j-server.properties Wed Dec 22 23:56:23 2010
@@ -35,6 +35,7 @@ log4j.appender.R.layout.ConversionPatter
log4j.appender.R.File=/var/log/cassandra/system.log
# Application logging options
-#log4j.logger.com.facebook=DEBUG
-#log4j.logger.com.facebook.infrastructure.gms=DEBUG
-#log4j.logger.com.facebook.infrastructure.db=DEBUG
+#log4j.logger.org.apache.cassandra=DEBUG
+#log4j.logger.org.apache.cassandra.db=DEBUG
+#log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG
+
Modified: cassandra/trunk/debian/changelog
URL:
http://svn.apache.org/viewvc/cassandra/trunk/debian/changelog?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/debian/changelog (original)
+++ cassandra/trunk/debian/changelog Wed Dec 22 23:56:23 2010
@@ -1,3 +1,9 @@
+cassandra (0.7.0~rc3) unstable; urgency=low
+
+ * Release candidate release.
+
+ -- Eric Evans <[email protected]> Tue, 21 Dec 2010 17:36:31 -0600
+
cassandra (0.7.0~rc2) unstable; urgency=low
* Release candidate release.
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 22 23:56:23 2010
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1051640,1051662
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1051683
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1052104
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Cassandra.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 22 23:56:23 2010
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1051640,1051662
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1051683
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1052104
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Column.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 22 23:56:23 2010
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1051640,1051662
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1051683
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1052104
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 22 23:56:23 2010
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1051640,1051662
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1051683
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1052104
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 22 23:56:23 2010
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1051640,1051662
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1051683
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1052104
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:888872-903502
Modified: cassandra/trunk/redhat/apache-cassandra.spec
URL:
http://svn.apache.org/viewvc/cassandra/trunk/redhat/apache-cassandra.spec?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/redhat/apache-cassandra.spec (original)
+++ cassandra/trunk/redhat/apache-cassandra.spec Wed Dec 22 23:56:23 2010
@@ -2,22 +2,27 @@
%global username cassandra
+%define relname %{name}-%{version}-%{release}
+
Name: apache-cassandra
Version: 0.7.0
-Release: 1%{?dist}
+Release: rc3
Summary: Cassandra is a highly scalable, eventually consistent,
distributed, structured key-value store.
Group: Development/Libraries
-License: BSD
+License: Apache Software License
URL: http://cassandra.apache.org/
-Source0:
http://www.ibiblio.org/pub/mirrors/apache/%{username}/%{version}/%{name}-%{version}-src.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Source0:
http://www.ibiblio.org/pub/mirrors/apache/%{username}/%{version}/%{relname}-src.tar.gz
+BuildRoot: %{_tmppath}/%{relname}-root-%(%{__id_u} -n)
BuildRequires: java-devel
BuildRequires: jpackage-utils
BuildRequires: ant
BuildRequires: ant-nodeps
+Conflicts: cassandra
+Obsoletes: cassandra07
+
Requires: java >= 1.6.0
Requires: jna >= 3.2.7
Requires: jpackage-utils
@@ -35,10 +40,10 @@ and the data model from Google's BigTabl
eventually consistent. Like BigTable, Cassandra provides a ColumnFamily-based
data model richer than typical key/value systems.
-For more information see http://incubator.apache.org/cassandra
+For more information see http://cassandra.apache.org/
%prep
-%setup -q -n %{name}-%{version}-src
+%setup -q -n %{relname}-src
%build
ant clean jar -Drelease=true
@@ -66,7 +71,8 @@ rm bin/cassandra.in.sh
mv bin/cassandra %{buildroot}/usr/sbin
rm bin/*.bat
cp -p bin/* %{buildroot}/usr/bin
-cp build/%{name}-%{version}.jar %{buildroot}/usr/share/%{username}/lib
+# Handle the case of interim SNAPHOST builds
+cp build/%{relname}*jar %{buildroot}/usr/share/%{username}/lib
mkdir -p %{buildroot}/var/lib/%{username}/commitlog
mkdir -p %{buildroot}/var/lib/%{username}/data
mkdir -p %{buildroot}/var/lib/%{username}/saved_caches
Modified:
cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java
Wed Dec 22 23:56:23 2010
@@ -28,6 +28,7 @@ import java.util.Properties;
import java.util.Map;
import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.thrift.AuthenticationException;
import org.apache.cassandra.utils.FBUtilities;
@@ -92,12 +93,12 @@ public class SimpleAuthenticator impleme
boolean authenticated = false;
+ InputStream in = null;
try
{
- FileInputStream in = new FileInputStream(pfilename);
+ in = new BufferedInputStream(new FileInputStream(pfilename));
Properties props = new Properties();
props.load(in);
- in.close();
// note we keep the message here and for the wrong password
exactly the same to prevent attackers from guessing what users are valid
if (null == props.getProperty(username)) throw new
AuthenticationException(authenticationErrorMessage(mode, username));
@@ -125,6 +126,10 @@ public class SimpleAuthenticator impleme
{
throw new RuntimeException("Unexpected authentication problem", e);
}
+ finally
+ {
+ FileUtils.closeQuietly(in);
+ }
if (!authenticated) throw new
AuthenticationException(authenticationErrorMessage(mode, username));
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java Wed Dec 22
23:56:23 2010
@@ -325,7 +325,14 @@ public class CliMain
{
prompt = (inCompoundStatement) ? "...\t" : getPrompt(cliClient);
- line = reader.readLine(prompt);
+ try
+ {
+ line = reader.readLine(prompt);
+ }
+ catch (IOException e)
+ {
+ // retry on I/O Exception
+ }
if (line == null)
return;
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed
Dec 22 23:56:23 2010
@@ -267,12 +267,13 @@ public class ColumnFamilyStore implement
Set<DecoratedKey> keys = new TreeSet<DecoratedKey>();
if (path.exists())
{
+ ObjectInputStream in = null;
try
{
long start = System.currentTimeMillis();
logger.info(String.format("reading saved cache %s", path));
- ObjectInputStream in = new ObjectInputStream(new
BufferedInputStream(new FileInputStream(path)));
+ in = new ObjectInputStream(new BufferedInputStream(new
FileInputStream(path)));
while (in.available() > 0)
{
int size = in.readInt();
@@ -280,7 +281,6 @@ public class ColumnFamilyStore implement
in.readFully(bytes);
keys.add(StorageService.getPartitioner().decorateKey(ByteBuffer.wrap(bytes)));
}
- in.close();
if (logger.isDebugEnabled())
logger.debug(String.format("completed reading (%d ms; %d
keys) saved cache %s",
System.currentTimeMillis() -
start, keys.size(), path));
@@ -289,6 +289,10 @@ public class ColumnFamilyStore implement
{
logger.warn(String.format("error reading saved cache %s",
path.getAbsolutePath()), ioe);
}
+ finally
+ {
+ FileUtils.closeQuietly(in);
+ }
}
return keys;
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ReadResponse.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ReadResponse.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ReadResponse.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ReadResponse.java Wed Dec
22 23:56:23 2010
@@ -47,20 +47,21 @@ private static ICompactSerializer<ReadRe
return serializer_;
}
- private Row row_;
- private ByteBuffer digest_ = FBUtilities.EMPTY_BYTE_BUFFER;
- private boolean isDigestQuery_ = false;
+ private final Row row_;
+ private final ByteBuffer digest_;
public ReadResponse(ByteBuffer digest )
{
assert digest != null;
digest_= digest;
+ row_ = null;
}
public ReadResponse(Row row)
{
assert row != null;
row_ = row;
+ digest_ = null;
}
public Row row()
@@ -75,12 +76,7 @@ private static ICompactSerializer<ReadRe
public boolean isDigestQuery()
{
- return isDigestQuery_;
- }
-
- public void setIsDigestQuery(boolean isDigestQuery)
- {
- isDigestQuery_ = isDigestQuery;
+ return digest_ != null;
}
}
@@ -88,31 +84,35 @@ class ReadResponseSerializer implements
{
public void serialize(ReadResponse rm, DataOutputStream dos) throws
IOException
{
- dos.writeInt(rm.digest().remaining());
- dos.write(rm.digest().array(), rm.digest().position() +
rm.digest().arrayOffset(), rm.digest().remaining());
+ dos.writeInt(rm.isDigestQuery() ? rm.digest().remaining() : 0);
+ ByteBuffer buffer = rm.isDigestQuery() ? rm.digest() :
FBUtilities.EMPTY_BYTE_BUFFER;
+ dos.write(buffer.array(), buffer.position() + buffer.arrayOffset(),
buffer.remaining());
dos.writeBoolean(rm.isDigestQuery());
-
- if( !rm.isDigestQuery() && rm.row() != null )
- {
+
+ if (!rm.isDigestQuery())
+ {
Row.serializer().serialize(rm.row(), dos);
- }
- }
+ }
+ }
public ReadResponse deserialize(DataInputStream dis) throws IOException
{
+ byte[] digest = null;
int digestSize = dis.readInt();
- byte[] digest = new byte[digestSize];
- dis.read(digest, 0 , digestSize);
+ if (digestSize > 0)
+ {
+ digest = new byte[digestSize];
+ dis.readFully(digest, 0, digestSize);
+ }
boolean isDigest = dis.readBoolean();
-
+ assert isDigest == digestSize > 0;
+
Row row = null;
if (!isDigest)
{
row = Row.serializer().deserialize(dis);
}
- ReadResponse rmsg = isDigest ? new
ReadResponse(ByteBuffer.wrap(digest)) : new ReadResponse(row);
- rmsg.setIsDigestQuery(isDigest);
- return rmsg;
+ return isDigest ? new ReadResponse(ByteBuffer.wrap(digest)) : new
ReadResponse(row);
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ReadVerbHandler.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ReadVerbHandler.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ReadVerbHandler.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ReadVerbHandler.java Wed
Dec 22 23:56:23 2010
@@ -82,7 +82,6 @@ public class ReadVerbHandler implements
{
readResponse = new ReadResponse(row);
}
- readResponse.setIsDigestQuery(command.isDigestQuery());
/* serialize the ReadResponseMessage. */
readCtx.bufOut_.reset();
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
Wed Dec 22 23:56:23 2010
@@ -39,6 +39,7 @@ import org.apache.cassandra.io.sstable.I
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.util.FileDataInput;
import org.apache.cassandra.io.util.FileMark;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.utils.BloomFilter;
import org.apache.cassandra.utils.FBUtilities;
import org.slf4j.Logger;
@@ -78,14 +79,7 @@ public class SSTableNamesIterator extend
}
finally
{
- try
- {
- file.close();
- }
- catch (IOException ioe)
- {
- logger.warn("error closing " + file.getPath());
- }
+ FileUtils.closeQuietly(file);
}
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
Wed Dec 22 23:56:23 2010
@@ -339,7 +339,7 @@ public class CommitLog
}
finally
{
- reader.close();
+ FileUtils.closeQuietly(reader);
logger.info("Finished reading " + file);
}
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java
Wed Dec 22 23:56:23 2010
@@ -25,8 +25,8 @@ import java.util.Map;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
-import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.io.ICompactSerializer2;
+import org.apache.cassandra.io.util.FileUtils;
public class CommitLogHeader
{
@@ -132,13 +132,12 @@ public class CommitLogHeader
DataInputStream reader = null;
try
{
- reader = new DataInputStream(new FileInputStream(headerFile));
+ reader = new DataInputStream(new BufferedInputStream(new
FileInputStream(headerFile)));
return serializer.deserialize(reader);
}
finally
{
- if (reader != null)
- reader.close();
+ FileUtils.closeQuietly(reader);
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java Wed
Dec 22 23:56:23 2010
@@ -18,10 +18,12 @@
package org.apache.cassandra.gms;
+import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.IOError;
+import java.io.OutputStream;
import java.lang.management.ManagementFactory;
import java.util.*;
import javax.management.MBeanServer;
@@ -31,6 +33,7 @@ import org.apache.commons.lang.StringUti
import java.net.InetAddress;
import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.BoundedStatsDeque;
import org.slf4j.Logger;
@@ -83,17 +86,21 @@ public class FailureDetector implements
*/
public void dumpInterArrivalTimes()
{
+ OutputStream os = null;
try
{
File file = File.createTempFile("failuredetector-", ".dat");
- FileOutputStream fos = new FileOutputStream(file, true);
- fos.write(toString().getBytes());
- fos.close();
+ os = new BufferedOutputStream(new FileOutputStream(file, true));
+ os.write(toString().getBytes());
}
catch (IOException e)
{
throw new IOError(e);
}
+ finally
+ {
+ FileUtils.closeQuietly(os);
+ }
}
public void setPhiConvictThreshold(int phi)
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
Wed Dec 22 23:56:23 2010
@@ -19,6 +19,7 @@
package org.apache.cassandra.io.sstable;
+import java.io.BufferedInputStream;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.File;
@@ -53,6 +54,7 @@ import org.apache.cassandra.dht.Range;
import org.apache.cassandra.io.ICompactSerializer2;
import org.apache.cassandra.io.util.BufferedRandomAccessFile;
import org.apache.cassandra.io.util.FileDataInput;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.io.util.SegmentedFile;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.*;
@@ -174,11 +176,18 @@ public class SSTableReader extends SSTab
File statsFile = new
File(descriptor.filenameFor(SSTable.COMPONENT_STATS));
if (statsFile.exists())
{
- logger.debug("Load statistics for {}", descriptor);
- DataInputStream dis = new DataInputStream(new
FileInputStream(statsFile));
- rowSizes = EstimatedHistogram.serializer.deserialize(dis);
- columnCounts = EstimatedHistogram.serializer.deserialize(dis);
- dis.close();
+ DataInputStream dis = null;
+ try
+ {
+ logger.debug("Load statistics for {}", descriptor);
+ dis = new DataInputStream(new BufferedInputStream(new
FileInputStream(statsFile)));
+ rowSizes = EstimatedHistogram.serializer.deserialize(dis);
+ columnCounts = EstimatedHistogram.serializer.deserialize(dis);
+ }
+ finally
+ {
+ FileUtils.closeQuietly(dis);
+ }
}
else
{
@@ -253,14 +262,15 @@ public class SSTableReader extends SSTab
void loadBloomFilter() throws IOException
{
- DataInputStream stream = new DataInputStream(new
FileInputStream(descriptor.filenameFor(Component.FILTER)));
+ DataInputStream stream = null;
try
{
+ stream = new DataInputStream(new BufferedInputStream(new
FileInputStream(descriptor.filenameFor(Component.FILTER))));
bf = BloomFilter.serializer().deserialize(stream);
}
finally
{
- stream.close();
+ FileUtils.closeQuietly(stream);
}
}
@@ -316,7 +326,7 @@ public class SSTableReader extends SSTab
}
finally
{
- input.close();
+ FileUtils.closeQuietly(input);
}
// finalize the state of the reader
@@ -497,14 +507,7 @@ public class SSTableReader extends SSTab
}
finally
{
- try
- {
- input.close();
- }
- catch (IOException e)
- {
- logger.error("error closing file", e);
- }
+ FileUtils.closeQuietly(input);
}
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
Wed Dec 22 23:56:23 2010
@@ -37,7 +37,9 @@ import org.apache.cassandra.cache.JMXIns
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.utils.Pair;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,19 +77,29 @@ public class SSTableTracker implements I
logger.info("saving " + msgSuffix);
int count = 0;
File tmpFile = File.createTempFile(savedCachePath.getName(), null,
savedCachePath.getParentFile());
- FileOutputStream fout = new FileOutputStream(tmpFile);
- ObjectOutputStream out = new ObjectOutputStream(new
BufferedOutputStream(fout));
- FileDescriptor fd = fout.getFD();
- for (K key : cache.getKeySet())
- {
- ByteBuffer bytes = converter.apply(key);
- out.writeInt(bytes.remaining());
-
out.write(bytes.array(),bytes.position()+bytes.arrayOffset(),bytes.remaining());
- ++count;
- }
- out.flush();
- fd.sync();
- out.close();
+
+ FileOutputStream fout = null;
+ ObjectOutputStream out = null;
+ try
+ {
+ fout = new FileOutputStream(tmpFile);
+ out = new ObjectOutputStream(new BufferedOutputStream(fout));
+ FileDescriptor fd = fout.getFD();
+ for (K key : cache.getKeySet())
+ {
+ ByteBuffer bytes = converter.apply(key);
+ out.writeInt(bytes.remaining());
+
out.write(bytes.array(),bytes.position()+bytes.arrayOffset(),bytes.remaining());
+ ++count;
+ }
+ out.flush();
+ fd.sync();
+ }
+ finally
+ {
+ FileUtils.closeQuietly(out);
+ FileUtils.closeQuietly(fout);
+ }
if (!tmpFile.renameTo(savedCachePath))
throw new IOException("Unable to rename cache to " +
savedCachePath);
if (logger.isDebugEnabled())
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java Wed
Dec 22 23:56:23 2010
@@ -18,14 +18,12 @@
package org.apache.cassandra.io.util;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.RandomAccessFile;
+import java.io.*;
import java.text.DecimalFormat;
import java.util.Comparator;
import java.util.List;
+import org.apache.cassandra.utils.FBUtilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -85,6 +83,19 @@ public class FileUtils
}
}
+ public static void closeQuietly(Closeable c)
+ {
+ try
+ {
+ if (c != null)
+ c.close();
+ }
+ catch (Exception e)
+ {
+ logger_.warn("Failed closing stream", e);
+ }
+ }
+
public static class FileComparator implements Comparator<File>
{
public int compare(File f, File f2)
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/util/MmappedSegmentedFile.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/util/MmappedSegmentedFile.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/io/util/MmappedSegmentedFile.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/io/util/MmappedSegmentedFile.java
Wed Dec 22 23:56:23 2010
@@ -173,14 +173,7 @@ public class MmappedSegmentedFile extend
}
finally
{
- try
- {
- if (raf != null) raf.close();
- }
- catch (IOException e)
- {
- throw new IOError(e);
- }
+ FileUtils.closeQuietly(raf);
}
return segments;
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
Wed Dec 22 23:56:23 2010
@@ -18,22 +18,24 @@
package org.apache.cassandra.locator;
+import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
+import java.io.Reader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.ResourceWatcher;
import org.apache.cassandra.utils.WrappedRunnable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Used to determine if two IP's are in the same datacenter or on the same
rack.
@@ -112,14 +114,20 @@ public class PropertyFileSnitch extends
String rackPropertyFilename =
FBUtilities.resourceToFile(RACK_PROPERTY_FILENAME);
Properties properties = new Properties();
+ Reader reader = null;
try
{
- properties.load(new FileReader(rackPropertyFilename));
+ reader = new BufferedReader(new FileReader(rackPropertyFilename));
+ properties.load(reader);
}
catch (IOException e)
{
throw new ConfigurationException("Unable to read " +
RACK_PROPERTY_FILENAME, e);
}
+ finally
+ {
+ FileUtils.closeQuietly(reader);
+ }
for (Map.Entry<Object, Object> entry : properties.entrySet())
{
Modified:
cassandra/trunk/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
Wed Dec 22 23:56:23 2010
@@ -42,6 +42,7 @@ import org.apache.cassandra.db.migration
import org.apache.cassandra.utils.CLibrary;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Mx4jTool;
+import org.apache.log4j.PropertyConfigurator;
import org.mortbay.thread.ThreadPool;
/**
@@ -53,8 +54,16 @@ import org.mortbay.thread.ThreadPool;
*/
public abstract class AbstractCassandraDaemon implements CassandraDaemon
{
- private static Logger logger = LoggerFactory
- .getLogger(AbstractCassandraDaemon.class);
+
+ //Initialize logging in such a way that it checks for config changes every
10 seconds.
+ static
+ {
+ String config = System.getProperty("log4j.configuration",
"log4j-server.properties");
+
PropertyConfigurator.configureAndWatch(ClassLoader.getSystemResource(config).getFile(),
10000);
+
org.apache.log4j.Logger.getLogger(AbstractCassandraDaemon.class).info("Logging
initialized");
+ }
+
+ private static Logger logger =
LoggerFactory.getLogger(AbstractCassandraDaemon.class);
protected InetAddress listenAddr;
protected int listenPort;
Modified:
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java Wed
Dec 22 23:56:23 2010
@@ -186,7 +186,6 @@ public class StorageProxy implements Sto
{
writeStats.addNano(System.nanoTime() - startTime);
}
-
}
/**
@@ -265,19 +264,23 @@ public class StorageProxy implements Sto
if (StorageService.instance.isBootstrapMode())
throw new UnavailableException();
long startTime = System.nanoTime();
-
List<Row> rows;
- if (consistency_level == ConsistencyLevel.ONE)
+ try
{
- rows = weakRead(commands);
+ if (consistency_level == ConsistencyLevel.ONE)
+ {
+ rows = weakRead(commands);
+ }
+ else
+ {
+ assert consistency_level.getValue() >=
ConsistencyLevel.QUORUM.getValue();
+ rows = strongRead(commands, consistency_level);
+ }
}
- else
+ finally
{
- assert consistency_level.getValue() >=
ConsistencyLevel.QUORUM.getValue();
- rows = strongRead(commands, consistency_level);
+ readStats.addNano(System.nanoTime() - startTime);
}
-
- readStats.addNano(System.nanoTime() - startTime);
return rows;
}
@@ -463,77 +466,82 @@ public class StorageProxy implements Sto
if (logger.isDebugEnabled())
logger.debug(command.toString());
long startTime = System.nanoTime();
-
- List<AbstractBounds> ranges = getRestrictedRanges(command.range);
+ List<Row> rows;
// now scan until we have enough results
- List<Row> rows = new ArrayList<Row>(command.max_keys);
- for (AbstractBounds range : ranges)
+ try
{
- List<InetAddress> liveEndpoints =
StorageService.instance.getLiveNaturalEndpoints(command.keyspace, range.right);
-
- if (consistency_level == ConsistencyLevel.ONE &&
liveEndpoints.contains(FBUtilities.getLocalAddress()))
- {
- if (logger.isDebugEnabled())
- logger.debug("local range slice");
- ColumnFamilyStore cfs =
Table.open(command.keyspace).getColumnFamilyStore(command.column_family);
- try
- {
- rows.addAll(cfs.getRangeSlice(command.super_column,
- range,
- command.max_keys,
-
QueryFilter.getFilter(command.predicate, cfs.getComparator())));
- }
- catch (ExecutionException e)
- {
- throw new RuntimeException(e.getCause());
- }
- catch (InterruptedException e)
- {
- throw new AssertionError(e);
- }
- }
- else
+ rows = new ArrayList<Row>(command.max_keys);
+ List<AbstractBounds> ranges = getRestrictedRanges(command.range);
+ for (AbstractBounds range : ranges)
{
-
DatabaseDescriptor.getEndpointSnitch().sortByProximity(FBUtilities.getLocalAddress(),
liveEndpoints);
- RangeSliceCommand c2 = new RangeSliceCommand(command.keyspace,
command.column_family, command.super_column, command.predicate, range,
command.max_keys);
- Message message = c2.getMessage();
-
- // collect replies and resolve according to consistency level
- RangeSliceResponseResolver resolver = new
RangeSliceResponseResolver(command.keyspace, liveEndpoints);
- AbstractReplicationStrategy rs =
Table.open(command.keyspace).getReplicationStrategy();
- QuorumResponseHandler<List<Row>> handler =
rs.getQuorumResponseHandler(resolver, consistency_level);
- // TODO bail early if live endpoints can't satisfy requested
consistency level
- for (InetAddress endpoint : liveEndpoints)
+ List<InetAddress> liveEndpoints =
StorageService.instance.getLiveNaturalEndpoints(command.keyspace, range.right);
+
+ if (consistency_level == ConsistencyLevel.ONE &&
liveEndpoints.contains(FBUtilities.getLocalAddress()))
{
- MessagingService.instance.sendRR(message, endpoint,
handler);
if (logger.isDebugEnabled())
- logger.debug("reading " + c2 + " from " +
message.getMessageId() + "@" + endpoint);
+ logger.debug("local range slice");
+ ColumnFamilyStore cfs =
Table.open(command.keyspace).getColumnFamilyStore(command.column_family);
+ try
+ {
+ rows.addAll(cfs.getRangeSlice(command.super_column,
+ range,
+ command.max_keys,
+
QueryFilter.getFilter(command.predicate, cfs.getComparator())));
+ }
+ catch (ExecutionException e)
+ {
+ throw new RuntimeException(e.getCause());
+ }
+ catch (InterruptedException e)
+ {
+ throw new AssertionError(e);
+ }
}
- // TODO read repair on remaining replicas?
-
- // if we're done, great, otherwise, move to the next range
- try
+ else
{
- if (logger.isDebugEnabled())
+
DatabaseDescriptor.getEndpointSnitch().sortByProximity(FBUtilities.getLocalAddress(),
liveEndpoints);
+ RangeSliceCommand c2 = new
RangeSliceCommand(command.keyspace, command.column_family,
command.super_column, command.predicate, range, command.max_keys);
+ Message message = c2.getMessage();
+
+ // collect replies and resolve according to consistency
level
+ RangeSliceResponseResolver resolver = new
RangeSliceResponseResolver(command.keyspace, liveEndpoints);
+ AbstractReplicationStrategy rs =
Table.open(command.keyspace).getReplicationStrategy();
+ QuorumResponseHandler<List<Row>> handler =
rs.getQuorumResponseHandler(resolver, consistency_level);
+ // TODO bail early if live endpoints can't satisfy
requested consistency level
+ for (InetAddress endpoint : liveEndpoints)
+ {
+ MessagingService.instance.sendRR(message, endpoint,
handler);
+ if (logger.isDebugEnabled())
+ logger.debug("reading " + c2 + " from " +
message.getMessageId() + "@" + endpoint);
+ }
+ // TODO read repair on remaining replicas?
+
+ // if we're done, great, otherwise, move to the next range
+ try
{
- for (Row row : handler.get())
+ if (logger.isDebugEnabled())
{
- logger.debug("range slices read " + row.key);
+ for (Row row : handler.get())
+ {
+ logger.debug("range slices read " + row.key);
+ }
}
+ rows.addAll(handler.get());
+ }
+ catch (DigestMismatchException e)
+ {
+ throw new AssertionError(e); // no digests in range
slices yet
}
- rows.addAll(handler.get());
- }
- catch (DigestMismatchException e)
- {
- throw new AssertionError(e); // no digests in range slices
yet
}
+
+ if (rows.size() >= command.max_keys)
+ break;
}
-
- if (rows.size() >= command.max_keys)
- break;
}
-
- rangeStats.addNano(System.nanoTime() - startTime);
+ finally
+ {
+ rangeStats.addNano(System.nanoTime() - startTime);
+ }
return rows.size() > command.max_keys ? rows.subList(0,
command.max_keys) : rows;
}
@@ -666,6 +674,16 @@ public class StorageProxy implements Sto
return readStats.getRecentLatencyMicros();
}
+ public long[] getTotalReadLatencyHistogramMicros()
+ {
+ return readStats.getTotalLatencyHistogramMicros();
+ }
+
+ public long[] getRecentReadLatencyHistogramMicros()
+ {
+ return readStats.getRecentLatencyHistogramMicros();
+ }
+
public long getRangeOperations()
{
return rangeStats.getOpCount();
@@ -681,6 +699,16 @@ public class StorageProxy implements Sto
return rangeStats.getRecentLatencyMicros();
}
+ public long[] getTotalRangeLatencyHistogramMicros()
+ {
+ return rangeStats.getTotalLatencyHistogramMicros();
+ }
+
+ public long[] getRecentRangeLatencyHistogramMicros()
+ {
+ return rangeStats.getRecentLatencyHistogramMicros();
+ }
+
public long getWriteOperations()
{
return writeStats.getOpCount();
@@ -696,6 +724,16 @@ public class StorageProxy implements Sto
return writeStats.getRecentLatencyMicros();
}
+ public long[] getTotalWriteLatencyHistogramMicros()
+ {
+ return writeStats.getTotalLatencyHistogramMicros();
+ }
+
+ public long[] getRecentWriteLatencyHistogramMicros()
+ {
+ return writeStats.getRecentLatencyHistogramMicros();
+ }
+
public static List<Row> scan(String keyspace, String column_family,
IndexClause index_clause, SlicePredicate column_predicate, ConsistencyLevel
consistency_level)
throws IOException, TimeoutException, UnavailableException
{
Modified:
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxyMBean.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxyMBean.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxyMBean.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxyMBean.java
Wed Dec 22 23:56:23 2010
@@ -23,14 +23,20 @@ public interface StorageProxyMBean
public long getReadOperations();
public long getTotalReadLatencyMicros();
public double getRecentReadLatencyMicros();
+ public long[] getTotalReadLatencyHistogramMicros();
+ public long[] getRecentReadLatencyHistogramMicros();
public long getRangeOperations();
public long getTotalRangeLatencyMicros();
public double getRecentRangeLatencyMicros();
+ public long[] getTotalRangeLatencyHistogramMicros();
+ public long[] getRecentRangeLatencyHistogramMicros();
public long getWriteOperations();
public long getTotalWriteLatencyMicros();
public double getRecentWriteLatencyMicros();
+ public long[] getTotalWriteLatencyHistogramMicros();
+ public long[] getRecentWriteLatencyHistogramMicros();
public boolean getHintedHandoffEnabled();
public void setHintedHandoffEnabled(boolean b);
Modified:
cassandra/trunk/src/java/org/apache/cassandra/streaming/FileStreamTask.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/FileStreamTask.java?rev=1052105&r1=1052104&r2=1052105&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/FileStreamTask.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/FileStreamTask.java
Wed Dec 22 23:56:23 2010
@@ -25,7 +25,7 @@ import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.SocketChannel;
-import org.apache.cassandra.streaming.StreamHeader;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.utils.FBUtilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,6 +35,7 @@ import org.apache.cassandra.net.Messagin
import org.apache.cassandra.utils.Pair;
import org.apache.cassandra.utils.WrappedRunnable;
+
public class FileStreamTask extends WrappedRunnable
{
private static Logger logger = LoggerFactory.getLogger(
FileStreamTask.class );
@@ -109,14 +110,7 @@ public class FileStreamTask extends Wrap
}
finally
{
- try
- {
- raf.close();
- }
- catch (IOException e)
- {
- throw new AssertionError(e);
- }
+ FileUtils.closeQuietly(raf);
}
}