[ 
https://issues.apache.org/jira/browse/CASSANDRA-5390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis reassigned CASSANDRA-5390:
-----------------------------------------

    Assignee: Marcus Eriksson
    
> Cassandra doesn't respect internode compression settings
> --------------------------------------------------------
>
>                 Key: CASSANDRA-5390
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5390
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.2.3
>         Environment: $ /etc/alternatives/jre_1.6.0/bin/java -version
> java version "1.6.0_23"
> Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
> Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode)
> $ uname -a
> Linux hostname 2.6.32-358.2.1.el6.x86_64 #1 SMP Tue Mar 12 14:18:09 CDT 2013 
> x86_64 x86_64 x86_64 GNU/Linux
> $ cat /etc/redhat-release 
> Scientific Linux release 6.3 (Carbon)
> $ facter | grep ec2
> ...
> ec2_placement => availability_zone=us-east-1d
> ...
> $ rpm -qi cassandra
> cassandra-1.2.3-1.el6.cmp1.noarch
> (custom built rpm from cassandra tarball distribution)
>            Reporter: Ondřej Černoš
>            Assignee: Marcus Eriksson
>            Priority: Critical
>
> I run into strange SSL/snappy errors in my multipledatacenter setup. (More on 
> that in related issue).
> During debugging the issue I switched the internode communication compression 
> off:
> {noformat}
> ~ grep internode_compression /etc/cassandra/cassandra.yaml
> # internode_compression controls whether traffic between nodes is
> internode_compression: none
> {noformat}
> on all nodes in both datacenters. However I still get the very same exception 
> with snappy in the stacktrace and compression error message:
> {noformat}
> 2013-03-27 14:06:03.605+0100 [Thread-146] [DEBUG] 
> IncomingTcpConnection.java(91) 
> org.apache.cassandra.net.IncomingTcpConnection: component=c4 IOException 
> reading from socket; closing
> java.io.IOException: FAILED_TO_UNCOMPRESS(5)
>       at org.xerial.snappy.SnappyNative.throw_error(SnappyNative.java:78)
>       at org.xerial.snappy.SnappyNative.rawUncompress(Native Method)
>       at org.xerial.snappy.Snappy.rawUncompress(Snappy.java:391)
>       at 
> org.apache.cassandra.io.compress.SnappyCompressor.uncompress(SnappyCompressor.java:93)
>       at 
> org.apache.cassandra.streaming.compress.CompressedInputStream.decompress(CompressedInputStream.java:101)
>       at 
> org.apache.cassandra.streaming.compress.CompressedInputStream.read(CompressedInputStream.java:79)
>       at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:320)
>       at 
> org.apache.cassandra.utils.BytesReadTracker.readUnsignedShort(BytesReadTracker.java:140)
>       at 
> org.apache.cassandra.utils.ByteBufferUtil.readShortLength(ByteBufferUtil.java:361)
>       at 
> org.apache.cassandra.utils.ByteBufferUtil.readWithShortLength(ByteBufferUtil.java:371)
>       at 
> org.apache.cassandra.streaming.IncomingStreamReader.streamIn(IncomingStreamReader.java:160)
>       at 
> org.apache.cassandra.streaming.IncomingStreamReader.read(IncomingStreamReader.java:122)
>       at 
> org.apache.cassandra.net.IncomingTcpConnection.stream(IncomingTcpConnection.java:238)
>       at 
> org.apache.cassandra.net.IncomingTcpConnection.handleStream(IncomingTcpConnection.java:178)
>       at 
> org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:78)
> {noformat}
> The exception is raised from this snappy cpp code:
> {code}
> JNIEXPORT jint JNICALL 
> Java_org_xerial_snappy_SnappyNative_rawUncompress__Ljava_lang_Object_2IILjava_lang_Object_2I
> (JNIEnv * env, jobject self, jobject input, jint inputOffset, jint 
> inputLength, jobject output, jint outputOffset)
> {
>         char* in = (char*) env->GetPrimitiveArrayCritical((jarray) input, 0);
>         char* out = (char*) env->GetPrimitiveArrayCritical((jarray) output, 
> 0);
>         if(in == 0 || out == 0) {
>                 // out of memory
>                 throw_exception(env, self, 4);
>                 return 0;
>         }
>         size_t uncompressedLength;
>         snappy::GetUncompressedLength(in + inputOffset, (size_t) inputLength, 
> &uncompressedLength);
>         bool ret = snappy::RawUncompress(in + inputOffset, (size_t) 
> inputLength, out + outputOffset);
>         env->ReleasePrimitiveArrayCritical((jarray) input, in, 0);
>         env->ReleasePrimitiveArrayCritical((jarray) output, out, 0);
>         if(!ret) {
>                 throw_exception(env, self, 5);
>                 return 0;
>         }
>         return (jint) uncompressedLength;
> }
> {code}
> Which looks like the communication was still compressed, or at least 
> Cassandra tried to decompress the stream.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to