You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Joshua McKenzie (JIRA)" <ji...@apache.org> on 2014/06/01 20:39:01 UTC

[jira] [Updated] (CASSANDRA-7330) Infinite loop in StreamReader.read during exception condition while running repair

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

Joshua McKenzie updated CASSANDRA-7330:
---------------------------------------

    Attachment: 7330_v1.txt

Attaching a v1 that checks for -1 on drain and breaks if caught.

Generates the following exception which I'll want to track down - putting this v1 here for reference on CASSANDRA-3569 as it's a dependency for testing.

{code:title=exception}
ERROR 18:32:15 Exception in thread Thread[NonPeriodicTasks:1,5,main]
java.lang.AssertionError: null
        at org.apache.cassandra.io.util.Memory.free(Memory.java:299) ~[main/:na]
        at org.apache.cassandra.utils.obs.OffHeapBitSet.close(OffHeapBitSet.java:143) ~[main/:na]
        at org.apache.cassandra.utils.BloomFilter.close(BloomFilter.java:116) ~[main/:na]
        at org.apache.cassandra.io.sstable.SSTableWriter.abort(SSTableWriter.java:338) ~[main/:na]
        at org.apache.cassandra.io.sstable.SSTableWriter.abort(SSTableWriter.java:326) ~[main/:na]
        at org.apache.cassandra.streaming.StreamReceiveTask$1.run(StreamReceiveTask.java:133) ~[main/:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[na:1.7.0_55]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_55]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) ~[na:1.7.0_55]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) ~[na:1.7.0_55]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_55]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55]
{code}

> Infinite loop in StreamReader.read during exception condition while running repair
> ----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-7330
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7330
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: 2.0.8+
>            Reporter: Joshua McKenzie
>            Assignee: Joshua McKenzie
>            Priority: Minor
>              Labels: Core
>             Fix For: 2.0.9
>
>         Attachments: 7330_v1.txt
>
>
> InputStream.skip is returning -1 during exception conditions which leads the following logic to infinite loop:
> {code:title=loop}
> protected void drain(InputStream dis, long bytesRead) throws IOException
> {
>     long toSkip = totalSize() - bytesRead;
>     toSkip = toSkip - dis.skip(toSkip);
>     while (toSkip > 0)
>         toSkip = toSkip - dis.skip(toSkip);
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)